Merged with develop
--HG-- branch : feature
This commit is contained in:
commit
744acbcd3b
|
@ -62,7 +62,9 @@
|
|||
- [#543] Detail loses details.
|
||||
- [#548] Bug Detail tool. Case when seam allowance is wrong.
|
||||
- Called the main app in console mode doesn't show opening file error in some cases.
|
||||
- [#553] Tape.exe crash. Issue with the Search field.
|
||||
- [#553] Tape.exe crash. Issue with the Search field.
|
||||
- [#569] Tape app. Options that open new file open new instance even if a user doesn't want this.
|
||||
- [#539] Infinite alert loop "Gradation doesn't support inches" when loading standard table.
|
||||
|
||||
# Version 0.4.4 April 12, 2016
|
||||
- Updated measurement templates with all measurements. Added new template Aldrich/Women measurements.
|
||||
|
|
649
src/app/share/collection/Basic_block_women-2016.val
Normal file
649
src/app/share/collection/Basic_block_women-2016.val
Normal file
|
@ -0,0 +1,649 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<pattern readOnly="true">
|
||||
<!--Pattern created with Valentina (http://www.valentina-project.org/).-->
|
||||
<version>0.3.5</version>
|
||||
<unit>cm</unit>
|
||||
<author>Timo Virtaneva</author>
|
||||
<description>Female Basic Block</description>
|
||||
<notes>Differen Dart locations available</notes>
|
||||
<patternName>Female Basic Block</patternName>
|
||||
<patternNumber>F-Basic-Bloack-2016</patternNumber>
|
||||
<company>Stinde Design</company>
|
||||
<customer>Customer</customer>
|
||||
<size>Measured</size>
|
||||
<showDate>true</showDate>
|
||||
<showMeasurements>false</showMeasurements>
|
||||
<measurements/>
|
||||
<increments>
|
||||
<increment name="#Primarymeasuremements" description="" formula="0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0"/>
|
||||
<increment name="#BH" description="Body height
Measure the height from the top of the head to the floor

Valentina: height" formula="168"/>
|
||||
<increment name="#CG" description="Chest girth
Measure the fulles part of the bust

Valentina: bust_circ" formula="92"/>
|
||||
<increment name="#WG" description="Waist girth
Measure the narrowest part of the waist

Valentina: waist_circ" formula="74"/>
|
||||
<increment name="#HG" description="Hip Girth
Measure the fullest part of the hip

Valentina: hip_circ" formula="98"/>
|
||||
<increment name="#SL" description="Sleeve lenght
Measure over the bend elbow from shoulder tip to the wristbone

Valentina: arm_shoulder_tip_to_wrist_bent" formula="60"/>
|
||||
<increment name="#Auxiliarymeasurements" description="" formula="0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0"/>
|
||||
<increment name="#SD" description="Skye depth
Measured from the neck 
Calculated
CG < 116 SD=CG/10+11, other wise CG/10+10,5 

Valentina: height_neck_back - height_armpit" formula="#CG/10+(#CG<116?11:10.5 )"/>
|
||||
<increment name="#BWL" description="Back waist lenght
Measured from the neck
Calculated:
BH/4-0...1

Valentina: height_neck_back - height_waist_side" formula="#BH/4-1"/>
|
||||
<increment name="#HD" description="Hip depth
Measured from the neck
Calculated: SD+BWL
Valentina: height_neck_back - height_hip" formula="#SD+#BWL"/>
|
||||
<increment name="#L" description="Length" formula="106"/>
|
||||
<increment name="#NW" description="Nech width
Calculated: CG/20+2" formula="#CG/20+2"/>
|
||||
<increment name="#BL_I" description="Bust lenght I
Measured from the nape of the neck
Valentina: bustpoint_to_bustpoint_halter/2" formula="34"/>
|
||||
<increment name="#BL_II" description="Bust lenght II
Measured BL_I-NW
Calculated
CG < 96 BL_II=CG/4+6
CG < 116 BL_II=CG/4+5
other wise CG/4+4
" formula="#CG/4+6-(#CG>96?1:0)-(#CG>116?1:0)"/>
|
||||
<increment name="#FWL_I" description="Front waist length I
Measured fron the nape of the neck
Valentina: " formula="52"/>
|
||||
<increment name="#FWL_II" description="Front waist lenght II
Measured FWL_I-NW
Calculated
CG < 90: BWL+4
CG < 100: BWL+4+0,5
CG < 110: BWL+4+0,5+(CG-100)/10
CG < 120: BWL+4+0,5+0,5+(CG-100)/10
CG < 130: BWL+4+0,5+0,5+0,5+(CG-100)/10
CG > 130: BWL+4+0,5+0,5+0,5+0,5+(CG-100)/10

" formula="#BWL+4+(#CG > 90?0.5:0)+(#CG > 100?(#CG-100)/10:0)+(#CG >110?0.5:0)+(#CG >120?0.5:0)+(#CG >130?0.5:0)"/>
|
||||
<increment name="#BW" description="Back width
CG/8+5,5" formula="#CG/8+5.5"/>
|
||||
<increment name="#SW" description="Skye width
CG/8-1,5" formula="#CG/8-1.5"/>
|
||||
<increment name="#CW" description="Chest width
CG/4-4" formula="#CG/4-4"/>
|
||||
<increment name="#EaseValues" description="" formula="0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0"/>
|
||||
<increment name="#SD_ease" description="Fitted w/o sleeve 0...0,5
Fitted with sleeve 1...1,5
Loose fitting with sleeve 2...3" formula="1"/>
|
||||
<increment name="#BW_ease" description="Fitted w/o sleeve 0...0,5
Fitted with sleeve 0,5...1
Loose fitting with sleeve 1,5...2" formula="0.5"/>
|
||||
<increment name="#SW_ease" description="Fitted w/o sleeve 0,5...1
Fitted with sleeve 1,5...2
Loose fitting with sleeve 2,5...3,5" formula="1.5"/>
|
||||
<increment name="#CW_ease" description="Fitted w/o sleeve 1...1,5
Fitted with sleeve 1,5
Loose fitting with sleeve 1,5...2" formula="1.5"/>
|
||||
<increment name="#WG_ease" description="2...4" formula="2"/>
|
||||
<increment name="#HG_ease" description="1,5...2" formula="2"/>
|
||||
<increment name="#DrawingParameters" description="" formula="0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0"/>
|
||||
<increment name="#BackCenterInTake" description="" formula="2"/>
|
||||
<increment name="#SeparationOfPanels" description="" formula="8"/>
|
||||
<increment name="#NeckWidthReduction" description="Reduction of the neck width for large sizes
0,5" formula="0"/>
|
||||
<increment name="#NecklineToShoulder" description="" formula="2"/>
|
||||
<increment name="#BackShoulderDrop" description="" formula="1.5"/>
|
||||
<increment name="#BackShoulderLineExtension" description="Larger sizes 0...1
Medium Sizes 1...1,5
Small Sizes 1,5...2" formula="1.5"/>
|
||||
<increment name="#BackDartLocation" description="" formula="#BW/3+1"/>
|
||||
<increment name="#BackDartHight1" description="14...16" formula="14"/>
|
||||
<increment name="#BackDartHight2" description="12...14" formula="12"/>
|
||||
<increment name="#WaistSideIntake" description="1...2" formula="1"/>
|
||||
<increment name="#ShoulderDartLocation" description="3...5" formula="5"/>
|
||||
<increment name="#Fixes" description="" formula="0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0"/>
|
||||
<increment name="#PrintingFix" description="" formula="0"/>
|
||||
<increment name="#Modifications" description="" formula="0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0"/>
|
||||
<increment name="#ShoulderSeamMove" description="" formula="1"/>
|
||||
</increments>
|
||||
<draw name="Basic block women">
|
||||
<calculation>
|
||||
<point type="single" x="0.79" y="1.06" id="1" name="Neckline" mx="0.220841" my="-0.520282"/>
|
||||
<point type="endLine" typeLine="dotLine" id="2" name="Hemline" basePoint="1" mx="0.132292" lineColor="black" my="0.264583" angle="270" length="#L"/>
|
||||
<point type="alongLine" typeLine="none" id="3" name="ChestLine" firstPoint="1" secondPoint="2" mx="0.132292" lineColor="black" my="0.264583" length="#SD+#SD_ease"/>
|
||||
<point type="alongLine" typeLine="none" id="4" name="Waistline" firstPoint="1" secondPoint="2" mx="0.132292" lineColor="black" my="0.264583" length="#BWL"/>
|
||||
<point type="alongLine" typeLine="none" id="5" name="Hipline" firstPoint="1" secondPoint="2" mx="0.132292" lineColor="black" my="0.264583" length="#HD"/>
|
||||
<point type="normal" typeLine="none" id="6" name="A1" firstPoint="4" secondPoint="1" mx="0.132292" lineColor="black" my="0.264583" angle="0" length="#BackCenterInTake"/>
|
||||
<point type="pointOfIntersection" id="7" name="A2" firstPoint="6" secondPoint="5" mx="0.132292" my="0.264583"/>
|
||||
<point type="pointOfIntersection" id="8" name="A3" firstPoint="6" secondPoint="2" mx="-1.48138" my="-1.25944"/>
|
||||
<point type="lineIntersectAxis" typeLine="none" id="9" name="A4" basePoint="3" p2Line="6" mx="-1.64741" lineColor="black" my="0.199725" angle="180" p1Line="1"/>
|
||||
<point type="normal" typeLine="dotLine" id="10" name="A5" firstPoint="9" secondPoint="3" mx="0.311589" lineColor="black" my="0.264583" angle="90" length="#CW+#CW_ease+#SW+#SW_ease+#BW+#BW_ease+#SeparationOfPanels"/>
|
||||
<point type="alongLine" typeLine="none" id="11" name="A6" firstPoint="9" secondPoint="10" mx="0.132292" lineColor="black" my="0.264583" length="#BW+#BW_ease"/>
|
||||
<point type="alongLine" typeLine="none" id="12" name="A7" firstPoint="10" secondPoint="9" mx="0.132292" lineColor="black" my="0.264583" length="#CW+#CW_ease"/>
|
||||
<point type="alongLine" typeLine="none" id="13" name="A8" firstPoint="12" secondPoint="11" mx="-0.584895" lineColor="black" my="-1.16979" length="(#SW+#SW_ease)/3"/>
|
||||
<point type="alongLine" typeLine="none" id="14" name="A9" firstPoint="11" secondPoint="12" mx="-0.699211" lineColor="black" my="-1.22632" length="(#SW+#SW_ease)-Line_A7_A8"/>
|
||||
<point type="alongLine" typeLine="none" id="15" name="A10" firstPoint="10" secondPoint="12" mx="0.132292" lineColor="black" my="0.264583" length="#CG/10+0.5"/>
|
||||
<point type="pointOfIntersection" id="16" name="A11" firstPoint="14" secondPoint="4" mx="0.132292" my="0.264583"/>
|
||||
<point type="pointOfIntersection" id="17" name="A12" firstPoint="14" secondPoint="5" mx="-0.495247" my="0.264583"/>
|
||||
<point type="pointOfIntersection" id="18" name="A13" firstPoint="13" secondPoint="4" mx="0.132292" my="0.264583"/>
|
||||
<point type="pointOfIntersection" id="19" name="A14" firstPoint="13" secondPoint="5" mx="-0.711816" my="0.35685"/>
|
||||
<point type="pointOfIntersection" id="20" name="A15" firstPoint="15" secondPoint="4" mx="-0.563944" my="0.264583"/>
|
||||
<point type="pointOfIntersection" id="21" name="A16" firstPoint="15" secondPoint="5" mx="-0.738003" my="0.525672"/>
|
||||
<point type="pointOfIntersection" id="22" name="A17" firstPoint="10" secondPoint="4" mx="0.401237" my="0.264583"/>
|
||||
<point type="pointOfIntersection" id="23" name="A18" firstPoint="10" secondPoint="5" mx="0.22194" my="0.174935"/>
|
||||
<point type="pointOfIntersection" id="24" name="A19" firstPoint="10" secondPoint="2" mx="0.311589" my="-1.34909"/>
|
||||
<point type="pointOfIntersection" id="25" name="A20" firstPoint="11" secondPoint="1" mx="-1.48409" my="-1.91759"/>
|
||||
<point type="alongLine" typeLine="none" id="26" name="A21" firstPoint="1" secondPoint="25" mx="-1.22732" lineColor="black" my="0.215744" length="#NW-#NeckWidthReduction"/>
|
||||
<point type="normal" typeLine="none" id="27" name="A22" firstPoint="26" secondPoint="1" mx="0.401237" lineColor="black" my="-0.888637" angle="0" length="#NecklineToShoulder"/>
|
||||
<point type="alongLine" typeLine="none" id="28" name="A23" firstPoint="25" secondPoint="11" mx="0.129168" lineColor="black" my="-0.204534" length="#BackShoulderDrop"/>
|
||||
<point type="alongLine" typeLine="none" id="29" name="A24" firstPoint="28" secondPoint="11" mx="0.187988" lineColor="black" my="0.264583" length="CurrentLength/2"/>
|
||||
<point type="alongLine" typeLine="none" id="30" name="A25" firstPoint="29" secondPoint="11" mx="0.132292" lineColor="black" my="0.264583" length="CurrentLength/2"/>
|
||||
<point type="alongLine" typeLine="none" id="31" name="A26" firstPoint="27" secondPoint="28" mx="-3.43223" lineColor="black" my="-0.0695909" length="CurrentLength+#BackShoulderLineExtension"/>
|
||||
<point type="normal" typeLine="none" id="32" name="A27" firstPoint="29" secondPoint="25" mx="-3.2628" lineColor="black" my="-1.25499" angle="0" length="1"/>
|
||||
<point type="normal" typeLine="none" id="33" name="A28" firstPoint="30" secondPoint="25" mx="-3.36841" lineColor="black" my="-1.11897" angle="0" length="1.3"/>
|
||||
<point type="pointOfIntersection" id="34" name="A29" firstPoint="12" secondPoint="30" mx="0.580534" my="-0.542253"/>
|
||||
<point type="normal" typeLine="dashLine" id="35" name="A30" firstPoint="20" secondPoint="4" mx="-0.509264" lineColor="black" my="-1.9207" angle="0" length="#FWL_II"/>
|
||||
<point type="alongLine" typeLine="none" id="36" name="A31" firstPoint="35" secondPoint="20" mx="0.132292" lineColor="black" my="0.264583" length="#BL_II"/>
|
||||
<point type="normal" typeLine="dotLine" id="37" name="A32" firstPoint="12" secondPoint="3" mx="-2.01927" lineColor="black" my="0.0852861" angle="0" length="Line_A23_A6-2"/>
|
||||
<point type="endLine" typeLine="none" id="38" name="A33" basePoint="12" mx="-0.0471048" lineColor="black" my="-1.08089" angle="AngleLine_A7_A32-((#CG/20)/(Line_A7_A32*2*3.14))*360" length="Line_A7_A32"/>
|
||||
<point type="pointOfIntersectionCircles" c2Radius="Line_A15_A30" crossPoint="1" c1Radius="Line_A22_A26-1" c2Center="20" id="39" name="A34" c1Center="38" mx="-1.30208" my="-1.34909"/>
|
||||
<point type="alongLine" typeLine="none" id="41" name="A35" firstPoint="38" secondPoint="34" mx="0.39338" lineColor="black" my="-0.257594" length="CurrentLength/2"/>
|
||||
<point type="normal" typeLine="none" id="42" name="A36" firstPoint="41" secondPoint="38" mx="-1.86153" lineColor="black" my="-1.49696" angle="0" length="1"/>
|
||||
<point type="pointOfIntersection" id="43" name="A37" firstPoint="10" secondPoint="35" mx="0.132292" my="0.264583"/>
|
||||
<point type="alongLine" typeLine="none" id="44" name="A38" firstPoint="43" secondPoint="35" mx="-0.85439" lineColor="black" my="-1.17059" length="#NW-#NeckWidthReduction"/>
|
||||
<point type="alongLine" typeLine="none" id="45" name="A39" firstPoint="43" secondPoint="10" mx="0.311589" lineColor="black" my="0.174935" length="#NW+1.5"/>
|
||||
<point type="alongLine" typeLine="none" id="46" name="A40" firstPoint="39" secondPoint="38" mx="0.22194" lineColor="black" my="-1.16979" length="Line_A38_A30"/>
|
||||
<line typeLine="dashLine" id="47" firstPoint="36" secondPoint="46" lineColor="black"/>
|
||||
<point type="alongLine" typeLine="none" id="48" name="A41" firstPoint="36" secondPoint="35" mx="-1.28498" lineColor="black" my="-1.76282" length="Line_A31_A40"/>
|
||||
<point type="pointOfIntersection" id="49" name="A42" firstPoint="12" secondPoint="20" mx="0.132292" my="0.264583"/>
|
||||
<line typeLine="dotLine" id="50" firstPoint="22" secondPoint="49" lineColor="black"/>
|
||||
<line typeLine="dotLine" id="51" firstPoint="49" secondPoint="18" lineColor="black"/>
|
||||
<line typeLine="dotLine" id="52" firstPoint="16" secondPoint="6" lineColor="black"/>
|
||||
<point type="alongLine" typeLine="none" id="53" name="A43" firstPoint="20" secondPoint="49" mx="0.39338" lineColor="black" my="-1.12789" length="max(0;((Line_A17_A42-(#WG/4-1))/2))"/>
|
||||
<point type="alongLine" typeLine="none" id="54" name="A44" firstPoint="20" secondPoint="22" mx="-2.13048" lineColor="black" my="-1.21492" length="Line_A15_A43"/>
|
||||
<point type="alongLine" typeLine="none" id="55" name="A45" firstPoint="6" secondPoint="16" mx="0.132292" lineColor="black" my="0.264583" length="#BackDartLocation"/>
|
||||
<point type="pointOfIntersection" id="56" name="A46" firstPoint="11" secondPoint="4" mx="-0.738003" my="0.264583"/>
|
||||
<point type="alongLine" typeLine="none" id="57" name="A47" firstPoint="56" secondPoint="11" mx="-0.650974" lineColor="black" my="-1.56304" length="0.5"/>
|
||||
<point type="normal" typeLine="none" id="58" name="A48" firstPoint="55" secondPoint="4" mx="0.132292" lineColor="black" my="0.264583" angle="0" length="#BackDartHight1"/>
|
||||
<point type="alongLine" typeLine="dashLine" id="59" name="A49" firstPoint="58" secondPoint="55" mx="0.132292" lineColor="black" my="0.264583" length="CurrentLength*2"/>
|
||||
<point type="normal" typeLine="none" id="60" name="A50" firstPoint="57" secondPoint="56" mx="0.132292" lineColor="black" my="0.264583" angle="90" length="#BackDartHight2"/>
|
||||
<point type="alongLine" typeLine="dashLine" id="61" name="A51" firstPoint="60" secondPoint="57" mx="0.132292" lineColor="black" my="0.264583" length="CurrentLength*2"/>
|
||||
<point type="alongLine" typeLine="none" id="62" name="A52" firstPoint="55" secondPoint="6" mx="0.132292" lineColor="black" my="0.264583" length="min(2;(max(0;((Line_A17_A42+Line_A42_A13-2*Line_A15_A43+Line_A11_A1)-(#WG/2+#WG_ease))/2)))"/>
|
||||
<point type="alongLine" typeLine="none" id="63" name="A53" firstPoint="55" secondPoint="16" mx="0.132292" lineColor="black" my="0.264583" length="Line_A45_A52"/>
|
||||
<point type="normal" typeLine="none" id="64" name="A54" firstPoint="57" secondPoint="56" mx="0.48041" lineColor="black" my="-1.21492" angle="0" length="(max(0;((Line_A17_A42+Line_A42_A13-2*Line_A15_A43+Line_A11_A1)-(#WG/2+#WG_ease)-2*Line_A45_A52)/2))"/>
|
||||
<point type="alongLine" typeLine="none" id="65" name="A55" firstPoint="64" secondPoint="57" mx="-2.04345" lineColor="black" my="-1.30195" length="CurrentLength*2"/>
|
||||
<point type="pointOfIntersection" id="66" name="A56" firstPoint="49" secondPoint="5" mx="-0.764192" my="0.533528"/>
|
||||
<line typeLine="dotLine" id="67" firstPoint="23" secondPoint="66" lineColor="black"/>
|
||||
<line typeLine="dotLine" id="68" firstPoint="66" secondPoint="19" lineColor="black"/>
|
||||
<point type="alongLine" typeLine="none" id="69" name="A57" firstPoint="21" secondPoint="66" mx="0.398618" lineColor="black" my="-0.856326" length="max(0;((Line_A18_A56-(#WG/4+1))/2))"/>
|
||||
<point type="alongLine" typeLine="none" id="70" name="A58" firstPoint="21" secondPoint="23" mx="-2.13048" lineColor="black" my="-1.04086" length="Line_A16_A57"/>
|
||||
<line typeLine="dotLine" id="71" firstPoint="17" secondPoint="7" lineColor="black"/>
|
||||
<point type="alongLine" typeLine="none" id="72" name="A59" firstPoint="19" secondPoint="17" mx="0.56744" lineColor="black" my="-0.692742" length="max(0;(#HG/2+#HG_ease-(Line_A18_A56+Line_A56_A14+Line_A12_A2-2*Line_A16_A57))/2)"/>
|
||||
<point type="alongLine" typeLine="none" id="73" name="A60" firstPoint="17" secondPoint="19" mx="-1.95642" lineColor="black" my="-0.344624" length="Line_A14_A59"/>
|
||||
<point type="alongLine" typeLine="none" id="74" name="A61" firstPoint="16" secondPoint="14" mx="-1.86939" lineColor="black" my="-0.605712" length="1"/>
|
||||
<point type="alongLine" typeLine="none" id="75" name="A62" firstPoint="18" secondPoint="13" mx="0.306351" lineColor="black" my="-0.605712" length="1"/>
|
||||
<point type="normal" typeLine="none" id="76" name="A63" firstPoint="74" secondPoint="16" mx="0.488266" lineColor="black" my="-0.692741" angle="0" length="#WaistSideIntake"/>
|
||||
<point type="normal" typeLine="none" id="77" name="A64" firstPoint="75" secondPoint="18" mx="-1.95904" lineColor="black" my="-0.595239" angle="180" length="#WaistSideIntake"/>
|
||||
<point type="alongLine" typeLine="none" id="78" name="A65" firstPoint="27" secondPoint="31" mx="-1.03732" lineColor="black" my="0.43167" length="#ShoulderDartLocation"/>
|
||||
<point type="pointOfIntersection" id="79" name="A66" firstPoint="78" secondPoint="32" mx="0.132292" my="0.264583"/>
|
||||
<point type="normal" typeLine="none" id="80" name="A67" firstPoint="32" secondPoint="79" mx="-3.43584" lineColor="black" my="-2.2418" angle="0" length="1.5/2"/>
|
||||
<point type="alongLine" typeLine="none" id="81" name="A68" firstPoint="80" secondPoint="32" mx="-3.34881" lineColor="black" my="0.00349476" length="CurrentLength*2"/>
|
||||
<line typeLine="hair" id="82" firstPoint="24" secondPoint="45" lineColor="black"/>
|
||||
<spline type="simpleInteractive" point4="44" angle1="4.81733" angle2="268.233" id="83" color="black" length1="5.92843" length2="4.77142" point1="45"/>
|
||||
<line typeLine="hair" id="84" firstPoint="44" secondPoint="48" lineColor="black"/>
|
||||
<line typeLine="hair" id="85" firstPoint="46" secondPoint="38" lineColor="black"/>
|
||||
<spline type="pathInteractive" id="86" color="black">
|
||||
<pathPoint angle1="54.2593" pSpline="38" angle2="234.259" length1="0" length2="2.56313"/>
|
||||
<pathPoint angle1="68.4973" pSpline="42" angle2="248.497" length1="1.53956" length2="3.16154"/>
|
||||
<pathPoint angle1="88.6841" pSpline="34" angle2="268.684" length1="1.4791" length2="1.36407"/>
|
||||
<pathPoint angle1="185.711" pSpline="13" angle2="5.71084" length1="2.51067" length2="0.403221"/>
|
||||
</spline>
|
||||
<spline type="pathInteractive" id="87" color="black">
|
||||
<pathPoint angle1="176.928" pSpline="14" angle2="356.928" length1="0" length2="3.09737"/>
|
||||
<pathPoint angle1="253.51" pSpline="33" angle2="73.5103" length1="1.50216" length2="1.17981"/>
|
||||
<pathPoint angle1="268.374" pSpline="81" angle2="88.374" length1="1.65047" length2="0.789833"/>
|
||||
</spline>
|
||||
<spline type="simpleInteractive" point4="31" angle1="90.2047" angle2="280.151" id="88" color="black" length1="2.61499" length2="2.77418" point1="80"/>
|
||||
<line typeLine="hair" id="89" firstPoint="31" secondPoint="27" lineColor="black"/>
|
||||
<spline type="simpleInteractive" point4="1" angle1="283.343" angle2="179.604" id="90" color="black" length1="1.35069" length2="3.55012" point1="27"/>
|
||||
<line typeLine="hair" id="91" firstPoint="1" secondPoint="6" lineColor="black"/>
|
||||
<line typeLine="hair" id="92" firstPoint="6" secondPoint="7" lineColor="black"/>
|
||||
<line typeLine="hair" id="93" firstPoint="7" secondPoint="8" lineColor="black"/>
|
||||
<point type="pointOfIntersection" id="94" name="A69" firstPoint="72" secondPoint="2" mx="-2.01927" my="-1.25944"/>
|
||||
<point type="pointOfIntersection" id="95" name="A70" firstPoint="73" secondPoint="2" mx="0.311589" my="-1.25944"/>
|
||||
<point type="pointOfIntersection" id="96" name="A71" firstPoint="59" secondPoint="2" mx="0.401237" my="-1.25944"/>
|
||||
<point type="pointOfIntersection" id="97" name="A72" firstPoint="61" secondPoint="2" mx="0.311589" my="-1.16979"/>
|
||||
<point type="pointOfIntersection" id="98" name="A73" firstPoint="70" secondPoint="2" mx="-1.75033" my="-1.25944"/>
|
||||
<point type="pointOfIntersection" id="99" name="A74" firstPoint="69" secondPoint="2" mx="0.311589" my="-1.08015"/>
|
||||
<point type="normal" typeLine="none" id="100" name="A75" firstPoint="61" secondPoint="57" mx="-1.84587" lineColor="black" my="-0.471478" angle="0" length="#PrintingFix"/>
|
||||
<point type="normal" typeLine="none" id="101" name="A76" firstPoint="59" secondPoint="55" mx="-1.89188" lineColor="black" my="-0.471478" angle="0" length="#PrintingFix"/>
|
||||
<point type="normal" typeLine="none" id="102" name="A77" firstPoint="96" secondPoint="59" mx="-1.83997" lineColor="black" my="-1.08014" angle="0" length="#PrintingFix"/>
|
||||
<point type="normal" typeLine="none" id="103" name="A78" firstPoint="97" secondPoint="61" mx="-1.83997" lineColor="black" my="-1.08014" angle="0" length="#PrintingFix"/>
|
||||
<line typeLine="hair" id="104" firstPoint="99" secondPoint="69" lineColor="black"/>
|
||||
<line typeLine="hair" id="105" firstPoint="69" secondPoint="53" lineColor="black"/>
|
||||
<line typeLine="hair" id="106" firstPoint="53" secondPoint="36" lineColor="black"/>
|
||||
<line typeLine="hair" id="107" firstPoint="36" secondPoint="54" lineColor="black"/>
|
||||
<line typeLine="hair" id="108" firstPoint="54" secondPoint="70" lineColor="black"/>
|
||||
<line typeLine="hair" id="109" firstPoint="70" secondPoint="98" lineColor="black"/>
|
||||
<line typeLine="hair" id="110" firstPoint="96" secondPoint="59" lineColor="black"/>
|
||||
<line typeLine="hair" id="111" firstPoint="59" secondPoint="62" lineColor="black"/>
|
||||
<line typeLine="hair" id="112" firstPoint="62" secondPoint="58" lineColor="black"/>
|
||||
<line typeLine="hair" id="113" firstPoint="58" secondPoint="63" lineColor="black"/>
|
||||
<line typeLine="hair" id="114" firstPoint="63" secondPoint="101" lineColor="black"/>
|
||||
<line typeLine="hair" id="115" firstPoint="101" secondPoint="102" lineColor="black"/>
|
||||
<line typeLine="hair" id="116" firstPoint="97" secondPoint="61" lineColor="black"/>
|
||||
<line typeLine="hair" id="117" firstPoint="61" secondPoint="64" lineColor="black"/>
|
||||
<line typeLine="hair" id="118" firstPoint="64" secondPoint="60" lineColor="black"/>
|
||||
<line typeLine="hair" id="119" firstPoint="60" secondPoint="65" lineColor="black"/>
|
||||
<line typeLine="hair" id="120" firstPoint="65" secondPoint="100" lineColor="black"/>
|
||||
<line typeLine="hair" id="121" firstPoint="100" secondPoint="103" lineColor="black"/>
|
||||
<line typeLine="hair" id="122" firstPoint="13" secondPoint="77" lineColor="black"/>
|
||||
<line typeLine="hair" id="123" firstPoint="14" secondPoint="76" lineColor="black"/>
|
||||
<spline type="pathInteractive" id="124" color="black">
|
||||
<pathPoint angle1="90.9771" pSpline="77" angle2="270.977" length1="0" length2="9.68242"/>
|
||||
<pathPoint angle1="90.8098" pSpline="72" angle2="270.81" length1="6.69919" length2="4.97643"/>
|
||||
<pathPoint angle1="91.8167" pSpline="94" angle2="271.817" length1="3.83704" length2="0.722454"/>
|
||||
</spline>
|
||||
<spline type="pathInteractive" id="125" color="black">
|
||||
<pathPoint angle1="91.7529" pSpline="76" angle2="271.753" length1="0" length2="6.72577"/>
|
||||
<pathPoint angle1="90.1909" pSpline="73" angle2="270.191" length1="8.20711" length2="3.78595"/>
|
||||
<pathPoint angle1="90.9461" pSpline="95" angle2="270.946" length1="9.66358" length2="0.825579"/>
|
||||
</spline>
|
||||
<line typeLine="hair" id="126" firstPoint="8" secondPoint="96" lineColor="black"/>
|
||||
<line typeLine="hair" id="127" firstPoint="102" secondPoint="97" lineColor="black"/>
|
||||
<line typeLine="hair" id="128" firstPoint="103" secondPoint="95" lineColor="black"/>
|
||||
<line typeLine="hair" id="129" firstPoint="94" secondPoint="99" lineColor="black"/>
|
||||
<line typeLine="hair" id="130" firstPoint="98" secondPoint="24" lineColor="black"/>
|
||||
<line typeLine="dashLine" id="240" firstPoint="81" secondPoint="79" lineColor="black"/>
|
||||
<line typeLine="dashLine" id="241" firstPoint="80" secondPoint="79" lineColor="black"/>
|
||||
<point type="normal" typeLine="hair" id="243" name="A79" firstPoint="27" secondPoint="31" mx="-1.27241" lineColor="black" my="-2.20066" angle="180" length="#ShoulderSeamMove"/>
|
||||
<point type="normal" typeLine="hair" id="244" name="A80" firstPoint="31" secondPoint="27" mx="-3.33547" lineColor="black" my="-1.41214" angle="0" length="#ShoulderSeamMove"/>
|
||||
<line typeLine="hair" id="245" firstPoint="244" secondPoint="243" lineColor="black"/>
|
||||
<point type="cutSpline" id="246" name="A81" spline="83" mx="-2.02047" my="-0.632401" length="Spl_A39_A38-#ShoulderSeamMove"/>
|
||||
<point type="lineIntersectAxis" typeLine="hair" id="247" name="A82" basePoint="246" p2Line="35" mx="-2.71797" lineColor="black" my="-0.00170317" angle="AngleLine_A38_A41" p1Line="36"/>
|
||||
<point type="alongLine" typeLine="none" id="248" name="A83" firstPoint="36" secondPoint="46" mx="-2.19987" lineColor="black" my="-0.0942106" length="Line_A31_A82"/>
|
||||
<point type="curveIntersectAxis" typeLine="hair" id="249" name="A84" curve="86" basePoint="248" mx="0.132292" lineColor="black" my="0.264583" angle="AngleLine_A40_A33"/>
|
||||
<point type="lineIntersectAxis" typeLine="dashLine" id="253" name="A85" basePoint="36" p2Line="13" mx="0.132292" lineColor="black" my="0.264583" angle="0" p1Line="77"/>
|
||||
<operation type="rotation" suffix="a1" id="254" center="36" angle="AngleLine_A15_A30-AngleLine_A31_A40">
|
||||
<source>
|
||||
<item idObject="248"/>
|
||||
<item idObject="46"/>
|
||||
<item idObject="38"/>
|
||||
<item idObject="249"/>
|
||||
<item idObject="42"/>
|
||||
<item idObject="34"/>
|
||||
<item idObject="13"/>
|
||||
<item idObject="253"/>
|
||||
</source>
|
||||
<destination>
|
||||
<item idObject="255" mx="-0.716276" my="0.970934"/>
|
||||
<item idObject="256" mx="0.716471" my="-0.903504"/>
|
||||
<item idObject="257" mx="0.333304" my="-0.928726"/>
|
||||
<item idObject="258" mx="0.398578" my="-0.30603"/>
|
||||
<item idObject="259" mx="-3.80161" my="-0.964388"/>
|
||||
<item idObject="260" mx="-3.75613" my="-0.504212"/>
|
||||
<item idObject="261" mx="0.290045" my="-1.62628"/>
|
||||
<item idObject="262" mx="0.436619" my="-1.33313"/>
|
||||
</destination>
|
||||
</operation>
|
||||
<line typeLine="hair" id="263" firstPoint="256" secondPoint="257" lineColor="black"/>
|
||||
<line typeLine="hair" id="264" firstPoint="255" secondPoint="258" lineColor="black"/>
|
||||
<spline type="pathInteractive" id="265" color="black">
|
||||
<pathPoint angle1="237.018" pSpline="257" angle2="57.0183" length1="0" length2="0.0817868"/>
|
||||
<pathPoint angle1="75.0444" pSpline="258" angle2="255.044" length1="0" length2="1.7174"/>
|
||||
<pathPoint angle1="84.6657" pSpline="259" angle2="264.666" length1="2.01974" length2="3.15983"/>
|
||||
<pathPoint angle1="108.883" pSpline="260" angle2="288.883" length1="1.7209" length2="2.80344"/>
|
||||
<pathPoint angle1="190.657" pSpline="261" angle2="10.657" length1="2.41743" length2="39.4222"/>
|
||||
</spline>
|
||||
<line typeLine="hair" id="266" firstPoint="261" secondPoint="262" lineColor="black"/>
|
||||
<line typeLine="dashLine" id="267" firstPoint="262" secondPoint="36" lineColor="black"/>
|
||||
<point type="lineIntersectAxis" typeLine="dashLine" id="269" name="A86" basePoint="79" p2Line="243" mx="-3.04236" lineColor="black" my="-2.40881" angle="90" p1Line="244"/>
|
||||
<operation type="rotation" suffix="a2" id="271" center="79" angle="AngleLine_A68_A66-AngleLine_A67_A66+360">
|
||||
<source>
|
||||
<item idObject="80"/>
|
||||
<item idObject="244"/>
|
||||
<item idObject="269"/>
|
||||
</source>
|
||||
<destination>
|
||||
<item idObject="272" mx="-5.32949" my="-1.85193"/>
|
||||
<item idObject="273" mx="-5.28482" my="-1.24505"/>
|
||||
<item idObject="274" mx="-5.38158" my="-1.57337"/>
|
||||
</destination>
|
||||
</operation>
|
||||
<line typeLine="hair" id="275" firstPoint="273" secondPoint="274" lineColor="black"/>
|
||||
<line typeLine="dashLine" id="276" firstPoint="274" secondPoint="79" lineColor="black"/>
|
||||
<line typeLine="hair" id="277" firstPoint="269" secondPoint="243" lineColor="black"/>
|
||||
<spline type="simpleInteractive" point4="273" angle1="93.5988" angle2="298.116" id="278" color="black" length1="4.93464" length2="2.21638" point1="272"/>
|
||||
</calculation>
|
||||
<modeling>
|
||||
<point type="modeling" inUse="false" id="131" idObject="24" mx="0.311589" my="-1.34909"/>
|
||||
<point type="modeling" inUse="false" id="132" idObject="45" mx="0.311589" my="0.174935"/>
|
||||
<spline type="modelingSpline" inUse="false" id="133" idObject="83"/>
|
||||
<point type="modeling" inUse="false" id="134" idObject="44" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="135" idObject="35" mx="0.22194" my="0.44388"/>
|
||||
<point type="modeling" inUse="false" id="136" idObject="36" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="137" idObject="46" mx="0.22194" my="-1.16979"/>
|
||||
<point type="modeling" inUse="false" id="138" idObject="38" mx="0.132292" my="0.264583"/>
|
||||
<spline type="modelingPath" inUse="false" id="139" idObject="86"/>
|
||||
<point type="modeling" inUse="false" id="140" idObject="13" mx="-0.584895" my="-1.16979"/>
|
||||
<point type="modeling" inUse="false" id="141" idObject="77" mx="-1.95904" my="-0.595239"/>
|
||||
<spline type="modelingPath" inUse="false" id="142" idObject="124"/>
|
||||
<point type="modeling" inUse="false" id="143" idObject="94" mx="-2.01927" my="-1.25944"/>
|
||||
<point type="modeling" inUse="false" id="144" idObject="99" mx="0.311589" my="-1.08015"/>
|
||||
<point type="modeling" inUse="false" id="145" idObject="69" mx="0.398618" my="-0.856326"/>
|
||||
<point type="modeling" inUse="false" id="146" idObject="53" mx="0.39338" my="-1.12789"/>
|
||||
<point type="modeling" inUse="false" id="147" idObject="36" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="148" idObject="54" mx="-2.13048" my="-1.21492"/>
|
||||
<point type="modeling" inUse="false" id="149" idObject="70" mx="-2.13048" my="-1.04086"/>
|
||||
<point type="modeling" inUse="false" id="150" idObject="98" mx="-1.75033" my="-1.25944"/>
|
||||
<point type="modeling" inUse="false" id="152" idObject="103" mx="-1.83997" my="-1.08014"/>
|
||||
<point type="modeling" inUse="false" id="153" idObject="95" mx="0.311589" my="-1.25944"/>
|
||||
<spline type="modelingPath" inUse="false" id="154" idObject="125"/>
|
||||
<point type="modeling" inUse="false" id="155" idObject="76" mx="0.488266" my="-0.692741"/>
|
||||
<point type="modeling" inUse="false" id="156" idObject="14" mx="-0.699211" my="-1.22632"/>
|
||||
<spline type="modelingPath" inUse="false" id="157" idObject="87"/>
|
||||
<point type="modeling" inUse="false" id="158" idObject="81" mx="-1.95642" my="0.00349476"/>
|
||||
<point type="modeling" inUse="false" id="159" idObject="79" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="160" idObject="80" mx="-2.04345" my="-1.12789"/>
|
||||
<point type="modeling" inUse="false" id="161" idObject="31" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="162" idObject="27" mx="0.401237" my="-0.72155"/>
|
||||
<spline type="modelingSpline" inUse="false" id="163" idObject="90"/>
|
||||
<point type="modeling" inUse="false" id="164" idObject="1" mx="0.220841" my="-0.520282"/>
|
||||
<point type="modeling" inUse="false" id="165" idObject="6" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="166" idObject="7" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="167" idObject="8" mx="-1.48138" my="-1.25944"/>
|
||||
<point type="modeling" inUse="false" id="168" idObject="96" mx="0.401237" my="-1.25944"/>
|
||||
<point type="modeling" inUse="false" id="169" idObject="59" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="170" idObject="62" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="171" idObject="58" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="172" idObject="63" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="173" idObject="101" mx="-1.89188" my="-0.471478"/>
|
||||
<point type="modeling" inUse="false" id="174" idObject="102" mx="-1.83997" my="-1.08014"/>
|
||||
<point type="modeling" inUse="false" id="175" idObject="97" mx="0.311589" my="-1.16979"/>
|
||||
<point type="modeling" inUse="false" id="176" idObject="61" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="177" idObject="64" mx="0.48041" my="-1.21492"/>
|
||||
<point type="modeling" inUse="false" id="178" idObject="60" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="179" idObject="65" mx="-2.04345" my="-1.30195"/>
|
||||
<point type="modeling" inUse="false" id="180" idObject="100" mx="-1.84587" my="-0.471478"/>
|
||||
<point type="modeling" inUse="false" id="181" idObject="103" mx="-1.83997" my="-1.08014"/>
|
||||
<point type="modeling" inUse="false" id="182" idObject="95" mx="0.311589" my="-1.25944"/>
|
||||
<spline type="modelingPath" inUse="false" id="183" idObject="125"/>
|
||||
<point type="modeling" inUse="false" id="184" idObject="76" mx="0.488266" my="-0.692741"/>
|
||||
<point type="modeling" inUse="false" id="185" idObject="14" mx="-0.699211" my="-1.22632"/>
|
||||
<spline type="modelingPath" inUse="false" id="186" idObject="87"/>
|
||||
<point type="modeling" inUse="false" id="187" idObject="81" mx="-1.95642" my="0.00349476"/>
|
||||
<point type="modeling" inUse="false" id="188" idObject="79" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="189" idObject="80" mx="-2.04345" my="-1.12789"/>
|
||||
<spline type="modelingSpline" inUse="false" id="190" idObject="88"/>
|
||||
<point type="modeling" inUse="false" id="191" idObject="31" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="192" idObject="27" mx="0.401237" my="-0.72155"/>
|
||||
<spline type="modelingSpline" inUse="false" id="193" idObject="90"/>
|
||||
<point type="modeling" inUse="false" id="194" idObject="1" mx="0.220841" my="-0.520282"/>
|
||||
<point type="modeling" inUse="false" id="195" idObject="7" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="196" idObject="8" mx="-1.48138" my="-1.25944"/>
|
||||
<point type="modeling" inUse="false" id="197" idObject="96" mx="0.401237" my="-1.25944"/>
|
||||
<point type="modeling" inUse="false" id="198" idObject="59" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="199" idObject="62" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="200" idObject="63" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="201" idObject="101" mx="-1.89188" my="-0.471478"/>
|
||||
<point type="modeling" inUse="false" id="202" idObject="102" mx="-1.83997" my="-1.08014"/>
|
||||
<point type="modeling" inUse="false" id="203" idObject="97" mx="0.311589" my="-1.16979"/>
|
||||
<point type="modeling" inUse="false" id="204" idObject="61" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="205" idObject="64" mx="0.48041" my="-1.21492"/>
|
||||
<point type="modeling" inUse="false" id="206" idObject="60" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="207" idObject="65" mx="-2.04345" my="-1.30195"/>
|
||||
<point type="modeling" inUse="false" id="208" idObject="100" mx="-1.84587" my="-0.471478"/>
|
||||
<point type="modeling" inUse="true" id="209" idObject="103" mx="-1.83997" my="-1.08014"/>
|
||||
<point type="modeling" inUse="true" id="210" idObject="95" mx="0.311589" my="-1.25944"/>
|
||||
<spline type="modelingPath" inUse="true" id="211" idObject="125"/>
|
||||
<point type="modeling" inUse="true" id="212" idObject="76" mx="0.488266" my="-0.692741"/>
|
||||
<point type="modeling" inUse="true" id="213" idObject="14" mx="-0.699211" my="-1.22632"/>
|
||||
<spline type="modelingPath" inUse="true" id="214" idObject="87"/>
|
||||
<point type="modeling" inUse="true" id="215" idObject="81" mx="-1.95642" my="0.00349476"/>
|
||||
<point type="modeling" inUse="true" id="216" idObject="79" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="217" idObject="80" mx="-2.04345" my="-1.12789"/>
|
||||
<spline type="modelingSpline" inUse="true" id="218" idObject="88"/>
|
||||
<point type="modeling" inUse="true" id="219" idObject="31" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="220" idObject="27" mx="0.401237" my="-0.72155"/>
|
||||
<spline type="modelingSpline" inUse="true" id="221" idObject="90"/>
|
||||
<point type="modeling" inUse="true" id="222" idObject="1" mx="0.220841" my="-0.520282"/>
|
||||
<point type="modeling" inUse="true" id="223" idObject="6" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="224" idObject="7" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="225" idObject="8" mx="-1.48138" my="-1.25944"/>
|
||||
<point type="modeling" inUse="true" id="226" idObject="96" mx="0.401237" my="-1.25944"/>
|
||||
<point type="modeling" inUse="true" id="227" idObject="59" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="228" idObject="62" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="229" idObject="58" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="230" idObject="63" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="231" idObject="101" mx="-1.89188" my="-0.471478"/>
|
||||
<point type="modeling" inUse="true" id="232" idObject="102" mx="-1.83997" my="-1.08014"/>
|
||||
<point type="modeling" inUse="true" id="233" idObject="97" mx="0.311589" my="-1.16979"/>
|
||||
<point type="modeling" inUse="true" id="234" idObject="61" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="235" idObject="64" mx="0.48041" my="-1.21492"/>
|
||||
<point type="modeling" inUse="true" id="236" idObject="60" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="237" idObject="65" mx="-2.04345" my="-1.30195"/>
|
||||
<point type="modeling" inUse="true" id="238" idObject="100" mx="-1.84587" my="-0.471478"/>
|
||||
<point type="modeling" inUse="true" id="280" idObject="24" mx="0.311589" my="-1.34909"/>
|
||||
<point type="modeling" inUse="true" id="281" idObject="45" mx="0.311589" my="0.174935"/>
|
||||
<spline type="modelingSpline" inUse="true" id="282" idObject="83"/>
|
||||
<point type="modeling" inUse="true" id="283" idObject="246" mx="-2.02047" my="-0.632401"/>
|
||||
<point type="modeling" inUse="true" id="284" idObject="255" mx="-0.716276" my="0.970934"/>
|
||||
<point type="modeling" inUse="true" id="285" idObject="258" mx="0.398578" my="-0.30603"/>
|
||||
<spline type="modelingPath" inUse="true" id="286" idObject="265"/>
|
||||
<point type="modeling" inUse="true" id="287" idObject="261" mx="0.290045" my="-1.62628"/>
|
||||
<point type="modeling" inUse="true" id="288" idObject="262" mx="0.436619" my="-1.33313"/>
|
||||
<point type="modeling" inUse="true" id="289" idObject="15" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="290" idObject="253" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="291" idObject="77" mx="-1.95904" my="-0.595239"/>
|
||||
<spline type="modelingPath" inUse="true" id="292" idObject="124"/>
|
||||
<point type="modeling" inUse="true" id="293" idObject="94" mx="-2.01927" my="-1.25944"/>
|
||||
<point type="modeling" inUse="true" id="294" idObject="99" mx="0.311589" my="-1.08015"/>
|
||||
<point type="modeling" inUse="true" id="295" idObject="69" mx="0.398618" my="-0.856326"/>
|
||||
<point type="modeling" inUse="true" id="296" idObject="53" mx="0.39338" my="-1.12789"/>
|
||||
<point type="modeling" inUse="true" id="297" idObject="36" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="298" idObject="54" mx="-2.13048" my="-1.21492"/>
|
||||
<point type="modeling" inUse="true" id="299" idObject="70" mx="-2.13048" my="-1.04086"/>
|
||||
<point type="modeling" inUse="true" id="300" idObject="98" mx="-1.75033" my="-1.25944"/>
|
||||
<point type="modeling" inUse="false" id="302" idObject="24" mx="0.311589" my="-1.34909"/>
|
||||
<point type="modeling" inUse="false" id="303" idObject="45" mx="0.311589" my="0.174935"/>
|
||||
<point type="modeling" inUse="false" id="304" idObject="246" mx="-2.02047" my="-0.632401"/>
|
||||
<point type="modeling" inUse="false" id="305" idObject="247" mx="-2.71797" my="-0.00170317"/>
|
||||
<point type="modeling" inUse="false" id="306" idObject="36" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="307" idObject="248" mx="-2.19987" my="-0.0942106"/>
|
||||
<point type="modeling" inUse="false" id="308" idObject="249" mx="0.132292" my="0.264583"/>
|
||||
<spline type="modelingPath" inUse="false" id="309" idObject="86"/>
|
||||
<point type="modeling" inUse="false" id="310" idObject="13" mx="-0.584895" my="-1.16979"/>
|
||||
<point type="modeling" inUse="false" id="311" idObject="77" mx="-1.95904" my="-0.595239"/>
|
||||
<spline type="modelingPath" inUse="false" id="312" idObject="124"/>
|
||||
<point type="modeling" inUse="false" id="313" idObject="94" mx="-2.01927" my="-1.25944"/>
|
||||
<point type="modeling" inUse="false" id="314" idObject="99" mx="0.311589" my="-1.08015"/>
|
||||
<point type="modeling" inUse="false" id="315" idObject="69" mx="0.398618" my="-0.856326"/>
|
||||
<point type="modeling" inUse="false" id="316" idObject="53" mx="0.39338" my="-1.12789"/>
|
||||
<point type="modeling" inUse="false" id="317" idObject="36" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="false" id="318" idObject="54" mx="-2.13048" my="-1.21492"/>
|
||||
<point type="modeling" inUse="false" id="319" idObject="70" mx="-2.13048" my="-1.04086"/>
|
||||
<point type="modeling" inUse="false" id="320" idObject="98" mx="-1.75033" my="-1.25944"/>
|
||||
<point type="modeling" inUse="true" id="321" idObject="24" mx="0.311589" my="-1.34909"/>
|
||||
<point type="modeling" inUse="true" id="322" idObject="45" mx="0.311589" my="0.174935"/>
|
||||
<spline type="modelingSpline" inUse="true" id="323" idObject="83"/>
|
||||
<point type="modeling" inUse="true" id="324" idObject="246" mx="-2.02047" my="-0.632401"/>
|
||||
<point type="modeling" inUse="true" id="325" idObject="247" mx="-2.71797" my="-0.00170317"/>
|
||||
<point type="modeling" inUse="true" id="326" idObject="36" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="327" idObject="248" mx="-2.19987" my="-0.0942106"/>
|
||||
<point type="modeling" inUse="true" id="328" idObject="249" mx="0.132292" my="0.264583"/>
|
||||
<spline type="modelingPath" inUse="true" id="329" idObject="86"/>
|
||||
<point type="modeling" inUse="true" id="330" idObject="13" mx="-0.584895" my="-1.16979"/>
|
||||
<point type="modeling" inUse="true" id="331" idObject="77" mx="-1.95904" my="-0.595239"/>
|
||||
<spline type="modelingPath" inUse="true" id="332" idObject="124"/>
|
||||
<point type="modeling" inUse="true" id="333" idObject="94" mx="-2.01927" my="-1.25944"/>
|
||||
<point type="modeling" inUse="true" id="334" idObject="99" mx="0.311589" my="-1.08015"/>
|
||||
<point type="modeling" inUse="true" id="335" idObject="69" mx="0.398618" my="-0.856326"/>
|
||||
<point type="modeling" inUse="true" id="336" idObject="53" mx="0.39338" my="-1.12789"/>
|
||||
<point type="modeling" inUse="true" id="337" idObject="36" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="338" idObject="54" mx="-2.13048" my="-1.21492"/>
|
||||
<point type="modeling" inUse="true" id="339" idObject="70" mx="-2.13048" my="-1.04086"/>
|
||||
<point type="modeling" inUse="true" id="340" idObject="98" mx="-1.75033" my="-1.25944"/>
|
||||
<point type="modeling" inUse="true" id="342" idObject="103" mx="-1.83997" my="-1.08014"/>
|
||||
<point type="modeling" inUse="true" id="343" idObject="95" mx="0.311589" my="-1.25944"/>
|
||||
<spline type="modelingPath" inUse="true" id="344" idObject="125"/>
|
||||
<point type="modeling" inUse="true" id="345" idObject="76" mx="0.488266" my="-0.692741"/>
|
||||
<spline type="modelingPath" inUse="true" id="346" idObject="87"/>
|
||||
<point type="modeling" inUse="true" id="347" idObject="81" mx="-3.34881" my="0.00349476"/>
|
||||
<point type="modeling" inUse="true" id="348" idObject="272" mx="-5.32949" my="-1.85193"/>
|
||||
<spline type="modelingSpline" inUse="true" id="349" idObject="278"/>
|
||||
<point type="modeling" inUse="true" id="350" idObject="273" mx="-5.28482" my="-1.24505"/>
|
||||
<point type="modeling" inUse="true" id="351" idObject="274" mx="-5.38158" my="-1.57337"/>
|
||||
<point type="modeling" inUse="true" id="352" idObject="79" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="353" idObject="269" mx="-3.04236" my="-2.40881"/>
|
||||
<point type="modeling" inUse="true" id="354" idObject="243" mx="-1.27241" my="-2.20066"/>
|
||||
<spline type="modelingSpline" inUse="true" id="355" idObject="90"/>
|
||||
<point type="modeling" inUse="true" id="356" idObject="1" mx="0.220841" my="-0.520282"/>
|
||||
<point type="modeling" inUse="true" id="357" idObject="6" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="358" idObject="8" mx="-1.48138" my="-1.25944"/>
|
||||
<point type="modeling" inUse="true" id="359" idObject="96" mx="0.401237" my="-1.25944"/>
|
||||
<point type="modeling" inUse="true" id="360" idObject="59" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="361" idObject="62" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="362" idObject="58" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="363" idObject="63" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="364" idObject="101" mx="-1.89188" my="-0.471478"/>
|
||||
<point type="modeling" inUse="true" id="365" idObject="102" mx="-1.83997" my="-1.08014"/>
|
||||
<point type="modeling" inUse="true" id="366" idObject="97" mx="0.311589" my="-1.16979"/>
|
||||
<point type="modeling" inUse="true" id="367" idObject="61" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="368" idObject="64" mx="0.48041" my="-1.21492"/>
|
||||
<point type="modeling" inUse="true" id="369" idObject="60" mx="0.132292" my="0.264583"/>
|
||||
<point type="modeling" inUse="true" id="370" idObject="65" mx="-2.04345" my="-1.30195"/>
|
||||
<point type="modeling" inUse="true" id="371" idObject="100" mx="-1.84587" my="-0.471478"/>
|
||||
</modeling>
|
||||
<details>
|
||||
<detail closed="1" id="239" name="BackPanel1" supplement="1" mx="3.69534" width="1" my="1.0159">
|
||||
<data rotation="0" letter="B1" fontSize="41" visible="true" mx="-560.184" width="120" my="681.681" height="60">
|
||||
<mcp cutNumber="2" userDef="Fabric" material="0" placement="0"/>
|
||||
</data>
|
||||
<patternInfo rotation="0" fontSize="20" visible="true" mx="-588.357" width="207.371" my="896.24" height="163.257"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="209" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="210" mx="0" my="0"/>
|
||||
<node type="NodeSplinePath" reverse="1" nodeType="Contour" idObject="211" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="212" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="213" mx="0" my="0"/>
|
||||
<node type="NodeSplinePath" reverse="0" nodeType="Contour" idObject="214" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="215" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="216" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="217" mx="0" my="0"/>
|
||||
<node type="NodeSpline" reverse="0" nodeType="Contour" idObject="218" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="219" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="220" mx="0" my="0"/>
|
||||
<node type="NodeSpline" reverse="0" nodeType="Contour" idObject="221" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="222" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="223" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="224" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="225" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="226" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="227" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="228" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="229" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="230" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="231" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="232" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="233" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="234" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="235" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="236" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="237" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="238" mx="0" my="0"/>
|
||||
</detail>
|
||||
<detail closed="1" id="301" name="FrontPanel2" supplement="1" mx="78.898" width="1" my="0.221624">
|
||||
<data rotation="0" letter="A2" fontSize="26" visible="true" mx="-1924.9" width="187.011" my="351.806" height="127.011">
|
||||
<mcp cutNumber="2" userDef="Fabric" material="0" placement="0"/>
|
||||
</data>
|
||||
<patternInfo rotation="0" fontSize="17" visible="true" mx="-1924.89" width="245.645" my="577.967" height="143.763"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="280" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="281" mx="0" my="0"/>
|
||||
<node type="NodeSpline" reverse="0" nodeType="Contour" idObject="282" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="283" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="284" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="285" mx="0" my="0"/>
|
||||
<node type="NodeSplinePath" reverse="0" nodeType="Contour" idObject="286" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="287" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="288" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="289" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="290" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="291" mx="0" my="0"/>
|
||||
<node type="NodeSplinePath" reverse="0" nodeType="Contour" idObject="292" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="293" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="294" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="295" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="296" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="297" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="298" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="299" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="300" mx="0" my="0"/>
|
||||
</detail>
|
||||
<detail closed="1" id="341" name="FrontPanel1" supplement="1" mx="0" width="1" my="0.221624">
|
||||
<data rotation="0" letter="A1" fontSize="12" visible="true" mx="-1623.36" width="120" my="896.265" height="60">
|
||||
<mcp cutNumber="2" userDef="Fabric" material="0" placement="0"/>
|
||||
</data>
|
||||
<patternInfo rotation="0" fontSize="12" visible="true" mx="-1623.35" width="120" my="1298.33" height="60"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="321" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="322" mx="0" my="0"/>
|
||||
<node type="NodeSpline" reverse="0" nodeType="Contour" idObject="323" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="324" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="325" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="326" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="327" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="328" mx="0" my="0"/>
|
||||
<node type="NodeSplinePath" reverse="0" nodeType="Contour" idObject="329" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="330" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="331" mx="0" my="0"/>
|
||||
<node type="NodeSplinePath" reverse="0" nodeType="Contour" idObject="332" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="333" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="334" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="335" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="336" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="337" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="338" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="339" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="340" mx="0" my="0"/>
|
||||
</detail>
|
||||
<detail closed="1" id="372" name="BackPanel2" supplement="1" mx="85.7683" width="1" my="0">
|
||||
<data rotation="0" letter="B2" fontSize="41" visible="true" mx="-508.459" width="120" my="636.601" height="60">
|
||||
<mcp cutNumber="2" userDef="Fabric" material="0" placement="0"/>
|
||||
</data>
|
||||
<patternInfo rotation="0" fontSize="12" visible="true" mx="-519.332" width="120" my="871.138" height="60"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="342" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="343" mx="0" my="0"/>
|
||||
<node type="NodeSplinePath" reverse="1" nodeType="Contour" idObject="344" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="345" mx="0" my="0"/>
|
||||
<node type="NodeSplinePath" reverse="0" nodeType="Contour" idObject="346" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="347" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="348" mx="0" my="0"/>
|
||||
<node type="NodeSpline" reverse="0" nodeType="Contour" idObject="349" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="350" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="351" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="352" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="353" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="354" mx="0" my="0"/>
|
||||
<node type="NodeSpline" reverse="0" nodeType="Contour" idObject="355" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="356" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="357" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="358" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="359" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="360" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="361" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="362" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="363" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="364" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="365" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="366" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="367" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="368" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="369" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="370" mx="0" my="0"/>
|
||||
<node type="NodePoint" nodeType="Contour" idObject="371" mx="0" my="0"/>
|
||||
</detail>
|
||||
</details>
|
||||
<groups>
|
||||
<group id="252" name="FrontDart1" visible="true">
|
||||
<item tool="13" object="13"/>
|
||||
<item tool="34" object="34"/>
|
||||
<item tool="38" object="38"/>
|
||||
<item tool="41" object="41"/>
|
||||
<item tool="42" object="42"/>
|
||||
<item tool="46" object="46"/>
|
||||
<item tool="47" object="47"/>
|
||||
<item tool="85" object="85"/>
|
||||
<item tool="86" object="86"/>
|
||||
<item tool="248" object="248"/>
|
||||
<item tool="249" object="249"/>
|
||||
</group>
|
||||
<group id="268" name="FrontDart2" visible="false">
|
||||
<item tool="254" object="255"/>
|
||||
<item tool="254" object="256"/>
|
||||
<item tool="254" object="257"/>
|
||||
<item tool="254" object="258"/>
|
||||
<item tool="254" object="259"/>
|
||||
<item tool="254" object="260"/>
|
||||
<item tool="254" object="261"/>
|
||||
<item tool="254" object="262"/>
|
||||
<item tool="263" object="263"/>
|
||||
<item tool="264" object="264"/>
|
||||
<item tool="265" object="265"/>
|
||||
<item tool="266" object="266"/>
|
||||
<item tool="267" object="267"/>
|
||||
</group>
|
||||
<group id="270" name="BackDart1" visible="true">
|
||||
<item tool="25" object="25"/>
|
||||
<item tool="28" object="28"/>
|
||||
<item tool="31" object="31"/>
|
||||
<item tool="32" object="32"/>
|
||||
<item tool="78" object="78"/>
|
||||
<item tool="80" object="80"/>
|
||||
<item tool="88" object="88"/>
|
||||
<item tool="89" object="89"/>
|
||||
<item tool="241" object="241"/>
|
||||
<item tool="244" object="244"/>
|
||||
<item tool="245" object="245"/>
|
||||
</group>
|
||||
<group id="279" name="BackDart2" visible="false">
|
||||
<item tool="271" object="272"/>
|
||||
<item tool="271" object="273"/>
|
||||
<item tool="271" object="274"/>
|
||||
<item tool="275" object="275"/>
|
||||
<item tool="276" object="276"/>
|
||||
<item tool="277" object="277"/>
|
||||
<item tool="278" object="278"/>
|
||||
</group>
|
||||
</groups>
|
||||
</draw>
|
||||
</pattern>
|
1725
src/app/share/collection/Gent_Jacket_with_tummy.val
Normal file
1725
src/app/share/collection/Gent_Jacket_with_tummy.val
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -108,6 +108,12 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con
|
|||
{
|
||||
type = QtDebugMsg;
|
||||
}
|
||||
|
||||
// See issue #568
|
||||
if (msg.contains(QStringLiteral("Error receiving trust for a CA certificate")))
|
||||
{
|
||||
type = QtDebugMsg;
|
||||
}
|
||||
#endif
|
||||
|
||||
// this is another one that doesn't make sense as just a debug message. pretty serious
|
||||
|
|
|
@ -384,79 +384,60 @@ void TMainWindow::FileNew()
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void TMainWindow::OpenIndividual()
|
||||
{
|
||||
if (m == nullptr)
|
||||
{
|
||||
const QString filter = tr("Individual measurements (*.vit);;Standard measurements (*.vst);;All files (*.*)");
|
||||
//Use standard path to individual measurements
|
||||
const QString pathTo = qApp->TapeSettings()->GetPathIndividualMeasurements();
|
||||
Open(pathTo, filter);
|
||||
}
|
||||
else
|
||||
{
|
||||
qApp->NewMainWindow();
|
||||
qApp->MainWindow()->OpenIndividual();
|
||||
}
|
||||
const QString filter = tr("Individual measurements") + QLatin1String(" (*.vit);;") + tr("Standard measurements") +
|
||||
QLatin1String(" (*.vst);;") + tr("All files") + QLatin1String(" (*.*)");
|
||||
//Use standard path to individual measurements
|
||||
const QString pathTo = qApp->TapeSettings()->GetPathIndividualMeasurements();
|
||||
|
||||
Open(pathTo, filter);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void TMainWindow::OpenStandard()
|
||||
{
|
||||
if (m == nullptr)
|
||||
{
|
||||
const QString filter = tr("Standard measurements (*.vst);;Individual measurements (*.vit);;All files (*.*)");
|
||||
//Use standard path to standard measurements
|
||||
const QString pathTo = qApp->TapeSettings()->GetPathStandardMeasurements();
|
||||
Open(pathTo, filter);
|
||||
}
|
||||
else
|
||||
{
|
||||
qApp->NewMainWindow();
|
||||
qApp->MainWindow()->OpenStandard();
|
||||
}
|
||||
const QString filter = tr("Standard measurements") + QLatin1String(" (*.vst);;") + tr("Individual measurements") +
|
||||
QLatin1String(" (*.vit);;") + tr("All files") + QLatin1String(" (*.*)");
|
||||
//Use standard path to standard measurements
|
||||
const QString pathTo = qApp->TapeSettings()->GetPathStandardMeasurements();
|
||||
|
||||
Open(pathTo, filter);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void TMainWindow::OpenTemplate()
|
||||
{
|
||||
if (m == nullptr)
|
||||
{
|
||||
const QString filter = tr("Measurements (*.vst *.vit);;All files (*.*)");
|
||||
//Use standard path to template files
|
||||
const QString pathTo = qApp->TapeSettings()->GetPathTemplate();
|
||||
Open(pathTo, filter);
|
||||
const QString filter = tr("Measurements") + QLatin1String(" (*.vst *.vit);;") + tr("All files") +
|
||||
QLatin1String(" (*.*)");
|
||||
//Use standard path to template files
|
||||
const QString pathTo = qApp->TapeSettings()->GetPathTemplate();
|
||||
|
||||
if (m != nullptr)
|
||||
{// The file was opened.
|
||||
SetCurrentFile(""); // Force user to to save new file
|
||||
lock.reset();// remove lock from template
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
qApp->NewMainWindow();
|
||||
qApp->MainWindow()->OpenTemplate();
|
||||
Open(pathTo, filter);
|
||||
|
||||
if (m != nullptr)
|
||||
{// The file was opened.
|
||||
SetCurrentFile(""); // Force user to to save new file
|
||||
lock.reset();// remove lock from template
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void TMainWindow::CreateFromExisting()
|
||||
{
|
||||
if (m == nullptr)
|
||||
{
|
||||
const QString filter = tr("Individual measurements (*.vit)");
|
||||
//Use standard path to standard measurements
|
||||
const QString pathTo = qApp->TapeSettings()->GetPathIndividualMeasurements();
|
||||
const QString mPath = QFileDialog::getOpenFileName(this, tr("Select file"), pathTo, filter);
|
||||
const QString filter = tr("Individual measurements") + QLatin1String(" (*.vit)");
|
||||
//Use standard path to standard measurements
|
||||
const QString pathTo = qApp->TapeSettings()->GetPathIndividualMeasurements();
|
||||
const QString mPath = QFileDialog::getOpenFileName(this, tr("Select file"), pathTo, filter);
|
||||
|
||||
if (not mPath.isEmpty())
|
||||
if (not mPath.isEmpty())
|
||||
{
|
||||
if (m == nullptr)
|
||||
{
|
||||
LoadFromExistingFile(mPath);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
qApp->NewMainWindow();
|
||||
qApp->MainWindow()->CreateFromExisting();
|
||||
else
|
||||
{
|
||||
qApp->NewMainWindow()->CreateFromExisting();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2522,13 +2503,16 @@ void TMainWindow::Open(const QString &pathTo, const QString &filter)
|
|||
{
|
||||
const QString mPath = QFileDialog::getOpenFileName(this, tr("Open file"), pathTo, filter);
|
||||
|
||||
if (mPath.isEmpty())
|
||||
if (not mPath.isEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadFile(mPath);
|
||||
if (m == nullptr)
|
||||
{
|
||||
LoadFile(mPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
qApp->NewMainWindow()->LoadFile(mPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -103,6 +103,12 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con
|
|||
{
|
||||
type = QtDebugMsg;
|
||||
}
|
||||
|
||||
// See issue #568
|
||||
if (msg.contains(QStringLiteral("Error receiving trust for a CA certificate")))
|
||||
{
|
||||
type = QtDebugMsg;
|
||||
}
|
||||
#endif
|
||||
|
||||
// this is another one that doesn't make sense as just a debug message. pretty serious
|
||||
|
|
|
@ -84,6 +84,7 @@ DialogIncrements::DialogIncrements(VContainer *data, VPattern *doc, QWidget *par
|
|||
FillLengthsLines();
|
||||
FillLengthLinesAngles();
|
||||
FillLengthsCurves();
|
||||
FillCurvesCLengths();
|
||||
FillRadiusesArcs();
|
||||
FillAnglesCurves();
|
||||
|
||||
|
@ -232,6 +233,12 @@ void DialogIncrements::FillLengthsCurves()
|
|||
FillTable(data->DataLengthCurves(), ui->tableWidgetSplines);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogIncrements::FillCurvesCLengths()
|
||||
{
|
||||
FillTable(data->DataCurvesCLength(), ui->tableWidgetCLength);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogIncrements::FillRadiusesArcs()
|
||||
{
|
||||
|
@ -254,6 +261,7 @@ void DialogIncrements::ShowUnits()
|
|||
|
||||
ShowHeaderUnits(ui->tableWidgetLines, 1, unit);// lengths
|
||||
ShowHeaderUnits(ui->tableWidgetSplines, 1, unit);// lengths
|
||||
ShowHeaderUnits(ui->tableWidgetCLength, 1, unit);// lengths
|
||||
ShowHeaderUnits(ui->tableWidgetLinesAngles, 1, degreeSymbol);// angle
|
||||
ShowHeaderUnits(ui->tableWidgetRadiusesArcs, 1, unit);// radius
|
||||
ShowHeaderUnits(ui->tableWidgetAnglesCurves, 1, degreeSymbol);// angle
|
||||
|
@ -445,6 +453,7 @@ void DialogIncrements::FullUpdateFromFile()
|
|||
FillLengthsLines();
|
||||
FillLengthLinesAngles();
|
||||
FillLengthsCurves();
|
||||
FillCurvesCLengths();
|
||||
FillRadiusesArcs();
|
||||
FillAnglesCurves();
|
||||
|
||||
|
|
|
@ -98,6 +98,7 @@ private:
|
|||
void FillLengthsLines();
|
||||
void FillLengthLinesAngles();
|
||||
void FillLengthsCurves();
|
||||
void FillCurvesCLengths();
|
||||
void FillRadiusesArcs();
|
||||
void FillAnglesCurves();
|
||||
|
||||
|
|
|
@ -273,8 +273,7 @@
|
|||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="list-add">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
<normaloff>.</normaloff>.</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -288,8 +287,7 @@
|
|||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="list-remove">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
<normaloff>.</normaloff>.</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -572,6 +570,45 @@
|
|||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_5">
|
||||
<attribute name="title">
|
||||
<string>Curves control point lengths</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<widget class="QTableWidget" name="tableWidgetCLength">
|
||||
<property name="editTriggers">
|
||||
<set>QAbstractItemView::NoEditTriggers</set>
|
||||
</property>
|
||||
<property name="alternatingRowColors">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<attribute name="horizontalHeaderCascadingSectionResizes">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<attribute name="horizontalHeaderDefaultSectionSize">
|
||||
<number>137</number>
|
||||
</attribute>
|
||||
<attribute name="horizontalHeaderStretchLastSection">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<attribute name="verticalHeaderVisible">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Curve</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Length</string>
|
||||
</property>
|
||||
</column>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_6">
|
||||
<attribute name="title">
|
||||
<string>Angles curves</string>
|
||||
|
|
|
@ -179,7 +179,7 @@ MainWindow::MainWindow(QWidget *parent)
|
|||
{
|
||||
mChangesAsked = true;
|
||||
const auto answer = QMessageBox::question(this, tr("Measurements"),
|
||||
tr("Measurements was changed. Do you want to sync measurements now?"),
|
||||
tr("Measurements were changed. Do you want to sync measurements now?"),
|
||||
QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes);
|
||||
if (answer == QMessageBox::Yes)
|
||||
{
|
||||
|
@ -271,8 +271,8 @@ void MainWindow::AddPP(const QString &PPName)
|
|||
comboBoxDraws->blockSignals(false);
|
||||
|
||||
// Show best for new PP
|
||||
ui->view->fitInView(doc->ActiveDrawBoundingRect(), Qt::KeepAspectRatio);
|
||||
VMainGraphicsView::NewSceneRect(ui->view->scene(), ui->view);
|
||||
ui->view->fitInView(doc->ActiveDrawBoundingRect(), Qt::KeepAspectRatio);
|
||||
ui->view->NewFactor(ui->view->transform().m11());
|
||||
|
||||
ui->actionNewDraw->setEnabled(true);
|
||||
|
@ -446,6 +446,12 @@ bool MainWindow::LoadMeasurements(const QString &path)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (qApp->patternUnit() == Unit::Inch && m->Type() == MeasurementsType::Standard)
|
||||
{
|
||||
qWarning()<<tr("Gradation doesn't support inches");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (m->Type() == MeasurementsType::Standard)
|
||||
{
|
||||
m->SetDataSize();
|
||||
|
@ -1495,7 +1501,7 @@ void MainWindow::SyncMeasurements()
|
|||
{
|
||||
watcher->addPath(path);
|
||||
}
|
||||
const QString msg = tr("Measurements was synced");
|
||||
const QString msg = tr("Measurements have been synced");
|
||||
qCDebug(vMainWindow, "%s", qUtf8Printable(msg));
|
||||
helpLabel->setText(msg);
|
||||
VWidgetPopup::PopupMessage(this, msg);
|
||||
|
|
|
@ -3369,6 +3369,7 @@ void VPattern::PrepareForParse(const Document &parse)
|
|||
data->ClearVariables(VarType::LineAngle);
|
||||
data->ClearVariables(VarType::LineLength);
|
||||
data->ClearVariables(VarType::CurveLength);
|
||||
data->ClearVariables(VarType::CurveCLength);
|
||||
data->ClearVariables(VarType::ArcRadius);
|
||||
data->ClearVariables(VarType::CurveAngle);
|
||||
}
|
||||
|
|
|
@ -153,33 +153,36 @@ const QString ColorDarkBlue = QStringLiteral("darkBlue");
|
|||
const QString ColorYellow = QStringLiteral("yellow");
|
||||
|
||||
//variables
|
||||
const QString line_ = QStringLiteral("Line_");
|
||||
const QString angleLine_ = QStringLiteral("AngleLine_");
|
||||
const QString spl_ = QStringLiteral(SPL_);
|
||||
const QString arc_ = QStringLiteral(ARC_);
|
||||
const QString splPath = QStringLiteral("SplPath");
|
||||
const QString radius_V = QStringLiteral("Radius");
|
||||
const QString radiusArc_ = radius_V + arc_;
|
||||
const QString angle1_V = QStringLiteral("Angle1");
|
||||
const QString angle2_V = QStringLiteral("Angle2");
|
||||
const QString angle1Arc_ = angle1_V + arc_;
|
||||
const QString angle2Arc_ = angle2_V + arc_;
|
||||
const QString angle1Spl_ = angle1_V + spl_;
|
||||
const QString angle2Spl_ = angle2_V + spl_;
|
||||
const QString angle1SplPath = angle1_V + splPath;
|
||||
const QString angle2SplPath = angle2_V + splPath;
|
||||
const QString seg_ = QStringLiteral("Seg_");
|
||||
const QString currentLength = QStringLiteral("CurrentLength");
|
||||
const QString line_ = QStringLiteral("Line_");
|
||||
const QString angleLine_ = QStringLiteral("AngleLine_");
|
||||
const QString spl_ = QStringLiteral(SPL_);
|
||||
const QString arc_ = QStringLiteral(ARC_);
|
||||
const QString splPath = QStringLiteral("SplPath");
|
||||
const QString radius_V = QStringLiteral("Radius");
|
||||
const QString radiusArc_ = radius_V + arc_;
|
||||
const QString angle1_V = QStringLiteral("Angle1");
|
||||
const QString angle2_V = QStringLiteral("Angle2");
|
||||
const QString c1Length_V = QStringLiteral("C1Length");
|
||||
const QString c2Length_V = QStringLiteral("C2Length");
|
||||
const QString c1LengthSpl_ = c1Length_V + spl_;
|
||||
const QString c2LengthSpl_ = c2Length_V + spl_;
|
||||
const QString c1LengthSplPath = c1Length_V + splPath;
|
||||
const QString c2LengthSplPath = c2Length_V + splPath;
|
||||
const QString angle1Arc_ = angle1_V + arc_;
|
||||
const QString angle2Arc_ = angle2_V + arc_;
|
||||
const QString angle1Spl_ = angle1_V + spl_;
|
||||
const QString angle2Spl_ = angle2_V + spl_;
|
||||
const QString angle1SplPath = angle1_V + splPath;
|
||||
const QString angle2SplPath = angle2_V + splPath;
|
||||
const QString seg_ = QStringLiteral("Seg_");
|
||||
const QString currentLength = QStringLiteral("CurrentLength");
|
||||
|
||||
const QStringList builInVariables = QStringList() << line_
|
||||
<< angleLine_
|
||||
<< arc_
|
||||
<< spl_
|
||||
<< splPath
|
||||
<< radius_V
|
||||
<< radiusArc_
|
||||
<< angle1_V
|
||||
<< angle2_V
|
||||
<< angle1Arc_
|
||||
<< angle2Arc_
|
||||
<< angle1Spl_
|
||||
|
@ -187,4 +190,8 @@ const QStringList builInVariables = QStringList() << line_
|
|||
<< angle1SplPath
|
||||
<< angle2SplPath
|
||||
<< seg_
|
||||
<< currentLength;
|
||||
<< currentLength
|
||||
<< c1LengthSpl_
|
||||
<< c2LengthSpl_
|
||||
<< c1LengthSplPath
|
||||
<< c2LengthSplPath;
|
||||
|
|
|
@ -168,6 +168,12 @@ extern const QString radius_V;
|
|||
extern const QString radiusArc_;
|
||||
extern const QString angle1_V;
|
||||
extern const QString angle2_V;
|
||||
extern const QString c1Length_V;
|
||||
extern const QString c2Length_V;
|
||||
extern const QString c1LengthSpl_;
|
||||
extern const QString c2LengthSpl_;
|
||||
extern const QString c1LengthSplPath;
|
||||
extern const QString c2LengthSplPath;
|
||||
extern const QString angle1Arc_;
|
||||
extern const QString angle2Arc_;
|
||||
extern const QString angle1Spl_;
|
||||
|
|
57
src/libs/vgeometry/vabstractbezier.cpp
Normal file
57
src/libs/vgeometry/vabstractbezier.cpp
Normal file
|
@ -0,0 +1,57 @@
|
|||
/************************************************************************
|
||||
**
|
||||
** @file
|
||||
** @author Roman Telezhynskyi <dismine(at)gmail.com>
|
||||
** @date 24 9, 2016
|
||||
**
|
||||
** @brief
|
||||
** @copyright
|
||||
** This source code is part of the Valentine project, a pattern making
|
||||
** program, whose allow create and modeling patterns of clothing.
|
||||
** Copyright (C) 2016 Valentina project
|
||||
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
|
||||
**
|
||||
** Valentina is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** Valentina is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
|
||||
**
|
||||
*************************************************************************/
|
||||
|
||||
#include "vabstractbezier.h"
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VAbstractBezier::VAbstractBezier(const GOType &type, const quint32 &idObject, const Draw &mode)
|
||||
: VAbstractCurve(type, idObject, mode)
|
||||
{
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VAbstractBezier::VAbstractBezier(const VAbstractBezier &curve)
|
||||
: VAbstractCurve(curve)
|
||||
{
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VAbstractBezier &VAbstractBezier::operator=(const VAbstractBezier &curve)
|
||||
{
|
||||
if ( &curve == this )
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
VAbstractCurve::operator=(curve);
|
||||
return *this;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VAbstractBezier::~VAbstractBezier()
|
||||
{
|
||||
}
|
48
src/libs/vgeometry/vabstractbezier.h
Normal file
48
src/libs/vgeometry/vabstractbezier.h
Normal file
|
@ -0,0 +1,48 @@
|
|||
/************************************************************************
|
||||
**
|
||||
** @file
|
||||
** @author Roman Telezhynskyi <dismine(at)gmail.com>
|
||||
** @date 24 9, 2016
|
||||
**
|
||||
** @brief
|
||||
** @copyright
|
||||
** This source code is part of the Valentine project, a pattern making
|
||||
** program, whose allow create and modeling patterns of clothing.
|
||||
** Copyright (C) 2016 Valentina project
|
||||
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
|
||||
**
|
||||
** Valentina is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** Valentina is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
|
||||
**
|
||||
*************************************************************************/
|
||||
|
||||
#ifndef VABSTRACTBEZIER_H
|
||||
#define VABSTRACTBEZIER_H
|
||||
|
||||
#include <QtGlobal>
|
||||
|
||||
#include "vabstractcurve.h"
|
||||
|
||||
class VAbstractBezier : public VAbstractCurve
|
||||
{
|
||||
public:
|
||||
VAbstractBezier(const GOType &type, const quint32 &idObject = NULL_ID, const Draw &mode = Draw::Calculation);
|
||||
VAbstractBezier(const VAbstractBezier &curve);
|
||||
VAbstractBezier& operator= (const VAbstractBezier &curve);
|
||||
virtual ~VAbstractBezier();
|
||||
|
||||
virtual qreal GetC1Length() const =0;
|
||||
virtual qreal GetC2Length() const =0;
|
||||
};
|
||||
|
||||
#endif // VABSTRACTBEZIER_H
|
|
@ -39,13 +39,13 @@
|
|||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VAbstractCubicBezier::VAbstractCubicBezier(const GOType &type, const quint32 &idObject, const Draw &mode)
|
||||
: VAbstractCurve(type, idObject, mode)
|
||||
: VAbstractBezier(type, idObject, mode)
|
||||
{
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VAbstractCubicBezier::VAbstractCubicBezier(const VAbstractCubicBezier &curve)
|
||||
: VAbstractCurve(curve)
|
||||
: VAbstractBezier(curve)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -56,7 +56,7 @@ VAbstractCubicBezier &VAbstractCubicBezier::operator=(const VAbstractCubicBezier
|
|||
{
|
||||
return *this;
|
||||
}
|
||||
VAbstractCurve::operator=(curve);
|
||||
VAbstractBezier::operator=(curve);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
|
|
@ -36,13 +36,13 @@
|
|||
#include <QtGlobal>
|
||||
|
||||
#include "../ifc/ifcdef.h"
|
||||
#include "vabstractcurve.h"
|
||||
#include "vabstractbezier.h"
|
||||
#include "vgeometrydef.h"
|
||||
|
||||
class QPointF;
|
||||
class VPointF;
|
||||
|
||||
class VAbstractCubicBezier : public VAbstractCurve
|
||||
class VAbstractCubicBezier : public VAbstractBezier
|
||||
{
|
||||
public:
|
||||
VAbstractCubicBezier(const GOType &type, const quint32 &idObject = NULL_ID, const Draw &mode = Draw::Calculation);
|
||||
|
|
|
@ -40,13 +40,13 @@ class QPointF;
|
|||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VAbstractCubicBezierPath::VAbstractCubicBezierPath(const GOType &type, const quint32 &idObject, const Draw &mode)
|
||||
: VAbstractCurve(type, idObject, mode)
|
||||
: VAbstractBezier(type, idObject, mode)
|
||||
{
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VAbstractCubicBezierPath::VAbstractCubicBezierPath(const VAbstractCubicBezierPath &curve)
|
||||
: VAbstractCurve(curve)
|
||||
: VAbstractBezier(curve)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,7 @@ VAbstractCubicBezierPath &VAbstractCubicBezierPath::operator=(const VAbstractCub
|
|||
{
|
||||
return *this;
|
||||
}
|
||||
VAbstractCurve::operator=(curve);
|
||||
VAbstractBezier::operator=(curve);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
#include <QVector>
|
||||
#include <QtGlobal>
|
||||
|
||||
#include "vabstractcurve.h"
|
||||
#include "vabstractbezier.h"
|
||||
#include "vgeometrydef.h"
|
||||
|
||||
class QPainterPath;
|
||||
|
@ -45,7 +45,7 @@ class VPointF;
|
|||
class VSpline;
|
||||
class VSplinePoint;
|
||||
|
||||
class VAbstractCubicBezierPath : public VAbstractCurve
|
||||
class VAbstractCubicBezierPath : public VAbstractBezier
|
||||
{
|
||||
Q_DECLARE_TR_FUNCTIONS(VAbstractCubicBezierPath)
|
||||
public:
|
||||
|
|
|
@ -175,6 +175,18 @@ QVector<QPointF> VCubicBezier::GetPoints() const
|
|||
return GetCubicBezierPoints(GetP1(), GetP2(), GetP3(), GetP4());
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
qreal VCubicBezier::GetC1Length() const
|
||||
{
|
||||
return QLineF(GetP1(), GetP2()).length();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
qreal VCubicBezier::GetC2Length() const
|
||||
{
|
||||
return QLineF(GetP4(), GetP3()).length();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QPointF VCubicBezier::GetControlPoint1() const
|
||||
{
|
||||
|
|
|
@ -73,6 +73,9 @@ public:
|
|||
virtual qreal GetLength() const Q_DECL_OVERRIDE;
|
||||
virtual QVector<QPointF> GetPoints() const Q_DECL_OVERRIDE;
|
||||
|
||||
virtual qreal GetC1Length() const Q_DECL_OVERRIDE;
|
||||
virtual qreal GetC2Length() const Q_DECL_OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual QPointF GetControlPoint1() const Q_DECL_OVERRIDE;
|
||||
virtual QPointF GetControlPoint2() const Q_DECL_OVERRIDE;
|
||||
|
|
|
@ -210,6 +210,33 @@ qreal VCubicBezierPath::GetEndAngle() const
|
|||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
qreal VCubicBezierPath::GetC1Length() const
|
||||
{
|
||||
if (CountSubSpl() > 0)
|
||||
{
|
||||
return GetSpline(1).GetC1Length();
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
qreal VCubicBezierPath::GetC2Length() const
|
||||
{
|
||||
const qint32 count = CountSubSpl();
|
||||
if (count > 0)
|
||||
{
|
||||
return GetSpline(count).GetC2Length();
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QVector<VSplinePoint> VCubicBezierPath::GetSplinePath() const
|
||||
{
|
||||
|
|
|
@ -72,6 +72,9 @@ public:
|
|||
virtual qreal GetStartAngle () const Q_DECL_OVERRIDE;
|
||||
virtual qreal GetEndAngle () const Q_DECL_OVERRIDE;
|
||||
|
||||
virtual qreal GetC1Length() const Q_DECL_OVERRIDE;
|
||||
virtual qreal GetC2Length() const Q_DECL_OVERRIDE;
|
||||
|
||||
virtual QVector<VSplinePoint> GetSplinePath() const Q_DECL_OVERRIDE;
|
||||
QVector<VPointF> GetCubicPath() const;
|
||||
|
||||
|
|
|
@ -14,7 +14,8 @@ SOURCES += \
|
|||
$$PWD/vabstractcubicbezier.cpp \
|
||||
$$PWD/vabstractcubicbezierpath.cpp \
|
||||
$$PWD/vcubicbezierpath.cpp \
|
||||
$$PWD/vabstractarc.cpp
|
||||
$$PWD/vabstractarc.cpp \
|
||||
$$PWD/vabstractbezier.cpp
|
||||
|
||||
win32-msvc*:SOURCES += $$PWD/stable.cpp
|
||||
|
||||
|
@ -44,4 +45,5 @@ HEADERS += \
|
|||
$$PWD/vcubicbezierpath.h \
|
||||
$$PWD/vcubicbezierpath_p.h \
|
||||
$$PWD/vabstractarc.h \
|
||||
$$PWD/vabstractarc_p.h
|
||||
$$PWD/vabstractarc_p.h \
|
||||
$$PWD/vabstractbezier.h
|
||||
|
|
|
@ -85,8 +85,8 @@ public:
|
|||
void SetStartAngle(qreal angle, const QString &formula);
|
||||
void SetEndAngle(qreal angle, const QString &formula);
|
||||
|
||||
qreal GetC1Length() const;
|
||||
qreal GetC2Length() const;
|
||||
virtual qreal GetC1Length() const Q_DECL_OVERRIDE;
|
||||
virtual qreal GetC2Length() const Q_DECL_OVERRIDE;
|
||||
|
||||
QString GetC1LengthFormula() const;
|
||||
QString GetC2LengthFormula() const;
|
||||
|
|
|
@ -317,6 +317,32 @@ qreal VSplinePath::GetEndAngle() const
|
|||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
qreal VSplinePath::GetC1Length() const
|
||||
{
|
||||
if (CountPoints() > 0)
|
||||
{
|
||||
return GetSplinePath().first().Length2();
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
qreal VSplinePath::GetC2Length() const
|
||||
{
|
||||
if (CountPoints() > 0)
|
||||
{
|
||||
return GetSplinePath().last().Length1();
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VPointF VSplinePath::FirstPoint() const
|
||||
{
|
||||
|
|
|
@ -80,6 +80,9 @@ public:
|
|||
virtual qreal GetStartAngle () const Q_DECL_OVERRIDE;
|
||||
virtual qreal GetEndAngle () const Q_DECL_OVERRIDE;
|
||||
|
||||
virtual qreal GetC1Length() const Q_DECL_OVERRIDE;
|
||||
virtual qreal GetC2Length() const Q_DECL_OVERRIDE;
|
||||
|
||||
void UpdatePoint(qint32 indexSpline, const SplinePointPosition &pos, const VSplinePoint &point);
|
||||
VSplinePoint GetSplinePoint(qint32 indexSpline, SplinePointPosition pos) const;
|
||||
|
||||
|
|
|
@ -157,8 +157,8 @@ enum class Vis : ToolVisHolderType
|
|||
ToolFlippingByAxis
|
||||
};
|
||||
|
||||
enum class VarType : char { Measurement, Increment, LineLength, CurveLength, LineAngle, CurveAngle, ArcRadius,
|
||||
Unknown };
|
||||
enum class VarType : char { Measurement, Increment, LineLength, CurveLength, CurveCLength, LineAngle, CurveAngle,
|
||||
ArcRadius, Unknown };
|
||||
|
||||
enum class GHeights : unsigned char { ALL,
|
||||
H92=92, H98=98, H104=104, H110=110, H116=116, H122=122, H128=128, H134=134,
|
||||
|
|
|
@ -37,5 +37,6 @@
|
|||
#include "variables/vlineangle.h"
|
||||
#include "variables/varcradius.h"
|
||||
#include "variables/vcurveangle.h"
|
||||
#include "variables/vcurveclength.h"
|
||||
|
||||
#endif // VARIABLES_H
|
||||
|
|
105
src/libs/vpatterndb/variables/vcurveclength.cpp
Normal file
105
src/libs/vpatterndb/variables/vcurveclength.cpp
Normal file
|
@ -0,0 +1,105 @@
|
|||
/************************************************************************
|
||||
**
|
||||
** @file
|
||||
** @author Roman Telezhynskyi <dismine(at)gmail.com>
|
||||
** @date 24 9, 2016
|
||||
**
|
||||
** @brief
|
||||
** @copyright
|
||||
** This source code is part of the Valentine project, a pattern making
|
||||
** program, whose allow create and modeling patterns of clothing.
|
||||
** Copyright (C) 2016 Valentina project
|
||||
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
|
||||
**
|
||||
** Valentina is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** Valentina is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
|
||||
**
|
||||
*************************************************************************/
|
||||
|
||||
#include "vcurveclength.h"
|
||||
|
||||
#include <QLatin1String>
|
||||
#include <QMessageLogger>
|
||||
|
||||
#include "../vmisc/def.h"
|
||||
#include "../ifc/ifcdef.h"
|
||||
#include "../vgeometry/vabstractcurve.h"
|
||||
#include "../vgeometry/vspline.h"
|
||||
#include "vcurvevariable.h"
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VCurveCLength::VCurveCLength()
|
||||
: VCurveVariable()
|
||||
{
|
||||
SetType(VarType::CurveCLength);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VCurveCLength::VCurveCLength(const quint32 &id, const quint32 &parentId, const VAbstractBezier *curve,
|
||||
CurveCLength cType, Unit patternUnit)
|
||||
: VCurveVariable(id, parentId)
|
||||
{
|
||||
SetType(VarType::CurveCLength);
|
||||
SCASSERT(curve != nullptr);
|
||||
if (cType == CurveCLength::C1)
|
||||
{
|
||||
SetValue(FromPixel(curve->GetC1Length(), patternUnit));
|
||||
SetName(c1Length_V + curve->name());
|
||||
}
|
||||
else
|
||||
{
|
||||
SetValue(FromPixel(curve->GetC2Length(), patternUnit));
|
||||
SetName(c2Length_V + curve->name());
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VCurveCLength::VCurveCLength(const quint32 &id, const quint32 &parentId, const QString &baseCurveName,
|
||||
const VSpline &spl, CurveCLength cType, Unit patternUnit, qint32 segment)
|
||||
: VCurveVariable(id, parentId)
|
||||
{
|
||||
SetType(VarType::CurveCLength);
|
||||
if (cType == CurveCLength::C1)
|
||||
{
|
||||
SetValue(FromPixel(spl.GetC1Length(), patternUnit));
|
||||
SetName(c1Length_V + baseCurveName + QLatin1String("_") + seg_ + QString().setNum(segment));
|
||||
}
|
||||
else
|
||||
{
|
||||
SetValue(FromPixel(spl.GetC2Length(), patternUnit));
|
||||
SetName(c2Length_V + baseCurveName + QLatin1String("_") + seg_ + QString().setNum(segment));
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VCurveCLength::VCurveCLength(const VCurveCLength &var)
|
||||
: VCurveVariable(var)
|
||||
{
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VCurveCLength &VCurveCLength::operator=(const VCurveCLength &var)
|
||||
{
|
||||
if ( &var == this )
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
VCurveVariable::operator=(var);
|
||||
return *this;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VCurveCLength::~VCurveCLength()
|
||||
{
|
||||
}
|
||||
|
56
src/libs/vpatterndb/variables/vcurveclength.h
Normal file
56
src/libs/vpatterndb/variables/vcurveclength.h
Normal file
|
@ -0,0 +1,56 @@
|
|||
/************************************************************************
|
||||
**
|
||||
** @file
|
||||
** @author Roman Telezhynskyi <dismine(at)gmail.com>
|
||||
** @date 24 9, 2016
|
||||
**
|
||||
** @brief
|
||||
** @copyright
|
||||
** This source code is part of the Valentine project, a pattern making
|
||||
** program, whose allow create and modeling patterns of clothing.
|
||||
** Copyright (C) 2016 Valentina project
|
||||
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
|
||||
**
|
||||
** Valentina is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** Valentina is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
|
||||
**
|
||||
*************************************************************************/
|
||||
|
||||
#ifndef VCURVECLENGTH_H
|
||||
#define VCURVECLENGTH_H
|
||||
|
||||
#include <qcompilerdetection.h>
|
||||
#include <QString>
|
||||
#include <QtGlobal>
|
||||
|
||||
#include "vcurvevariable.h"
|
||||
|
||||
enum class CurveCLength : char { C1, C2 };
|
||||
|
||||
class VAbstractBezier;
|
||||
class VSpline;
|
||||
|
||||
class VCurveCLength : public VCurveVariable
|
||||
{
|
||||
public:
|
||||
VCurveCLength();
|
||||
VCurveCLength(const quint32 &id, const quint32 &parentId, const VAbstractBezier *curve, CurveCLength cType,
|
||||
Unit patternUnit);
|
||||
VCurveCLength(const quint32 &id, const quint32 &parentId, const QString &baseCurveName, const VSpline &spl,
|
||||
CurveCLength cType, Unit patternUnit, qint32 segment);
|
||||
VCurveCLength(const VCurveCLength &var);
|
||||
VCurveCLength &operator=(const VCurveCLength &var);
|
||||
virtual ~VCurveCLength() Q_DECL_OVERRIDE;
|
||||
};
|
||||
|
||||
#endif // VCURVECLENGTH_H
|
|
@ -46,6 +46,7 @@
|
|||
#include "variables/varcradius.h"
|
||||
#include "variables/vcurveangle.h"
|
||||
#include "variables/vcurvelength.h"
|
||||
#include "variables/vcurveclength.h"
|
||||
#include "variables/vincrement.h"
|
||||
#include "variables/vlineangle.h"
|
||||
#include "variables/vlinelength.h"
|
||||
|
@ -276,6 +277,7 @@ void VContainer::ClearForFullParse()
|
|||
ClearVariables(VarType::LineAngle);
|
||||
ClearVariables(VarType::LineLength);
|
||||
ClearVariables(VarType::CurveLength);
|
||||
ClearVariables(VarType::CurveCLength);
|
||||
ClearVariables(VarType::ArcRadius);
|
||||
ClearVariables(VarType::CurveAngle);
|
||||
ClearGObjects();
|
||||
|
@ -407,11 +409,23 @@ void VContainer::AddCurve(const QSharedPointer<VAbstractCurve> &curve, const qui
|
|||
AddVariable(endAngle->GetName(), endAngle);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VContainer::AddSpline(const QSharedPointer<VAbstractBezier> &curve, quint32 id, quint32 parentId)
|
||||
{
|
||||
AddCurve(curve, id, parentId);
|
||||
|
||||
VCurveCLength *c1Length = new VCurveCLength(id, parentId, curve.data(), CurveCLength::C1, *GetPatternUnit());
|
||||
AddVariable(c1Length->GetName(), c1Length);
|
||||
|
||||
VCurveCLength *c2Length = new VCurveCLength(id, parentId, curve.data(), CurveCLength::C2, *GetPatternUnit());
|
||||
AddVariable(c2Length->GetName(), c2Length);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VContainer::AddCurveWithSegments(const QSharedPointer<VAbstractCubicBezierPath> &curve, const quint32 &id,
|
||||
quint32 parentId)
|
||||
{
|
||||
AddCurve(curve, id, parentId);
|
||||
AddSpline(curve, id, parentId);
|
||||
|
||||
for (qint32 i = 1; i <= curve->CountSubSpl(); ++i)
|
||||
{
|
||||
|
@ -425,6 +439,14 @@ void VContainer::AddCurveWithSegments(const QSharedPointer<VAbstractCubicBezierP
|
|||
|
||||
VCurveAngle *endAngle = new VCurveAngle(id, parentId, curve->name(), spl, CurveAngle::EndAngle, i);
|
||||
AddVariable(endAngle->GetName(), endAngle);
|
||||
|
||||
VCurveCLength *c1Length = new VCurveCLength(id, parentId, curve->name(), spl, CurveCLength::C1,
|
||||
*GetPatternUnit(), i);
|
||||
AddVariable(c1Length->GetName(), c1Length);
|
||||
|
||||
VCurveCLength *c2Length = new VCurveCLength(id, parentId, curve->name(), spl, CurveCLength::C2,
|
||||
*GetPatternUnit(), i);
|
||||
AddVariable(c2Length->GetName(), c2Length);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -524,6 +546,12 @@ const QMap<QString, QSharedPointer<VCurveLength> > VContainer::DataLengthCurves(
|
|||
return DataVar<VCurveLength>(VarType::CurveLength);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
const QMap<QString, QSharedPointer<VCurveCLength> > VContainer::DataCurvesCLength() const
|
||||
{
|
||||
return DataVar<VCurveCLength>(VarType::CurveCLength);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
const QMap<QString, QSharedPointer<VLineAngle> > VContainer::DataAngleLines() const
|
||||
{
|
||||
|
|
|
@ -140,9 +140,8 @@ public:
|
|||
quint32 AddGObject(VGObject *obj);
|
||||
quint32 AddDetail(const VDetail &detail);
|
||||
void AddLine(const quint32 &firstPointId, const quint32 &secondPointId);
|
||||
void AddArc(const QSharedPointer<VArc> &arc, const quint32 &arcId, const quint32 &parentId = 0);
|
||||
void AddCurve(const QSharedPointer<VAbstractCurve> &curve, const quint32 &id,
|
||||
quint32 parentId = NULL_ID);
|
||||
void AddArc(const QSharedPointer<VArc> &arc, const quint32 &arcId, const quint32 &parentId = NULL_ID);
|
||||
void AddSpline(const QSharedPointer<VAbstractBezier> &curve, quint32 id, quint32 parentId = NULL_ID);
|
||||
void AddCurveWithSegments(const QSharedPointer<VAbstractCubicBezierPath> &curve, const quint32 &id,
|
||||
quint32 parentId = NULL_ID);
|
||||
|
||||
|
@ -176,13 +175,14 @@ public:
|
|||
const QHash<quint32, VDetail> *DataDetails() const;
|
||||
const QHash<QString, QSharedPointer<VInternalVariable>> *DataVariables() const;
|
||||
|
||||
const QMap<QString, QSharedPointer<VMeasurement> > DataMeasurements() const;
|
||||
const QMap<QString, QSharedPointer<VIncrement> > DataIncrements() const;
|
||||
const QMap<QString, QSharedPointer<VLengthLine> > DataLengthLines() const;
|
||||
const QMap<QString, QSharedPointer<VCurveLength> > DataLengthCurves() const;
|
||||
const QMap<QString, QSharedPointer<VLineAngle> > DataAngleLines() const;
|
||||
const QMap<QString, QSharedPointer<VArcRadius> > DataRadiusesArcs() const;
|
||||
const QMap<QString, QSharedPointer<VCurveAngle> > DataAnglesCurves() const;
|
||||
const QMap<QString, QSharedPointer<VMeasurement> > DataMeasurements() const;
|
||||
const QMap<QString, QSharedPointer<VIncrement> > DataIncrements() const;
|
||||
const QMap<QString, QSharedPointer<VLengthLine> > DataLengthLines() const;
|
||||
const QMap<QString, QSharedPointer<VCurveLength> > DataLengthCurves() const;
|
||||
const QMap<QString, QSharedPointer<VCurveCLength> > DataCurvesCLength() const;
|
||||
const QMap<QString, QSharedPointer<VLineAngle> > DataAngleLines() const;
|
||||
const QMap<QString, QSharedPointer<VArcRadius> > DataRadiusesArcs() const;
|
||||
const QMap<QString, QSharedPointer<VCurveAngle> > DataAnglesCurves() const;
|
||||
|
||||
const QHash<QString, qreal *> PlainVariables() const;
|
||||
|
||||
|
@ -203,6 +203,8 @@ private:
|
|||
|
||||
QSharedDataPointer<VContainerData> d;
|
||||
|
||||
void AddCurve(const QSharedPointer<VAbstractCurve> &curve, const quint32 &id, quint32 parentId = NULL_ID);
|
||||
|
||||
template <class T>
|
||||
uint qHash( const QSharedPointer<T> &p );
|
||||
|
||||
|
|
|
@ -541,6 +541,12 @@ QVector<VNodeDetail> VDetail::listNodePoint() const
|
|||
return list;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VDetail::SetPatternPieceData(const VPatternPieceData &data)
|
||||
{
|
||||
d->m_ppData = data;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief Returns full access to the pattern piece data object
|
||||
|
@ -561,6 +567,12 @@ const VPatternPieceData& VDetail::GetPatternPieceData() const
|
|||
return d->m_ppData;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VDetail::SetPatternInfo(const VPatternInfoGeometry &info)
|
||||
{
|
||||
d->m_piPatternInfo = info;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief Returns full access to the pattern info geometry object
|
||||
|
|
|
@ -98,9 +98,13 @@ public:
|
|||
QPainterPath ContourPath(const VContainer *data) const;
|
||||
QPainterPath SeamAllowancePath(const VContainer *data) const;
|
||||
QVector<VNodeDetail> listNodePoint()const;
|
||||
VPatternPieceData& GetPatternPieceData();
|
||||
|
||||
void SetPatternPieceData(const VPatternPieceData &data);
|
||||
VPatternPieceData& GetPatternPieceData();
|
||||
const VPatternPieceData& GetPatternPieceData() const;
|
||||
VPatternInfoGeometry& GetPatternInfo();
|
||||
|
||||
void SetPatternInfo(const VPatternInfoGeometry &info);
|
||||
VPatternInfoGeometry& GetPatternInfo();
|
||||
const VPatternInfoGeometry& GetPatternInfo() const;
|
||||
VGrainlineGeometry& GetGrainlineGeometry();
|
||||
const VGrainlineGeometry& GetGrainlineGeometry() const;
|
||||
|
|
|
@ -20,7 +20,8 @@ SOURCES += \
|
|||
$$PWD/vformula.cpp \
|
||||
$$PWD/vpatternpiecedata.cpp \
|
||||
$$PWD/vpatterninfogeometry.cpp \
|
||||
$$PWD/vgrainlinegeometry.cpp
|
||||
$$PWD/vgrainlinegeometry.cpp \
|
||||
$$PWD/variables/vcurveclength.cpp
|
||||
|
||||
win32-msvc*:SOURCES += $$PWD/stable.cpp
|
||||
|
||||
|
@ -55,4 +56,5 @@ HEADERS += \
|
|||
$$PWD/vformula.h \
|
||||
$$PWD/vpatternpiecedata.h \
|
||||
$$PWD/vpatterninfogeometry.h \
|
||||
$$PWD/vgrainlinegeometry.h
|
||||
$$PWD/vgrainlinegeometry.h \
|
||||
$$PWD/variables/vcurveclength.h
|
||||
|
|
|
@ -390,6 +390,12 @@ void VTranslateVars::InitVariables()
|
|||
"Do not add symbol _ to the end of the name"));
|
||||
variables.insert(seg_, translate("VTranslateVars", "Seg_", "Segment. Left symbol _ in the name"));
|
||||
variables.insert(currentLength, translate("VTranslateVars", "CurrentLength", "Do not add space between words"));
|
||||
variables.insert(c1LengthSpl_, translate("VTranslateVars", "C1LengthSpl_", "Left symbol _ in the name"));
|
||||
variables.insert(c2LengthSpl_, translate("VTranslateVars", "C2LengthSpl_", "Left symbol _ in the name"));
|
||||
variables.insert(c1LengthSplPath, translate("VTranslateVars", "C1LengthSplPath",
|
||||
"Do not add symbol _ to the end of the name"));
|
||||
variables.insert(c2LengthSplPath, translate("VTranslateVars", "C2LengthSplPath",
|
||||
"Do not add symbol _ to the end of the name"));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -297,6 +297,13 @@ void DialogEditWrongFormula::LengthCurves()
|
|||
ShowVariable(data->DataLengthCurves());
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogEditWrongFormula::CurvesCLength()
|
||||
{
|
||||
ui->checkBoxHideEmpty->setEnabled(false);
|
||||
ShowVariable(data->DataCurvesCLength());
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogEditWrongFormula::AngleLines()
|
||||
{
|
||||
|
@ -399,6 +406,7 @@ void DialogEditWrongFormula::InitVariables()
|
|||
connect(ui->checkBoxHideEmpty, &QCheckBox::stateChanged, this, &DialogEditWrongFormula::Measurements);
|
||||
connect(ui->radioButtonRadiusesArcs, &QRadioButton::clicked, this, &DialogEditWrongFormula::RadiusArcs);
|
||||
connect(ui->radioButtonAnglesCurves, &QRadioButton::clicked, this, &DialogEditWrongFormula::AnglesCurves);
|
||||
connect(ui->radioButtonCLength, &QRadioButton::clicked, this, &DialogEditWrongFormula::CurvesCLength);
|
||||
connect(ui->radioButtonFunctions, &QRadioButton::clicked, this, &DialogEditWrongFormula::Functions);
|
||||
}
|
||||
|
||||
|
|
|
@ -88,6 +88,7 @@ public slots:
|
|||
void RadiusArcs();
|
||||
void AnglesCurves();
|
||||
void LengthCurves();
|
||||
void CurvesCLength();
|
||||
void AngleLines();
|
||||
void Increments();
|
||||
void Functions();
|
||||
|
|
|
@ -9,8 +9,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>390</width>
|
||||
<height>453</height>
|
||||
<width>448</width>
|
||||
<height>425</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
|
@ -329,6 +329,13 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButtonCLength">
|
||||
<property name="text">
|
||||
<string>Lengths to control points</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButtonFunctions">
|
||||
<property name="sizePolicy">
|
||||
|
|
|
@ -103,7 +103,7 @@ DestinationItem VAbstractFlipping::CreateCurve(quint32 idTool, quint32 idItem, c
|
|||
const QPointF &secondPoint, const QString &suffix, VContainer *data)
|
||||
{
|
||||
const DestinationItem item = CreateItem<Item>(idTool, idItem, firstPoint, secondPoint, suffix, data);
|
||||
data->AddCurve(data->GeometricObject<Item>(item.id), item.id);
|
||||
data->AddSpline(data->GeometricObject<Item>(item.id), item.id);
|
||||
return item;
|
||||
}
|
||||
|
||||
|
@ -135,7 +135,7 @@ void VAbstractFlipping::UpdateCurve(quint32 idTool, quint32 idItem, const QPoint
|
|||
const QPointF &secondPoint, const QString &suffix, VContainer *data, quint32 id)
|
||||
{
|
||||
UpdateItem<Item>(idTool, idItem, firstPoint, secondPoint, suffix, data, id);
|
||||
data->AddCurve(data->GeometricObject<Item>(id), id);
|
||||
data->AddSpline(data->GeometricObject<Item>(id), id);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -174,7 +174,7 @@ void VToolFlippingByAxis::ShowVisualization(bool show)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolFlippingByAxis::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolFlippingByAxis *visual = qobject_cast<VisToolFlippingByAxis *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -154,7 +154,7 @@ void VToolFlippingByLine::ShowVisualization(bool show)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolFlippingByLine::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolFlippingByLine *visual = qobject_cast<VisToolFlippingByLine *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -156,7 +156,7 @@ void VAbstractOperation::ShowToolVisualization(bool show)
|
|||
{
|
||||
if (show)
|
||||
{
|
||||
if (vis == nullptr)
|
||||
if (vis.isNull())
|
||||
{
|
||||
AddVisualization<T>();
|
||||
SetVisualization();
|
||||
|
@ -172,7 +172,6 @@ void VAbstractOperation::ShowToolVisualization(bool show)
|
|||
else
|
||||
{
|
||||
delete vis;
|
||||
vis = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -285,7 +285,7 @@ void VToolRotation::ShowVisualization(bool show)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolRotation::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolRotation *visual = qobject_cast<VisToolRotation *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
@ -390,7 +390,7 @@ DestinationItem VToolRotation::CreateCurve(quint32 idTool, quint32 idItem, const
|
|||
const QString &suffix, VContainer *data)
|
||||
{
|
||||
const DestinationItem item = CreateItem<Item>(idTool, idItem, origin, angle, suffix, data);
|
||||
data->AddCurve(data->GeometricObject<Item>(item.id), item.id);
|
||||
data->AddSpline(data->GeometricObject<Item>(item.id), item.id);
|
||||
return item;
|
||||
}
|
||||
|
||||
|
@ -429,7 +429,7 @@ void VToolRotation::UpdateItem(quint32 idTool, quint32 idItem, const QPointF &or
|
|||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolRotation::UpdateArc(quint32 idTool, quint32 idItem, const QPointF &origin, qreal angle,
|
||||
const QString &suffix, VContainer *data, quint32 id)
|
||||
const QString &suffix, VContainer *data, quint32 id)
|
||||
{
|
||||
UpdateItem<VArc>(idTool, idItem, origin, angle, suffix, data, id);
|
||||
data->AddArc(data->GeometricObject<VArc>(id), id);
|
||||
|
@ -438,16 +438,16 @@ void VToolRotation::UpdateArc(quint32 idTool, quint32 idItem, const QPointF &ori
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
template <class Item>
|
||||
void VToolRotation::UpdateCurve(quint32 idTool, quint32 idItem, const QPointF &origin, qreal angle,
|
||||
const QString &suffix, VContainer *data, quint32 id)
|
||||
const QString &suffix, VContainer *data, quint32 id)
|
||||
{
|
||||
UpdateItem<Item>(idTool, idItem, origin, angle, suffix, data, id);
|
||||
data->AddCurve(data->GeometricObject<Item>(id), id);
|
||||
data->AddSpline(data->GeometricObject<Item>(id), id);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
template <class Item>
|
||||
void VToolRotation::UpdateCurveWithSegments(quint32 idTool, quint32 idItem, const QPointF &origin, qreal angle,
|
||||
const QString &suffix, VContainer *data, quint32 id)
|
||||
const QString &suffix, VContainer *data, quint32 id)
|
||||
{
|
||||
UpdateItem<Item>(idTool, idItem, origin, angle, suffix, data, id);
|
||||
data->AddCurveWithSegments(data->GeometricObject<Item>(id), id);
|
||||
|
|
|
@ -144,7 +144,7 @@ inline void VAbstractSpline::ShowToolVisualization(bool show)
|
|||
{
|
||||
if (show)
|
||||
{
|
||||
if (vis == nullptr)
|
||||
if (vis.isNull())
|
||||
{
|
||||
AddVisualization<T>();
|
||||
SetVisualization();
|
||||
|
@ -160,7 +160,6 @@ inline void VAbstractSpline::ShowToolVisualization(bool show)
|
|||
else
|
||||
{
|
||||
delete vis;
|
||||
vis = nullptr;
|
||||
}
|
||||
|
||||
if (detailsMode)
|
||||
|
|
|
@ -365,7 +365,7 @@ void VToolArc::SaveOptions(QDomElement &tag, QSharedPointer<VGObject> &obj)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolArc::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
const QSharedPointer<VArc> arc = VAbstractTool::data.GeometricObject<VArc>(id);
|
||||
VisToolArc *visual = qobject_cast<VisToolArc *>(vis);
|
||||
|
|
|
@ -322,7 +322,7 @@ void VToolArcWithLength::SaveOptions(QDomElement &tag, QSharedPointer<VGObject>
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolArcWithLength::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
const QSharedPointer<VArc> arc = VAbstractTool::data.GeometricObject<VArc>(id);
|
||||
VisToolArcWithLength *visual = qobject_cast<VisToolArcWithLength *>(vis);
|
||||
|
|
|
@ -117,12 +117,12 @@ VToolCubicBezier *VToolCubicBezier::Create(const quint32 _id, VCubicBezier *spli
|
|||
if (typeCreation == Source::FromGui)
|
||||
{
|
||||
id = data->AddGObject(spline);
|
||||
data->AddCurve(data->GeometricObject<VAbstractCurve>(id), id);
|
||||
data->AddSpline(data->GeometricObject<VAbstractBezier>(id), id);
|
||||
}
|
||||
else
|
||||
{
|
||||
data->UpdateGObject(id, spline);
|
||||
data->AddCurve(data->GeometricObject<VAbstractCurve>(id), id);
|
||||
data->AddSpline(data->GeometricObject<VAbstractBezier>(id), id);
|
||||
if (parse != Document::FullParse)
|
||||
{
|
||||
doc->UpdateToolData(id, data);
|
||||
|
@ -216,7 +216,7 @@ void VToolCubicBezier::SaveOptions(QDomElement &tag, QSharedPointer<VGObject> &o
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolCubicBezier::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
auto visual = qobject_cast<VisToolCubicBezier *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -226,7 +226,7 @@ void VToolCubicBezierPath::SaveOptions(QDomElement &tag, QSharedPointer<VGObject
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolCubicBezierPath::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
auto visual = qobject_cast<VisToolCubicBezierPath *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -196,12 +196,12 @@ VToolSpline* VToolSpline::Create(const quint32 _id, VSpline *spline, const QStri
|
|||
if (typeCreation == Source::FromGui)
|
||||
{
|
||||
id = data->AddGObject(spline);
|
||||
data->AddCurve(data->GeometricObject<VAbstractCurve>(id), id);
|
||||
data->AddSpline(data->GeometricObject<VAbstractBezier>(id), id);
|
||||
}
|
||||
else
|
||||
{
|
||||
data->UpdateGObject(id, spline);
|
||||
data->AddCurve(data->GeometricObject<VAbstractCurve>(id), id);
|
||||
data->AddSpline(data->GeometricObject<VAbstractBezier>(id), id);
|
||||
if (parse != Document::FullParse)
|
||||
{
|
||||
doc->UpdateToolData(id, data);
|
||||
|
@ -500,7 +500,7 @@ void VToolSpline::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolSpline::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolSpline *visual = qobject_cast<VisToolSpline *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -621,7 +621,7 @@ void VToolSplinePath::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolSplinePath::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolSplinePath *visual = qobject_cast<VisToolSplinePath *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -376,7 +376,7 @@ void VToolTrueDarts::ReadToolAttributes(const QDomElement &domElement)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolTrueDarts::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolTrueDarts *visual = qobject_cast<VisToolTrueDarts *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -89,7 +89,7 @@ inline void VToolCut::ShowToolVisualization(bool show)
|
|||
{
|
||||
if (show)
|
||||
{
|
||||
if (vis == nullptr)
|
||||
if (vis.isNull())
|
||||
{
|
||||
AddVisualization<T>();
|
||||
SetVisualization();
|
||||
|
@ -105,7 +105,6 @@ inline void VToolCut::ShowToolVisualization(bool show)
|
|||
else
|
||||
{
|
||||
delete vis;
|
||||
vis = nullptr;
|
||||
}
|
||||
if (VAbstractSpline *parentCurve = qobject_cast<VAbstractSpline *>(doc->getTool(curveCutId)))
|
||||
{
|
||||
|
|
|
@ -241,7 +241,7 @@ void VToolCutArc::ReadToolAttributes(const QDomElement &domElement)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolCutArc::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolCutArc *visual = qobject_cast<VisToolCutArc *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -150,20 +150,20 @@ VToolCutSpline* VToolCutSpline::Create(const quint32 _id, const QString &pointNa
|
|||
|
||||
quint32 id = _id;
|
||||
VPointF *p = new VPointF(point, pointName, mx, my);
|
||||
auto spline1 = QSharedPointer<VAbstractCurve>(new VSpline(spl->GetP1(), spl1p2, spl1p3, *p));
|
||||
auto spline2 = QSharedPointer<VAbstractCurve>(new VSpline(*p, spl2p2, spl2p3, spl->GetP4()));
|
||||
auto spline1 = QSharedPointer<VAbstractBezier>(new VSpline(spl->GetP1(), spl1p2, spl1p3, *p));
|
||||
auto spline2 = QSharedPointer<VAbstractBezier>(new VSpline(*p, spl2p2, spl2p3, spl->GetP4()));
|
||||
|
||||
if (typeCreation == Source::FromGui)
|
||||
{
|
||||
id = data->AddGObject(p);
|
||||
data->AddCurve(spline1, NULL_ID, id);
|
||||
data->AddCurve(spline2, NULL_ID, id);
|
||||
data->AddSpline(spline1, NULL_ID, id);
|
||||
data->AddSpline(spline2, NULL_ID, id);
|
||||
}
|
||||
else
|
||||
{
|
||||
data->UpdateGObject(id, p);
|
||||
data->AddCurve(spline1, NULL_ID, id);
|
||||
data->AddCurve(spline2, NULL_ID, id);
|
||||
data->AddSpline(spline1, NULL_ID, id);
|
||||
data->AddSpline(spline2, NULL_ID, id);
|
||||
|
||||
if (parse != Document::FullParse)
|
||||
{
|
||||
|
@ -241,7 +241,7 @@ void VToolCutSpline::ReadToolAttributes(const QDomElement &domElement)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolCutSpline::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolCutSpline *visual = qobject_cast<VisToolCutSpline *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -166,15 +166,15 @@ VToolCutSplinePath* VToolCutSplinePath::Create(const quint32 _id, const QString
|
|||
{
|
||||
id = data->AddGObject(p);
|
||||
|
||||
data->AddCurve(QSharedPointer<VAbstractCurve>(splPath1), NULL_ID, id);
|
||||
data->AddCurve(QSharedPointer<VAbstractCurve>(splPath2), NULL_ID, id);
|
||||
data->AddSpline(QSharedPointer<VAbstractBezier>(splPath1), NULL_ID, id);
|
||||
data->AddSpline(QSharedPointer<VAbstractBezier>(splPath2), NULL_ID, id);
|
||||
}
|
||||
else
|
||||
{
|
||||
data->UpdateGObject(id, p);
|
||||
|
||||
data->AddCurve(QSharedPointer<VAbstractCurve>(splPath1), NULL_ID, id);
|
||||
data->AddCurve(QSharedPointer<VAbstractCurve>(splPath2), NULL_ID, id);
|
||||
data->AddSpline(QSharedPointer<VAbstractBezier>(splPath1), NULL_ID, id);
|
||||
data->AddSpline(QSharedPointer<VAbstractBezier>(splPath2), NULL_ID, id);
|
||||
|
||||
if (parse != Document::FullParse)
|
||||
{
|
||||
|
@ -329,7 +329,7 @@ void VToolCutSplinePath::ReadToolAttributes(const QDomElement &domElement)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolCutSplinePath::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolCutSplinePath *visual = qobject_cast<VisToolCutSplinePath *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -164,7 +164,7 @@ void VToolAlongLine::ReadToolAttributes(const QDomElement &domElement)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolAlongLine::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolAlongLine *visual = qobject_cast<VisToolAlongLine *>(vis);
|
||||
SCASSERT(visual != nullptr)
|
||||
|
|
|
@ -320,7 +320,7 @@ void VToolBisector::ReadToolAttributes(const QDomElement &domElement)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolBisector::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolBisector *visual = qobject_cast<VisToolBisector *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -313,7 +313,7 @@ void VToolCurveIntersectAxis::ReadToolAttributes(const QDomElement &domElement)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolCurveIntersectAxis::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolCurveIntersectAxis *visual = qobject_cast<VisToolCurveIntersectAxis *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
@ -378,8 +378,8 @@ void VToolCurveIntersectAxis::InitSegments(const GOType &curveType, qreal segLen
|
|||
case GOType::CubicBezier:
|
||||
case GOType::Spline:
|
||||
{
|
||||
QSharedPointer<VAbstractCurve> spline1;
|
||||
QSharedPointer<VAbstractCurve> spline2;
|
||||
QSharedPointer<VAbstractBezier> spline1;
|
||||
QSharedPointer<VAbstractBezier> spline2;
|
||||
|
||||
const auto spl = data->GeometricObject<VAbstractCubicBezier>(curveId);
|
||||
QPointF spl1p2, spl1p3, spl2p2, spl2p3;
|
||||
|
@ -397,13 +397,13 @@ void VToolCurveIntersectAxis::InitSegments(const GOType &curveType, qreal segLen
|
|||
|
||||
if (not VFuzzyComparePossibleNulls(segLength, -1))
|
||||
{
|
||||
spline1 = QSharedPointer<VAbstractCurve>(spl1);
|
||||
spline2 = QSharedPointer<VAbstractCurve>(spl2);
|
||||
spline1 = QSharedPointer<VAbstractBezier>(spl1);
|
||||
spline2 = QSharedPointer<VAbstractBezier>(spl2);
|
||||
}
|
||||
else
|
||||
{
|
||||
spline1 = QSharedPointer<VAbstractCurve>(new VSpline());
|
||||
spline2 = QSharedPointer<VAbstractCurve>(new VSpline());
|
||||
spline1 = QSharedPointer<VAbstractBezier>(new VSpline());
|
||||
spline2 = QSharedPointer<VAbstractBezier>(new VSpline());
|
||||
|
||||
// Take names for empty splines from donors.
|
||||
spline1->setName(spl1->name());
|
||||
|
@ -413,15 +413,15 @@ void VToolCurveIntersectAxis::InitSegments(const GOType &curveType, qreal segLen
|
|||
delete spl2;
|
||||
}
|
||||
|
||||
data->AddCurve(spline1, NULL_ID, p->id());
|
||||
data->AddCurve(spline2, NULL_ID, p->id());
|
||||
data->AddSpline(spline1, NULL_ID, p->id());
|
||||
data->AddSpline(spline2, NULL_ID, p->id());
|
||||
break;
|
||||
}
|
||||
case GOType::CubicBezierPath:
|
||||
case GOType::SplinePath:
|
||||
{
|
||||
QSharedPointer<VAbstractCurve> splP1;
|
||||
QSharedPointer<VAbstractCurve> splP2;
|
||||
QSharedPointer<VAbstractBezier> splP1;
|
||||
QSharedPointer<VAbstractBezier> splP2;
|
||||
|
||||
const auto splPath = data->GeometricObject<VAbstractCubicBezierPath>(curveId);
|
||||
VSplinePath *splPath1 = nullptr;
|
||||
|
@ -442,13 +442,13 @@ void VToolCurveIntersectAxis::InitSegments(const GOType &curveType, qreal segLen
|
|||
|
||||
if (not VFuzzyComparePossibleNulls(segLength, -1))
|
||||
{
|
||||
splP1 = QSharedPointer<VAbstractCurve>(splPath1);
|
||||
splP2 = QSharedPointer<VAbstractCurve>(splPath2);
|
||||
splP1 = QSharedPointer<VAbstractBezier>(splPath1);
|
||||
splP2 = QSharedPointer<VAbstractBezier>(splPath2);
|
||||
}
|
||||
else
|
||||
{
|
||||
splP1 = QSharedPointer<VAbstractCurve>(new VSplinePath());
|
||||
splP2 = QSharedPointer<VAbstractCurve>(new VSplinePath());
|
||||
splP1 = QSharedPointer<VAbstractBezier>(new VSplinePath());
|
||||
splP2 = QSharedPointer<VAbstractBezier>(new VSplinePath());
|
||||
|
||||
// Take names for empty spline paths from donors.
|
||||
splP1->setName(splPath1->name());
|
||||
|
@ -458,8 +458,8 @@ void VToolCurveIntersectAxis::InitSegments(const GOType &curveType, qreal segLen
|
|||
delete splPath2;
|
||||
}
|
||||
|
||||
data->AddCurve(splP1, NULL_ID, p->id());
|
||||
data->AddCurve(splP2, NULL_ID, p->id());
|
||||
data->AddSpline(splP1, NULL_ID, p->id());
|
||||
data->AddSpline(splP2, NULL_ID, p->id());
|
||||
break;
|
||||
}
|
||||
case GOType::EllipticalArc:
|
||||
|
|
|
@ -254,7 +254,7 @@ void VToolEndLine::ReadToolAttributes(const QDomElement &domElement)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolEndLine::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolEndLine *visual = qobject_cast<VisToolEndLine *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -261,7 +261,7 @@ void VToolHeight::ReadToolAttributes(const QDomElement &domElement)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolHeight::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolHeight *visual = qobject_cast<VisToolHeight *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -313,7 +313,7 @@ void VToolLineIntersectAxis::ReadToolAttributes(const QDomElement &domElement)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolLineIntersectAxis::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolLineIntersectAxis *visual = qobject_cast<VisToolLineIntersectAxis *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -295,7 +295,7 @@ void VToolNormal::ReadToolAttributes(const QDomElement &domElement)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolNormal::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolNormal *visual = qobject_cast<VisToolNormal *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -326,7 +326,7 @@ void VToolShoulderPoint::ReadToolAttributes(const QDomElement &domElement)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolShoulderPoint::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolShoulderPoint *visual = qobject_cast<VisToolShoulderPoint *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -286,7 +286,7 @@ void VToolLineIntersect::ReadToolAttributes(const QDomElement &domElement)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolLineIntersect::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolLineIntersect *visual = qobject_cast<VisToolLineIntersect *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
@ -295,7 +295,7 @@ void VToolLineIntersect::SetVisualization()
|
|||
visual->setLine1P2Id(p2Line1);
|
||||
visual->setLine2P1Id(p1Line2);
|
||||
visual->setLine2P2Id(p2Line2);
|
||||
vis->RefreshGeometry();
|
||||
visual->RefreshGeometry();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -336,7 +336,7 @@ void VToolPointFromArcAndTangent::ReadToolAttributes(const QDomElement &domEleme
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolPointFromArcAndTangent::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolPointFromArcAndTangent *visual = qobject_cast<VisToolPointFromArcAndTangent *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -323,7 +323,7 @@ void VToolPointFromCircleAndTangent::ReadToolAttributes(const QDomElement &domEl
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolPointFromCircleAndTangent::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolPointFromCircleAndTangent *visual = qobject_cast<VisToolPointFromCircleAndTangent *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -339,7 +339,7 @@ void VToolPointOfContact::ReadToolAttributes(const QDomElement &domElement)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolPointOfContact::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolPointOfContact *visual = qobject_cast<VisToolPointOfContact *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -237,7 +237,7 @@ void VToolPointOfIntersection::ReadToolAttributes(const QDomElement &domElement)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolPointOfIntersection::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolPointOfIntersection *visual = qobject_cast<VisToolPointOfIntersection *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -341,7 +341,7 @@ void VToolPointOfIntersectionArcs::ReadToolAttributes(const QDomElement &domElem
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolPointOfIntersectionArcs::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolPointOfIntersectionArcs *visual = qobject_cast<VisToolPointOfIntersectionArcs *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -362,7 +362,7 @@ void VToolPointOfIntersectionCircles::ReadToolAttributes(const QDomElement &domE
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolPointOfIntersectionCircles::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolPointOfIntersectionCircles *visual = qobject_cast<VisToolPointOfIntersectionCircles *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -404,7 +404,7 @@ void VToolPointOfIntersectionCurves::ReadToolAttributes(const QDomElement &domEl
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolPointOfIntersectionCurves::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
auto visual = qobject_cast<VisToolPointOfIntersectionCurves *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -307,7 +307,7 @@ void VToolTriangle::ReadToolAttributes(const QDomElement &domElement)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolTriangle::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolTriangle * visual = qobject_cast<VisToolTriangle *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
|
|
@ -95,7 +95,7 @@ void VAbstractPoint::ShowToolVisualization(bool show)
|
|||
{
|
||||
if (show)
|
||||
{
|
||||
if (vis == nullptr)
|
||||
if (vis.isNull())
|
||||
{
|
||||
AddVisualization<T>();
|
||||
SetVisualization();
|
||||
|
@ -111,7 +111,6 @@ void VAbstractPoint::ShowToolVisualization(bool show)
|
|||
else
|
||||
{
|
||||
delete vis;
|
||||
vis = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -319,7 +319,7 @@ void VToolLine::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
|
|||
void VToolLine::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
|
||||
{
|
||||
Q_UNUSED(event);
|
||||
if (vis == nullptr)
|
||||
if (vis.isNull())
|
||||
{
|
||||
this->setPen(QPen(CorrectColor(lineColor),
|
||||
qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor,
|
||||
|
@ -421,7 +421,7 @@ void VToolLine::ReadToolAttributes(const QDomElement &domElement)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolLine::SetVisualization()
|
||||
{
|
||||
if (vis != nullptr)
|
||||
if (not vis.isNull())
|
||||
{
|
||||
VisToolLine *visual = qobject_cast<VisToolLine *>(vis);
|
||||
SCASSERT(visual != nullptr);
|
||||
|
@ -456,7 +456,7 @@ void VToolLine::ShowVisualization(bool show)
|
|||
{
|
||||
if (show)
|
||||
{
|
||||
if (vis == nullptr)
|
||||
if (vis.isNull())
|
||||
{
|
||||
AddVisualization<VisToolLine>();
|
||||
SetVisualization();
|
||||
|
@ -472,7 +472,6 @@ void VToolLine::ShowVisualization(bool show)
|
|||
else
|
||||
{
|
||||
delete vis;
|
||||
vis = nullptr;
|
||||
hoverLeaveEvent(nullptr);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ const QString VAbstractTool::AttrInUse = QStringLiteral("inUse");
|
|||
* @param parent parent object.
|
||||
*/
|
||||
VAbstractTool::VAbstractTool(VAbstractPattern *doc, VContainer *data, quint32 id, QObject *parent)
|
||||
:VDataTool(data, parent), doc(doc), id(id), baseColor(Qt::black), vis(nullptr),
|
||||
:VDataTool(data, parent), doc(doc), id(id), baseColor(Qt::black), vis(),
|
||||
selectionType(SelectionType::ByMouseRelease)
|
||||
{
|
||||
SCASSERT(doc != nullptr);
|
||||
|
@ -94,7 +94,12 @@ VAbstractTool::VAbstractTool(VAbstractPattern *doc, VContainer *data, quint32 id
|
|||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VAbstractTool::~VAbstractTool()
|
||||
{}
|
||||
{
|
||||
if (not vis.isNull())
|
||||
{
|
||||
delete vis;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
|
|
|
@ -122,7 +122,7 @@ protected:
|
|||
/** @brief baseColor base color for tool. */
|
||||
Qt::GlobalColor baseColor;
|
||||
|
||||
Visualization *vis;
|
||||
QPointer<Visualization> vis;
|
||||
SelectionType selectionType;
|
||||
|
||||
/**
|
||||
|
@ -182,8 +182,8 @@ inline void VAbstractTool::AddVisualization()
|
|||
connect(scene, &VMainGraphicsScene::NewFactor, visual, &Visualization::SetFactor);
|
||||
scene->addItem(visual);
|
||||
|
||||
connect(visual, &Visualization::ToolTip, [=] (const QString &toolTip) {emit ToolTip(toolTip);});
|
||||
vis = visual;
|
||||
connect(vis, &Visualization::ToolTip, [=] (const QString &toolTip) {emit ToolTip(toolTip);});
|
||||
}
|
||||
|
||||
#endif // VABSTRACTTOOL_H
|
||||
|
|
|
@ -313,6 +313,8 @@ void VToolDetail::Create(DialogTool *dialog, VMainGraphicsScene *scene, VAbstrac
|
|||
det.setClosed(detail.getClosed());
|
||||
det.setSeamAllowance(detail.getSeamAllowance());
|
||||
det.setForbidFlipping(detail.getForbidFlipping());
|
||||
det.SetPatternPieceData(detail.GetPatternPieceData());
|
||||
det.SetPatternInfo(detail.GetPatternInfo());
|
||||
Create(0, det, scene, doc, data, Document::FullParse, Source::FromGui);
|
||||
}
|
||||
|
||||
|
@ -486,6 +488,7 @@ void VToolDetail::AddToFile()
|
|||
doc->SetAttribute(domData, AttrHeight, geom.GetLabelHeight());
|
||||
doc->SetAttribute(domData, AttrFont, geom.GetFontSize());
|
||||
doc->SetAttribute(domData, AttrRotation, geom.GetRotation());
|
||||
domElement.appendChild(domData);
|
||||
|
||||
// grainline
|
||||
domData = doc->createElement(VAbstractPattern::TagGrainline);
|
||||
|
|
|
@ -28,6 +28,8 @@
|
|||
|
||||
#include "vabstractsimple.h"
|
||||
|
||||
const qreal VAbstractSimple::m_defFactor = 1;
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VAbstractSimple::VAbstractSimple(quint32 id, const QColor ¤tColor, Unit patternUnit, qreal *factor,
|
||||
QObject *parent)
|
||||
|
@ -39,7 +41,12 @@ VAbstractSimple::VAbstractSimple(quint32 id, const QColor ¤tColor, Unit pa
|
|||
patternUnit(patternUnit),
|
||||
selectionType(SelectionType::ByMouseRelease),
|
||||
type(GOType::Unknown)
|
||||
{}
|
||||
{
|
||||
if (this->factor == nullptr)
|
||||
{
|
||||
this->factor = const_cast<qreal *>(&m_defFactor);
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VAbstractSimple::~VAbstractSimple()
|
||||
|
@ -71,6 +78,12 @@ QColor VAbstractSimple::GetCurrentColor() const
|
|||
return currentColor;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VAbstractSimple::SetEnabled(bool enabled)
|
||||
{
|
||||
this->enabled = enabled;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VAbstractSimple::ContextMenu(QGraphicsSceneContextMenuEvent *event)
|
||||
{
|
||||
|
|
|
@ -49,14 +49,14 @@ class VAbstractSimple : public QObject
|
|||
Q_OBJECT
|
||||
public:
|
||||
VAbstractSimple(quint32 id, const QColor ¤tColor, Unit patternUnit, qreal *factor = nullptr,
|
||||
QObject *parent = 0);
|
||||
QObject *parent = nullptr);
|
||||
virtual ~VAbstractSimple();
|
||||
|
||||
virtual void ToolSelectionType(const SelectionType &type);
|
||||
|
||||
QColor GetCurrentColor() const;
|
||||
|
||||
virtual void SetEnabled(bool enabled) { Q_UNUSED(enabled); }
|
||||
virtual void SetEnabled(bool enabled);
|
||||
|
||||
GOType GetType() const;
|
||||
void SetType(const GOType &value);
|
||||
|
@ -91,45 +91,18 @@ protected:
|
|||
template <class T>
|
||||
void SetPen(T *item, const QColor &color, qreal width);
|
||||
|
||||
template <class T>
|
||||
void SimpleChangedActivDraw(T *item, const bool &flag);
|
||||
|
||||
template <class T>
|
||||
void SetSimpleCurrentColor(T *item, const QColor &value);
|
||||
|
||||
private:
|
||||
Q_DISABLE_COPY(VAbstractSimple)
|
||||
|
||||
const static qreal m_defFactor;
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
template <class T>
|
||||
void VAbstractSimple::SetPen(T *item, const QColor &color, qreal width)
|
||||
{
|
||||
if (factor == nullptr)
|
||||
{
|
||||
item->setPen(QPen(CorrectColor(color), ToPixel(width, patternUnit), Qt::SolidLine, Qt::RoundCap));
|
||||
}
|
||||
else
|
||||
{
|
||||
item->setPen(QPen(CorrectColor(color), ToPixel(width, patternUnit)/ *factor, Qt::SolidLine, Qt::RoundCap));
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
template <class T>
|
||||
void VAbstractSimple::SimpleChangedActivDraw(T *item, const bool &flag)
|
||||
{
|
||||
enabled = flag;
|
||||
item->setEnabled(enabled);
|
||||
SetPen(item, currentColor, WidthHairLine(patternUnit));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
template <class T>
|
||||
void VAbstractSimple::SetSimpleCurrentColor(T *item, const QColor &value)
|
||||
{
|
||||
currentColor = value;
|
||||
SetPen(item, CorrectColor(currentColor), item->pen().widthF());
|
||||
SCASSERT(item);
|
||||
item->setPen(QPen(CorrectColor(color), ToPixel(width, patternUnit)/ *factor, Qt::SolidLine, Qt::RoundCap));
|
||||
}
|
||||
|
||||
#endif // VABSTRACTSIMPLE_H
|
||||
|
|
|
@ -66,18 +66,6 @@ VSimpleCurve::~VSimpleCurve()
|
|||
{
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VSimpleCurve::SetCurrentColor(const QColor &value)
|
||||
{
|
||||
SetSimpleCurrentColor(this, value);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VSimpleCurve::ChangedActivDraw(bool flag)
|
||||
{
|
||||
SimpleChangedActivDraw(this, flag);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VSimpleCurve::RefreshGeometry(const QSharedPointer<VAbstractCurve> &curve)
|
||||
{
|
||||
|
@ -85,6 +73,13 @@ void VSimpleCurve::RefreshGeometry(const QSharedPointer<VAbstractCurve> &curve)
|
|||
ShowPath();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VSimpleCurve::SetEnabled(bool enabled)
|
||||
{
|
||||
VAbstractSimple::SetEnabled(enabled);
|
||||
SetPen(this, currentColor, WidthHairLine(patternUnit));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VSimpleCurve::CurveChoosed()
|
||||
{
|
||||
|
|
|
@ -61,10 +61,9 @@ public:
|
|||
virtual int type() const Q_DECL_OVERRIDE {return Type;}
|
||||
enum { Type = UserType + static_cast<int>(Vis::SimpleCurve)};
|
||||
|
||||
void SetCurrentColor(const QColor &value);
|
||||
|
||||
void ChangedActivDraw(bool flag);
|
||||
void RefreshGeometry(const QSharedPointer<VAbstractCurve> &curve);
|
||||
|
||||
virtual void SetEnabled(bool enabled) Q_DECL_OVERRIDE;
|
||||
signals:
|
||||
/**
|
||||
* @brief Choosed send id when clicked.
|
||||
|
|
|
@ -73,18 +73,6 @@ VSimplePoint::VSimplePoint(quint32 id, const QColor ¤tColor, Unit patternU
|
|||
VSimplePoint::~VSimplePoint()
|
||||
{}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VSimplePoint::SetCurrentColor(const QColor &value)
|
||||
{
|
||||
SetSimpleCurrentColor(this, value);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VSimplePoint::ChangedActivDraw(bool flag)
|
||||
{
|
||||
SimpleChangedActivDraw(this, flag);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VSimplePoint::RefreshLine()
|
||||
{
|
||||
|
@ -97,7 +85,7 @@ void VSimplePoint::RefreshLine()
|
|||
VGObject::LineIntersectCircle(QPointF(), radius, QLineF(QPointF(), nameRec.center() - scenePos()), p1, p2);
|
||||
const QPointF pRec = VGObject::LineIntersectRect(nameRec, QLineF(scenePos(), nameRec.center()));
|
||||
lineName->setLine(QLineF(p1, pRec - scenePos()));
|
||||
SetPen(lineName, QColor(Qt::black), WidthHairLine(patternUnit));
|
||||
SetPen(lineName, Qt::black, WidthHairLine(patternUnit));
|
||||
|
||||
if (QLineF(p1, pRec - scenePos()).length() <= ToPixel(4, Unit::Mm))
|
||||
{
|
||||
|
@ -126,14 +114,7 @@ void VSimplePoint::RefreshGeometry(const VPointF &point)
|
|||
this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
||||
namePoint->blockSignals(true);
|
||||
QFont font = namePoint->font();
|
||||
if (factor == nullptr)
|
||||
{
|
||||
font.setPointSize(static_cast<qint32>(namePoint->FontSize()));
|
||||
}
|
||||
else
|
||||
{
|
||||
font.setPointSize(static_cast<qint32>(namePoint->FontSize()/ *factor));
|
||||
}
|
||||
font.setPointSize(static_cast<qint32>(namePoint->FontSize()/ *factor));
|
||||
namePoint->setFont(font);
|
||||
namePoint->setText(point.name());
|
||||
namePoint->setPos(QPointF(point.mx(), point.my()));
|
||||
|
@ -145,6 +126,9 @@ void VSimplePoint::RefreshGeometry(const VPointF &point)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VSimplePoint::SetEnabled(bool enabled)
|
||||
{
|
||||
VAbstractSimple::SetEnabled(enabled);
|
||||
SetPen(this, currentColor, WidthHairLine(patternUnit));
|
||||
SetPen(lineName, Qt::black, WidthHairLine(patternUnit));
|
||||
namePoint->setEnabled(enabled);
|
||||
}
|
||||
|
||||
|
|
|
@ -62,7 +62,6 @@ public:
|
|||
virtual int type() const Q_DECL_OVERRIDE {return Type;}
|
||||
enum { Type = UserType + static_cast<int>(Vis::SimplePoint)};
|
||||
|
||||
void ChangedActivDraw(bool flag);
|
||||
void RefreshLine();
|
||||
void RefreshGeometry(const VPointF &point);
|
||||
virtual void SetEnabled(bool enabled) Q_DECL_OVERRIDE;
|
||||
|
@ -70,8 +69,6 @@ public:
|
|||
void AllowLabelHover(bool enabled);
|
||||
void AllowLabelSelecting(bool enabled);
|
||||
virtual void ToolSelectionType(const SelectionType &type) Q_DECL_OVERRIDE;
|
||||
|
||||
void SetCurrentColor(const QColor &value);
|
||||
signals:
|
||||
/**
|
||||
* @brief Choosed send id when clicked.
|
||||
|
|
|
@ -231,7 +231,9 @@ COLLECTION_FILES += \
|
|||
$${PWD}/../../app/share/collection/Trousers/Trousers.val \
|
||||
$${PWD}/../../app/share/collection/Trousers/trousers.vit \
|
||||
$${PWD}/../../app/share/collection/Steampunk_trousers.val \
|
||||
$${PWD}/../../app/share/collection/Steampunk_trousers.vit
|
||||
$${PWD}/../../app/share/collection/Steampunk_trousers.vit \
|
||||
$${PWD}/../../app/share/collection/Basic_block_women-2016.val \
|
||||
$${PWD}/../../app/share/collection/Gent_Jacket_with_tummy.val
|
||||
|
||||
# Compilation will fail without this files after we added them to this section.
|
||||
OTHER_FILES += \
|
||||
|
|
|
@ -275,7 +275,9 @@ void TST_ValentinaCommandLine::TestOpenCollection_data() const
|
|||
QTest::newRow("TestDart") << "TestDart.val" << keyTest << true << V_EX_OK;
|
||||
QTest::newRow("MaleShirt") << "MaleShirt.val" << keyTest << true << V_EX_OK;
|
||||
QTest::newRow("Trousers") << "Trousers.val" << keyTest << true << V_EX_OK;
|
||||
QTest::newRow("Steampunk_trousers") << "Steampunk_trousers.val" << keyTest << true << V_EX_OK;
|
||||
QTest::newRow("Basic block women") << "Basic_block_women-2016.val" << keyTest << true << V_EX_OK;
|
||||
QTest::newRow("Gent Jacket with tummy") << "Gent_Jacket_with_tummy.val" << keyTest << true << V_EX_OK;
|
||||
QTest::newRow("Steampunk_trousers") << "Steampunk_trousers.val" << keyTest << true << V_EX_OK;
|
||||
#ifndef Q_OS_WIN
|
||||
QTest::newRow("patrón_blusa") << "patrón_blusa.val" << keyTest << true << V_EX_OK;
|
||||
QTest::newRow("PajamaTopWrap2") << "PajamaTopWrap2.val" << keyTest << true << V_EX_OK;
|
||||
|
|
|
@ -201,10 +201,7 @@ void TST_MeasurementRegExp::TestCheckUnderlineExists_data()
|
|||
data.insert(arc_, true);
|
||||
data.insert(spl_, true);
|
||||
data.insert(splPath, false);
|
||||
data.insert(radius_V, false);
|
||||
data.insert(radiusArc_, true);
|
||||
data.insert(angle1_V, false);
|
||||
data.insert(angle2_V, false);
|
||||
data.insert(angle1Arc_, true);
|
||||
data.insert(angle2Arc_, true);
|
||||
data.insert(angle1Spl_, true);
|
||||
|
@ -213,6 +210,10 @@ void TST_MeasurementRegExp::TestCheckUnderlineExists_data()
|
|||
data.insert(angle2SplPath, false);
|
||||
data.insert(seg_, true);
|
||||
data.insert(currentLength, false);
|
||||
data.insert(c1LengthSpl_, true);
|
||||
data.insert(c2LengthSpl_, true);
|
||||
data.insert(c1LengthSplPath, false);
|
||||
data.insert(c2LengthSplPath, false);
|
||||
|
||||
//Catch case when new internal variable appears.
|
||||
QCOMPARE(data.size(), builInVariables.size());
|
||||
|
|
Loading…
Reference in New Issue
Block a user