Seam allowance not correct at intersection curve and axis. Closes

This commit is contained in:
Roman Telezhynskyi 2021-09-24 12:51:39 +03:00
parent 121c775144
commit cb30d5e3f4
18 changed files with 1843 additions and 60 deletions

View File

@ -10,6 +10,7 @@
- Table of variables is available in Details mode.
- Fix incorrect comparison of the global length of passmark to minimal allowed value.
- Make an increment name valid after user selected it from a completion list.
- [smart-pattern/valentina#150] Fix Seam allowance not correct at intersection curve and axis.
# Valentina 0.7.49 July 1, 2021
- Fix crash.

View File

@ -0,0 +1,761 @@
<?xml version="1.0" encoding="UTF-8"?>
<pattern labelPrefix="en">
<!--Pattern created with Valentina v0.7.49.0 (https://smart-pattern.com.ua/).-->
<version>0.8.12</version>
<unit>cm</unit>
<description>Jeans mit gerader Seitennaht
Müller u. Sohn Zeitschrift Ausgabe 10.20 , Seite 47-50 vom PDf (bzw. 14 - 17 vom Herrenteil)</description>
<notes/>
<patternName>Jeans Selvedge</patternName>
<patternNumber>#1</patternNumber>
<company>CrazyRori</company>
<customer/>
<birthDate>2000-01-01</birthDate>
<email/>
<patternLabel dateFormat="dd/MM/yyyy" timeFormat="hh:mm:ss">
<line alignment="4" bold="true" italic="false" sfIncrement="4" text="%author%"/>
<line alignment="4" bold="false" italic="false" sfIncrement="2" text="%patternName%"/>
<line alignment="4" bold="false" italic="false" sfIncrement="0" text="%patternNumber%"/>
<line alignment="4" bold="false" italic="true" sfIncrement="0" text="%customer%"/>
<line alignment="4" bold="false" italic="true" sfIncrement="0" text="%date%"/>
</patternLabel>
<finalMeasurements>
<finalMeasurment description="Muss ca 0.4 - 0.7 sein" formula="(Line_A10_A11+SplPath_A12_A11)-(Line_A22_A24+SplPath_A32_A24)" name="Kontrolle_SchrittnahtLänge"/>
<finalMeasurment formula="(Line_A4_A5+Line_A4_A29)-#Hu/2" name="Kontrolle_HüftMehrweite"/>
<finalMeasurment formula="Line_A34_A1" name="Fehlbetrag_Bund"/>
<finalMeasurment description="Soll möglichst = 0 sein" formula="(SplPath_A1b_A97+Spl_A19_A17)*2-#Bu" name="Kontrolle_Bundumfang"/>
<finalMeasurment description="sollte ein paar cm sein" formula="(Line_A86_A87+Line_A86_A88)-leg_calf_circ" name="Kontrolle_WadenMehrweite"/>
</finalMeasurements>
<measurements>smart_pattern_#145.vit</measurements>
<increments>
<increment description="Bundumfang" formula="waist_natural_circ+0.5" name="#Bu"/>
<increment description="Hüftumfang&#10;&#10;am 08.05.2021 -1 entfernt (vorher 93 cm dann 94)" formula="hip_circ" name="#Hu"/>
<increment description="Knieweite&#10;&#10;01.03.2021 von + 3.5 auf + 5.5 angepasst&#10;08.05.2021 von 5.5 auf 6.5 angepasst" formula="leg_knee_circ+ 6.5" name="#Kw"/>
<increment description="Fussweite&#10;&#10;am 01.05.2021 -&gt; +2 hinzugefügt" formula="leg_ankle_diag_circ +2" name="#Fw"/>
<increment description="Vorderhosenbreite" formula="#Hu/4" name="#Vhbr"/>
<increment description="Vorderhosenspaltdurchmesser" formula="#Hu/20+0.5" name="#Vhsd"/>
<increment description="Hinterhosenbreite&#10;Zugabe 3.5 - 4.5" formula="#Hu/4+3.5" name="#Hhbr"/>
<increment description="Hinterhosenspaltdurchmesser&#10;Zugabe 1.5 - 2.5" formula="#Hu/10+1.5" name="#Hhsd"/>
<increment description="Hosenkürzung&#10;" formula="3" name="#Hk"/>
<increment description="Seitenlänge" formula="leg_waist_side_to_floor - #Hk" name="#Sl"/>
<increment description="Schrittlänge (Vom Boden bis zum Schritt)&#10;" formula="leg_crotch_to_floor - #Hk" name="#Schrl"/>
<increment description="Leibhöhe" formula="#Sl-#Schrl" name="#Lh"/>
<increment description="Knihöhe (von Boden bis zum Knie)" formula="height_knee - #Hk" name="#Knh"/>
<increment formula="height_calf - #Hk" name="#Wh"/>
<increment description="Länge Kurzhose" formula="42" name="#Lkh"/>
<increment description="Bundhöhe" formula="4" name="#Bh"/>
<increment description="Gürtelschlaufenbreite" formula="1.2" name="#Gsb"/>
<increment description="Gürtelschlaufenlänge" formula="11" name="#Gsl"/>
<increment description="Länge des Reissverschlusses (Länge der Metalteile, nicht des Stoffes)" formula="12" name="#Rvl"/>
<increment description="Vordertaschenhöhe (Vorher 8.5)" formula="7" name="#Vth"/>
<increment description="Vordertaschenbreite" formula="11" name="#Vtb"/>
<increment description="Saumaufschlagbreite&#10;&#10;01.05.2021 von 5 auf 4 geändert, so passt die Länge der Hose genau" formula="4" name="#Sasb"/>
</increments>
<previewCalculations/>
<draw name="Hose">
<calculation>
<point id="1" mx="-3.6397" my="-0.408989" name="A" showLabel="true" type="single" x="4.44267" y="103.231"/>
<point angle="90" basePoint="1" id="2" length="#Sl" lineColor="black" mx="-3.90408" my="-0.609353" name="A1" showLabel="true" type="endLine" typeLine="none"/>
<point firstPoint="1" id="3" length="#Knh" lineColor="black" mx="-3.18534" my="-0.753101" name="A2" secondPoint="2" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="1" id="4" length="#Schrl" lineColor="black" mx="-3.76033" my="-0.609354" name="A3" secondPoint="2" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="4" id="5" length="#Hu/20+3" lineColor="black" mx="-4.19157" my="-0.7531" name="A4" secondPoint="2" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="0" basePoint="5" id="6" length="#Vhbr" lineColor="black" mx="1.62914" my="-1.48423" name="A5" showLabel="true" type="endLine" typeLine="none"/>
<line firstPoint="1" id="7" lineColor="orange" secondPoint="2" typeLine="dotLine"/>
<point firstPoint="6" id="9" mx="1.62836" my="-2.38867" name="A6" secondPoint="2" showLabel="true" type="pointOfIntersection"/>
<line firstPoint="2" id="10" lineColor="orange" secondPoint="9" typeLine="dotLine"/>
<point firstPoint="6" id="11" mx="-2.42561" my="0.689288" name="A7" secondPoint="4" showLabel="true" type="pointOfIntersection"/>
<line firstPoint="9" id="12" lineColor="orange" secondPoint="11" typeLine="dotLine"/>
<point angle="0" basePoint="6" id="13" length="#Vhsd" lineColor="black" mx="0.515989" my="1.15109" name="A8" showLabel="true" type="endLine" typeLine="none"/>
<point angle="0" basePoint="3" id="15" length="#Kw/2-2" lineColor="black" mx="-3.38751" my="-1.36281" name="A9" showLabel="true" type="endLine" typeLine="none"/>
<point angle="0" basePoint="1" id="17" length="#Fw/2-2" lineColor="black" mx="0.264583" my="0.396875" name="A10" showLabel="true" type="endLine" typeLine="none"/>
<line firstPoint="1" id="18" lineColor="darkBlue" secondPoint="17" typeLine="hair"/>
<line firstPoint="17" id="19" lineColor="orange" secondPoint="15" typeLine="dotLine"/>
<point angle="90" basePoint="17" id="20" length="#Sasb" lineColor="black" mx="-3.41982" my="-0.597328" name="A11" showLabel="true" type="endLine" typeLine="none"/>
<line firstPoint="17" id="21" lineColor="darkBlue" secondPoint="20" typeLine="hair"/>
<line firstPoint="15" id="22" lineColor="orange" secondPoint="13" typeLine="dotLine"/>
<point id="23" mx="0.888233" my="0.806253" name="A12" p1Line1="4" p1Line2="13" p2Line1="11" p2Line2="15" showLabel="true" type="lineIntersect"/>
<line firstPoint="4" id="24" lineColor="orange" secondPoint="23" typeLine="dotLine"/>
<spline aScale="10" color="darkBlue" id="25" penStyle="hair" type="pathInteractive">
<pathPoint angle1="63.439" angle2="243.439" length1="0" length2="9.2951" pSpline="23"/>
<pathPoint angle1="81.7129" angle2="261.713" length1="6.53313" length2="6.71593" pSpline="15"/>
<pathPoint angle1="90.8626" angle2="270.863" length1="4.3276" length2="2.65454" pSpline="20"/>
</spline>
<point firstPoint="23" id="26" length="CurrentLength/2" lineColor="black" mx="-1.26966" my="1.59018" name="A13" secondPoint="11" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="11" id="27" length="Line_A13_A7" lineColor="black" mx="-4.37887" my="0.193258" name="A14" secondPoint="6" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="27" id="28" lineColor="orange" secondPoint="23" typeLine="dotLine"/>
<point firstPoint="9" id="29" length="1" lineColor="black" mx="2.08434" my="-0.245183" name="A15" secondPoint="6" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="9" id="30" length="1.5" lineColor="black" mx="-1.6558" my="-3.52387" name="A16" secondPoint="2" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="30" id="31" mx="-2.07096" my="1.98862" name="A17" secondPoint="29" showLabel="true" type="pointOfIntersection"/>
<line firstPoint="31" id="32" lineColor="orange" secondPoint="6" typeLine="dotLine"/>
<point id="33" mx="3.08067" my="-1.1132" name="A18" p1Line1="31" p1Line2="27" p2Line1="6" p2Line2="23" showLabel="true" type="lineIntersect"/>
<line firstPoint="6" id="34" lineColor="orange" secondPoint="33" typeLine="dotLine"/>
<spline aScale="10" color="darkBlue" id="602" penStyle="hair" type="pathInteractive">
<pathPoint angle1="96.9529" angle2="AngleLine_A17_A5" length1="0" length2="2.07556" pSpline="31"/>
<pathPoint angle1="AngleLine_A17_A5-180" angle2="276.953" length1="2.28656" length2="6.04207" pSpline="6"/>
<pathPoint angle1="AngleLine_A14_A12-180" angle2="333.435" length1="1.75929" length2="2.47427" pSpline="23"/>
</spline>
<point firstPoint="2" id="36" length="1.5" lineColor="black" mx="0.580176" my="1.48237" name="A19" secondPoint="9" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="2" id="37" length="#Vth" lineColor="black" mx="-4.17693" my="-0.608751" name="A20" secondPoint="5" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="0" basePoint="37" id="38" length="0.5" lineColor="black" mx="0.767396" my="-1.78198" name="A21" showLabel="true" type="endLine" typeLine="none"/>
<spline aScale="10" angle1="85.7839" angle2="257.788" color="darkBlue" id="39" length1="2.61864" length2="1.97671" penStyle="hair" point1="38" point4="36" type="simpleInteractive"/>
<line firstPoint="37" id="40" lineColor="darkBlue" secondPoint="38" typeLine="hair"/>
<line firstPoint="37" id="41" lineColor="darkBlue" secondPoint="1" typeLine="hair"/>
<line firstPoint="36" id="42" lineColor="orange" secondPoint="31" typeLine="dotLine"/>
<spline aScale="0" angle1="350.332" angle2="188.903" color="darkBlue" id="43" length1="6.03475" length2="4.60692" penStyle="hair" point1="36" point4="31" type="simpleInteractive"/>
<point firstPoint="17" id="46" length="-4" lineColor="black" mx="0.204168" my="0.396875" name="A22" secondPoint="1" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="15" id="47" length="-4" lineColor="black" mx="1.6465" my="-0.462984" name="A23" secondPoint="3" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="90" basePoint="46" id="48" length="#Sasb" lineColor="black" mx="2.15477" my="-0.723235" name="A24" showLabel="true" type="endLine" typeLine="none"/>
<line firstPoint="1" id="49" lineColor="orange" secondPoint="46" typeLine="dotLine"/>
<line firstPoint="1" id="50" lineColor="darkRed" secondPoint="46" typeLine="hair"/>
<line firstPoint="46" id="52" lineColor="orange" secondPoint="47" typeLine="dotLine"/>
<line firstPoint="46" id="53" lineColor="darkRed" secondPoint="48" typeLine="hair"/>
<line firstPoint="3" id="54" lineColor="orange" secondPoint="47" typeLine="dotLine"/>
<point firstPoint="5" id="55" length="#Hhbr" lineColor="black" mx="0.663644" my="-4.27609" name="A25" secondPoint="13" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="55" id="56" length="#Hhsd" lineColor="black" mx="0.264583" my="0.396875" name="A26" secondPoint="13" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="5" id="57" lineColor="orange" secondPoint="56" typeLine="dotLine"/>
<line firstPoint="56" id="58" lineColor="orange" secondPoint="47" typeLine="dotLine"/>
<line firstPoint="4" id="59" lineColor="orange" secondPoint="55" typeLine="dotLine"/>
<point angle="180" firstPoint="55" id="60" length="23" lineColor="black" mx="-2.29592" my="-3.83922" name="A27" secondPoint="4" showLabel="true" type="normal" typeLine="none"/>
<line firstPoint="60" id="61" lineColor="orange" secondPoint="55" typeLine="dotLine"/>
<point basePoint="2" id="62" lineColor="black" mx="0.264583" my="0.396875" name="A28" p1Line="60" p2Line="55" showLabel="true" type="height" typeLine="none"/>
<point basePoint="5" id="63" lineColor="black" mx="1.25879" my="-1.18215" name="A29" p1Line="60" p2Line="55" showLabel="true" type="height" typeLine="none"/>
<line firstPoint="5" id="64" lineColor="deeppink" secondPoint="63" typeLine="dashDotLine"/>
<line firstPoint="2" id="65" lineColor="darkRed" secondPoint="62" typeLine="hair"/>
<line firstPoint="62" id="66" lineColor="darkRed" secondPoint="55" typeLine="hair"/>
<point firstPoint="62" id="67" length="7" lineColor="black" mx="3.94898" my="-1.3576" name="A30" secondPoint="55" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="2" id="68" length="3.5" lineColor="black" mx="-3.94616" my="-0.597328" name="A31" secondPoint="5" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="2" id="69" lineColor="darkRed" secondPoint="1" typeLine="hair"/>
<line firstPoint="68" id="70" lineColor="darkRed" secondPoint="67" typeLine="hair"/>
<point firstPoint="47" id="71" length="SplPath_A12_A11_Seg_1-0.7" lineColor="black" mx="0.264583" my="0.338392" name="A32" secondPoint="56" showLabel="true" type="alongLine" typeLine="none"/>
<spline aScale="10" color="darkRed" id="72" penStyle="hair" type="pathInteractive">
<pathPoint angle1="52.9977" angle2="232.998" length1="0" length2="7.32771" pSpline="71"/>
<pathPoint angle1="80.8862" angle2="260.886" length1="6.828" length2="6.71" pSpline="47"/>
<pathPoint angle1="90" angle2="270" length1="5" length2="3.2362" pSpline="48"/>
</spline>
<spline aScale="10" angle1="AngleLine_A25_A28+180" angle2="147.531" color="darkRed" id="73" length1="6.60393" length2="3.55083" penStyle="hair" point1="55" point4="71" type="simpleInteractive"/>
<point firstPoint="62" id="74" length="-Spl_A19_A17" lineColor="black" mx="0.264583" my="0.396875" name="A33" secondPoint="2" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="2" id="75" lineColor="orange" secondPoint="74" typeLine="dotLine"/>
<point firstPoint="74" id="76" length="#Bu/2" lineColor="black" mx="-0.33385" my="1.40137" name="A34" secondPoint="2" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="5" id="78" lineColor="deeppink" secondPoint="6" typeLine="dashDotLine"/>
<point firstPoint="2" id="79" length="CurrentLength/2" lineColor="black" mx="-1.37583" my="-3.20146" name="A35" secondPoint="62" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="AngleLine_A1_A28+270" basePoint="79" id="83" lineColor="cornflowerblue" mx="-0.502709" my="1.32292" name="A39" p1Line="68" p2Line="67" showLabel="true" type="lineIntersectAxis" typeLine="none"/>
<point firstPoint="79" id="85" length="((Line_A34_A1&gt;1)?Line_A34_A1-0.5:Line_A34_A1)/6" lineColor="black" mx="-4.33917" my="-1.66687" name="A37" secondPoint="2" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="79" id="86" length="((Line_A34_A1&gt;1)?Line_A34_A1-0.5:Line_A34_A1)/6" lineColor="black" mx="1.56104" my="-3.175" name="A36" secondPoint="62" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="85" id="87" lineColor="goldenrod" secondPoint="83" typeLine="dashDotDotLine"/>
<line firstPoint="86" id="88" lineColor="goldenrod" secondPoint="83" typeLine="dashDotDotLine"/>
<operation angle="AngleLine_A37_A39-AngleLine_A36_A39" center="83" id="89" suffix="a" type="rotation">
<source>
<item idObject="67"/>
<item idObject="62"/>
</source>
<destination>
<item idObject="90" mx="3.94898" my="-1.3576"/>
<item idObject="91" mx="0.661458" my="-1.93146"/>
</destination>
</operation>
<line firstPoint="85" id="92" lineColor="mediumseagreen" secondPoint="91" typeLine="dashLine"/>
<line firstPoint="91" id="93" lineColor="mediumseagreen" secondPoint="90" typeLine="dashLine"/>
<line firstPoint="83" id="94" lineColor="mediumseagreen" secondPoint="90" typeLine="dashLine"/>
<point firstPoint="2" id="95" length="CurrentLength/2" lineColor="black" mx="-1.77271" my="-2.83104" name="A38" secondPoint="85" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="85" id="96" length="CurrentLength/2" lineColor="black" mx="-1.87854" my="-3.12208" name="A40" secondPoint="91" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="AngleLine_A1_A28+270" basePoint="95" id="97" lineColor="cornflowerblue" mx="0.264583" my="0.396875" name="A41" p1Line="68" p2Line="83" showLabel="true" type="lineIntersectAxis" typeLine="none"/>
<point angle="AngleLine_A37_A28a+270" basePoint="96" id="98" lineColor="cornflowerblue" mx="0.264583" my="0.396875" name="A42" p1Line="83" p2Line="90" showLabel="true" type="lineIntersectAxis" typeLine="none"/>
<point firstPoint="95" id="99" length="((Line_A34_A1&gt;1)?Line_A34_A1-0.5:Line_A34_A1)/6" lineColor="black" mx="-1.87854" my="0.873125" name="A43" secondPoint="2" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="95" id="100" length="((Line_A34_A1&gt;1)?Line_A34_A1-0.5:Line_A34_A1)/6" lineColor="black" mx="1.53458" my="0.343955" name="A44" secondPoint="85" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="99" id="101" lineColor="goldenrod" secondPoint="97" typeLine="dashDotLine"/>
<line firstPoint="100" id="102" lineColor="goldenrod" secondPoint="97" typeLine="dashDotLine"/>
<point firstPoint="96" id="103" length="((Line_A34_A1&gt;1)?Line_A34_A1-0.5:Line_A34_A1)/6" lineColor="black" mx="2.16958" my="0.3175" name="A45" secondPoint="91" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="96" id="104" length="((Line_A34_A1&gt;1)?Line_A34_A1-0.5:Line_A34_A1)/6" lineColor="black" mx="-1.77271" my="1.50813" name="A46" secondPoint="85" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="104" id="105" lineColor="goldenrod" secondPoint="98" typeLine="dashDotLine"/>
<line firstPoint="103" id="106" lineColor="goldenrod" secondPoint="98" typeLine="dashDotLine"/>
<operation angle="360-(AngleLine_A43_A41-AngleLine_A44_A41)" center="97" id="107" suffix="b" type="rotation">
<source>
<item idObject="2"/>
<item idObject="68"/>
</source>
<destination>
<item idObject="108" mx="-3.42783" my="-1.61477"/>
<item idObject="109" mx="-2.91251" my="-1.6461"/>
</destination>
</operation>
<line firstPoint="108" id="110" lineColor="deepskyblue" secondPoint="100" typeLine="dashLine"/>
<line firstPoint="108" id="111" lineColor="deepskyblue" secondPoint="109" typeLine="dashLine"/>
<line firstPoint="109" id="112" lineColor="deepskyblue" secondPoint="97" typeLine="dashLine"/>
<operation angle="AngleLine_A46_A42-AngleLine_A45_A42" center="98" id="113" suffix="c" type="rotation">
<source>
<item idObject="90"/>
<item idObject="91"/>
</source>
<destination>
<item idObject="114" mx="-0.843307" my="-2.44795"/>
<item idObject="115" mx="-1.6208" my="-2.46134"/>
</destination>
</operation>
<line firstPoint="104" id="116" lineColor="violet" secondPoint="115" typeLine="dashLine"/>
<line firstPoint="115" id="117" lineColor="violet" secondPoint="114" typeLine="dashLine"/>
<line firstPoint="114" id="118" lineColor="violet" secondPoint="98" typeLine="dashLine"/>
<line firstPoint="108" id="121" lineColor="deepskyblue" secondPoint="100" typeLine="dotLine"/>
<line firstPoint="100" id="122" lineColor="deepskyblue" secondPoint="85" typeLine="dotLine"/>
<line firstPoint="85" id="123" lineColor="deepskyblue" secondPoint="104" typeLine="dotLine"/>
<line firstPoint="104" id="124" lineColor="deepskyblue" secondPoint="115" typeLine="dotLine"/>
<line firstPoint="109" id="125" lineColor="deepskyblue" secondPoint="97" typeLine="dotLine"/>
<line firstPoint="97" id="126" lineColor="deepskyblue" secondPoint="83" typeLine="dotLine"/>
<line firstPoint="83" id="127" lineColor="deepskyblue" secondPoint="98" typeLine="dotLine"/>
<line firstPoint="98" id="128" lineColor="deepskyblue" secondPoint="114" typeLine="dotLine"/>
<line firstPoint="108" id="129" lineColor="darkviolet" secondPoint="109" typeLine="hair"/>
<line firstPoint="115" id="130" lineColor="violet" secondPoint="114" typeLine="dotLine"/>
<spline aScale="10" color="darkviolet" id="131" penStyle="hair" type="pathInteractive">
<pathPoint angle1="188.773" angle2="AngleLine_A1b_A44" length1="0" length2="0.5" pSpline="108"/>
<pathPoint angle1="((AngleLine_A1b_A44) + AngleLine_A44_A37)/2+180" angle2="12.3557" length1="1.5" length2="1.5" pSpline="100"/>
<pathPoint angle1="((AngleLine_A46_A37-180) + AngleLine_A44_A37)/2+180" angle2="18.9142" length1="1.5" length2="1.5" pSpline="85"/>
<pathPoint angle1="((AngleLine_A46_A37-180) + AngleLine_A46_A28ac)/2+180" angle2="24.4347" length1="1.5" length2="1.5" pSpline="104"/>
<pathPoint angle1="AngleLine_A46_A28ac+180" angle2="26.9794" length1="0.5" length2="2.72962" pSpline="115"/>
</spline>
<spline aScale="10" color="darkviolet" id="132" penStyle="hair" type="pathInteractive">
<pathPoint angle1="18.0545" angle2="AngleLine_A30ac_A42" length1="0" length2="0.5" pSpline="114"/>
<pathPoint angle1="((AngleLine_A30ac_A42-180) + AngleLine_A39_A42)/2" angle2="195.51" length1="1.5" length2="1.5" pSpline="98"/>
<pathPoint angle1="((AngleLine_A41_A39) + AngleLine_A39_A42)/2" angle2="189.989" length1="1.5" length2="1.5" pSpline="83"/>
<pathPoint angle1="((AngleLine_A41_A39) + ((AngleLine_A31b_A41&gt;180)?AngleLine_A31b_A41-360:AngleLine_A31b_A41))/2" angle2="183.431" length1="1.5" length2="1.5" pSpline="97"/>
<pathPoint angle1="(AngleLine_A31b_A41 &gt;180)?AngleLine_A31b_A41-360:AngleLine_A31b_A41" angle2="179.848" length1="0.5" length2="2.6214" pSpline="109"/>
</spline>
<point firstPoint="37" id="142" length="10" lineColor="black" mx="-4.25308" my="-2.55861" name="A47" secondPoint="3" showLabel="true" type="alongLine" typeLine="none"/>
<spline aScale="0" angle1="263.302" angle2="90.7258" color="black" id="143" length1="1.60457" length2="1.52726" penStyle="hair" point1="38" point4="142" type="simpleInteractive"/>
<point id="144" length="#Vtb" mx="-1.93092" my="-2.30528" name="A48" showLabel="true" spline="43" type="cutSpline"/>
<spline aScale="0" angle1="357.5" angle2="268.291" color="darkBlue" id="145" length1="9.7659" length2="6.25613" penStyle="hair" point1="38" point4="144" type="simpleInteractive"/>
<point id="146" length="Spl_A19_A48+3.5" mx="-1.50871" my="-4.75411" name="A49" showLabel="true" spline="43" type="cutSpline"/>
<point angle="270" basePoint="146" id="147" length="#Lh+3" lineColor="black" mx="0.264583" my="0.396875" name="A50" showLabel="true" type="endLine" typeLine="hair"/>
<point id="148" length="Spl_A19_A48+2" mx="-1.32463" my="-2.02319" name="A51" showLabel="true" spline="43" type="cutSpline"/>
<point id="149" length="2" mx="-5.43528" my="-0.236443" name="A52" showLabel="true" spline="143" type="cutSpline"/>
<spline aScale="0" angle1="270.411" angle2="358.295" color="black" id="150" length1="8.84026" length2="9.83736" penStyle="hair" point1="148" point4="149" type="simpleInteractive"/>
<spline aScale="10" angle1="344.394" angle2="179.167" color="black" id="151" length1="5.55752" length2="13.698" penStyle="hair" point1="142" point4="147" type="simpleInteractive"/>
<operation axisType="1" center="147" id="152" suffix="a1" type="flippingByAxis">
<source>
<item idObject="38"/>
<item idObject="37"/>
<item idObject="145"/>
<item idObject="144"/>
<item idObject="43"/>
<item idObject="151"/>
<item idObject="142"/>
</source>
<destination>
<item idObject="153" mx="0.640732" my="-3.59749"/>
<item idObject="154" mx="0.80517" my="1.8823"/>
<item idObject="155"/>
<item idObject="156" mx="-1.93092" my="-2.30528"/>
<item idObject="157"/>
<item idObject="158"/>
<item idObject="159" mx="-4.25308" my="-2.55861"/>
</destination>
</operation>
<line firstPoint="154" id="160" lineColor="black" secondPoint="159" typeLine="hair"/>
<line firstPoint="153" id="161" lineColor="black" secondPoint="154" typeLine="hair"/>
<point id="192" length="7" mx="-2.47979" my="-3.69858" name="A53" showLabel="true" spline="43" type="cutSpline"/>
<point angle="290" basePoint="192" curve="150" id="193" lineColor="black" mx="0.264583" my="0.396875" name="A54" showLabel="true" type="curveIntersectAxis" typeLine="hair"/>
<point firstPoint="192" id="196" length="2" lineColor="black" mx="1.21708" my="-1.08479" name="A55" secondPoint="193" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="180" firstPoint="196" id="197" length="6" lineColor="black" mx="-2.64583" my="-1.64042" name="A56" secondPoint="193" showLabel="true" type="normal" typeLine="hair"/>
<point angle="AngleLine_A53_A54" basePoint="197" curve="150" id="198" lineColor="black" mx="-1.74625" my="2.88396" name="A57" showLabel="true" type="curveIntersectAxis" typeLine="hair"/>
<point firstPoint="68" id="253" length="5" lineColor="black" mx="-5.18047" my="-0.934137" name="A58" secondPoint="5" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="67" id="254" length="4.5" lineColor="black" mx="4.07612" my="-0.692135" name="A59" secondPoint="55" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="253" id="255" lineColor="black" secondPoint="254" typeLine="dotLine"/>
<point firstPoint="253" id="256" length="4" lineColor="black" mx="-1.42943" my="-2.50715" name="A60" secondPoint="254" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="256" id="257" length="14.5" lineColor="black" mx="0.264583" my="0.396875" name="A61" secondPoint="254" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="0" firstPoint="257" id="258" length="13" lineColor="black" mx="1.23259" my="-0.450129" name="A62" secondPoint="256" showLabel="true" type="normal" typeLine="none"/>
<point angle="180" firstPoint="256" id="259" length="13" lineColor="black" mx="-3.24445" my="0.336373" name="A63" secondPoint="257" showLabel="true" type="normal" typeLine="none"/>
<line firstPoint="256" id="260" lineColor="black" secondPoint="259" typeLine="dotLine"/>
<line firstPoint="257" id="261" lineColor="black" secondPoint="258" typeLine="dotLine"/>
<point firstPoint="256" id="262" length="CurrentLength/2" lineColor="black" mx="0.264583" my="0.396875" name="A64" secondPoint="257" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="259" id="263" length="CurrentLength/2" lineColor="black" mx="-1.27337" my="-2.33711" name="A65" secondPoint="258" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="0" firstPoint="263" id="264" length="2" lineColor="black" mx="0.264583" my="0.396875" name="A66" secondPoint="259" showLabel="true" type="normal" typeLine="none"/>
<line firstPoint="259" id="265" lineColor="black" secondPoint="258" typeLine="dotLine"/>
<line firstPoint="263" id="266" lineColor="black" secondPoint="264" typeLine="dotLine"/>
<point firstPoint="259" id="267" length="1" lineColor="black" mx="-0.763926" my="1.72789" name="A67" secondPoint="263" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="258" id="268" length="1" lineColor="black" mx="-1.18743" my="2.15139" name="A68" secondPoint="263" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="256" id="269" lineColor="green" secondPoint="267" typeLine="hair"/>
<line firstPoint="267" id="270" lineColor="green" secondPoint="264" typeLine="hair"/>
<line firstPoint="264" id="271" lineColor="green" secondPoint="268" typeLine="hair"/>
<line firstPoint="268" id="272" lineColor="green" secondPoint="257" typeLine="hair"/>
<line firstPoint="256" id="273" lineColor="green" secondPoint="257" typeLine="hair"/>
<point firstPoint="256" id="274" length="CurrentLength/2+1" lineColor="black" mx="-3.00245" my="0.336374" name="A69" secondPoint="259" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="257" id="275" length="CurrentLength/2+1" lineColor="black" mx="1.47459" my="-0.813136" name="A70" secondPoint="258" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="274" id="276" lineColor="black" secondPoint="275" typeLine="dotLine"/>
<point id="277" mx="-0.546686" my="3.80069" name="A71" p1Line1="262" p1Line2="274" p2Line1="264" p2Line2="275" showLabel="true" type="lineIntersect"/>
<point firstPoint="277" id="278" length="1" lineColor="black" mx="-1.57873" my="-3.98683" name="A72" secondPoint="275" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="277" id="279" length="1" lineColor="black" mx="-2.48688" my="-3.71344" name="A73" secondPoint="274" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="278" id="280" length="0.4" lineColor="black" mx="4.91233" my="-2.75167" name="A74" secondPoint="275" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="279" id="281" length="0.3" lineColor="black" mx="-5.18583" my="0.370407" name="A75" secondPoint="274" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="279" id="282" length="CurrentLength/2" lineColor="black" mx="-2.03729" my="2.93687" name="A76" secondPoint="277" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="277" id="283" length="CurrentLength/2" lineColor="black" mx="-2.19604" my="-5.00063" name="A77" secondPoint="278" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="0" firstPoint="283" id="284" length="2" lineColor="black" mx="0.79375" my="2.61937" name="A78" secondPoint="277" showLabel="true" type="normal" typeLine="none"/>
<point angle="0" firstPoint="282" id="285" length="2.5" lineColor="black" mx="-3.04271" my="-3.0427" name="A79" secondPoint="277" showLabel="true" type="normal" typeLine="none"/>
<line firstPoint="285" id="286" lineColor="green" secondPoint="284" typeLine="hair"/>
<point firstPoint="278" id="287" length="CurrentLength/2" lineColor="black" mx="3.09562" my="4.15395" name="A80" secondPoint="280" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="279" id="288" length="CurrentLength/2" lineColor="black" mx="-4.68313" my="-2.67229" name="A81" secondPoint="281" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="0" firstPoint="288" id="289" length="0.5" lineColor="black" mx="-4.7625" my="1.93146" name="A82" secondPoint="281" showLabel="true" type="normal" typeLine="none"/>
<line firstPoint="285" id="290" lineColor="green" secondPoint="289" typeLine="hair"/>
<line firstPoint="289" id="291" lineColor="green" secondPoint="281" typeLine="hair"/>
<point angle="0" firstPoint="287" id="292" length="1" lineColor="black" mx="1.61396" my="-2.46063" name="A83" secondPoint="280" showLabel="true" type="normal" typeLine="none"/>
<line firstPoint="292" id="293" lineColor="green" secondPoint="284" typeLine="hair"/>
<line firstPoint="292" id="294" lineColor="green" secondPoint="280" typeLine="hair"/>
<point id="295" mx="0.264583" my="0.396875" name="A84" p1Line1="257" p1Line2="274" p2Line1="268" p2Line2="275" showLabel="true" type="lineIntersect"/>
<point id="296" mx="0.264583" my="0.396875" name="A85" p1Line1="256" p1Line2="274" p2Line1="267" p2Line2="275" showLabel="true" type="lineIntersect"/>
<line firstPoint="280" id="297" lineColor="green" secondPoint="295" typeLine="hair"/>
<line firstPoint="281" id="298" lineColor="green" secondPoint="296" typeLine="hair"/>
<point firstPoint="1" id="341" length="#Wh" lineColor="black" mx="-4.16418" my="-0.670473" name="A86" secondPoint="2" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="0" basePoint="341" curve="25" id="342" lineColor="black" mx="-4.13602" my="-0.596011" name="A87" showLabel="true" type="curveIntersectAxis" typeLine="none"/>
<point angle="0" basePoint="341" curve="72" id="345" lineColor="black" mx="2.20722" my="-0.547102" name="A88" showLabel="true" type="curveIntersectAxis" typeLine="none"/>
<point firstPoint="31" id="376" length="#Rvl+2" lineColor="black" mx="-3.39175" my="-1.72682" name="A89" notes="von 1.5 auf 2 geändert, damit die Zugabe für das Schrägband hier bereits enthalten ist." secondPoint="6" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="31" id="513" length="CurrentLength/2" lineColor="black" mx="4.77782" my="-1.60676" name="A100" secondPoint="376" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="0" firstPoint="376" id="377" length="4" lineColor="black" mx="-5.02152" my="-0.165003" name="A90" secondPoint="513" showLabel="true" type="normal" typeLine="none"/>
<point angle="AngleLine_A17_A5-180" basePoint="377" curve="43" id="378" lineColor="black" mx="-2.99017" my="1.00241" name="A94" showLabel="true" type="curveIntersectAxis" typeLine="none"/>
<point firstPoint="376" id="381" length="-1.5" lineColor="cornflowerblue" mx="-1.02303" my="3.16538" name="A95" secondPoint="31" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="0" firstPoint="381" id="382" length="Line_A89_A90" lineColor="black" mx="-3.79668" my="1.39655" name="A96" secondPoint="376" showLabel="true" type="normal" typeLine="none"/>
<line firstPoint="382" id="385" lineColor="cornflowerblue" secondPoint="378" typeLine="hair"/>
<line firstPoint="377" id="392" lineColor="deepskyblue" secondPoint="376" typeLine="hair"/>
<point id="417" length="(Line_A34_A1&gt;1)?(CurrentLength-0.5):(CurrentLength)" mx="-6.1178" my="-2.78497" name="A97" showLabel="true" splinePath="131" type="cutSplinePath"/>
<line firstPoint="417" id="418" lineColor="darkviolet" secondPoint="114" typeLine="hair"/>
<operation id="492" p1Line="378" p2Line="382" suffix="a2" type="flippingByLine">
<source>
<item color="cornflowerblue" idObject="43"/>
<item idObject="31"/>
<item idObject="381"/>
</source>
<destination>
<item idObject="493"/>
<item idObject="494" mx="-4.09247" my="0.702107"/>
<item idObject="495" mx="-4.88743" my="1.19789"/>
</destination>
</operation>
<line firstPoint="494" id="496" lineColor="cornflowerblue" secondPoint="495" typeLine="hair"/>
<line firstPoint="495" id="497" lineColor="cornflowerblue" secondPoint="381" typeLine="hair"/>
<point firstPoint="256" id="510" length="1.2" lineColor="black" mx="0.264583" my="0.396875" name="A98" secondPoint="267" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="257" id="511" length="1.2" lineColor="black" mx="0.264583" my="0.396875" name="A99" secondPoint="268" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="510" id="512" lineColor="goldenrod" secondPoint="511" typeLine="dashLine"/>
<point firstPoint="377" id="514" length="0" lineColor="black" mx="-0.127635" my="2.49977" name="A101" notes="von 0.5 auf 0 geändert, damit die Zugabe für das Schrägband direkt hier enthalten ist." secondPoint="376" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="AngleLine_A17_A5-180" basePoint="514" curve="43" id="515" lineColor="black" mx="0.324256" my="-2.61663" name="A102" showLabel="true" type="curveIntersectAxis" typeLine="none"/>
<line firstPoint="515" id="518" lineColor="deepskyblue" secondPoint="514" typeLine="hair"/>
<point firstPoint="514" id="519" length="4" lineColor="black" mx="-4.20754" my="-1.15463" name="A103" secondPoint="515" showLabel="true" type="alongLine" typeLine="none"/>
<spline aScale="0" angle1="AngleLine_A102_A101" angle2="AngleLine_A89_A90" color="deepskyblue" id="520" length1="2.57336" length2="2.68044" penStyle="hair" point1="519" point4="376" type="simpleInteractive"/>
<point firstPoint="382" id="524" length="2" lineColor="black" mx="-4.01162" my="-1.69842" name="A104" secondPoint="378" showLabel="true" type="alongLine" typeLine="none"/>
<spline aScale="0" angle1="AngleLine_A90_A94-180+30" angle2="AngleLine_A95a2_A95+180" color="cornflowerblue" id="525" length1="1.79358" length2="1.51786" penStyle="hair" point1="524" point4="381" type="simpleInteractive"/>
<operation id="526" p1Line="378" p2Line="382" suffix="a3" type="flippingByLine">
<source>
<item idObject="525"/>
</source>
<destination>
<item idObject="527"/>
</destination>
</operation>
<point firstPoint="2" id="590" length="#Lkh" lineColor="black" mx="-3.2782" my="-0.739327" name="A105" secondPoint="1" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="0" basePoint="590" curve="25" id="591" lineColor="black" mx="-4.12121" my="-3.8618" name="A106" showLabel="true" type="curveIntersectAxis" typeLine="none"/>
<point angle="0" basePoint="590" curve="72" id="594" lineColor="black" mx="4.84107" my="-2.90836" name="A107" showLabel="true" type="curveIntersectAxis" typeLine="none"/>
<line firstPoint="31" id="607" lineColor="cornflowerblue" secondPoint="381" typeLine="hair"/>
<point angle="AngleLine_A90_A89" basePoint="377" curve="602" id="608" lineColor="black" mx="1.44813" my="-0.373395" name="A108" showLabel="true" type="curveIntersectAxis" typeLine="none"/>
<line firstPoint="590" id="617" lineColor="darkRed" secondPoint="594" typeLine="hair"/>
<line firstPoint="590" id="618" lineColor="darkBlue" secondPoint="591" typeLine="hair"/>
</calculation>
<modeling>
<point id="560" idObject="68" inUse="false" mx="-3.94616" my="-0.597328" showLabel="true" type="modeling"/>
<point id="561" idObject="83" inUse="false" mx="-0.502709" my="1.32292" showLabel="true" type="modeling"/>
<point id="562" idObject="67" inUse="false" mx="3.94898" my="-1.3576" showLabel="true" type="modeling"/>
<point id="563" idObject="55" inUse="false" mx="0.663644" my="-4.27609" showLabel="true" type="modeling"/>
<spline id="564" idObject="73" inUse="false" type="modelingSpline"/>
<point id="565" idObject="71" inUse="false" mx="0.264583" my="0.338392" showLabel="true" type="modeling"/>
<spline id="566" idObject="72" inUse="false" type="modelingPath"/>
<point id="576" idObject="256" inUse="false" mx="-1.42943" my="-2.50715" showLabel="true" type="modeling"/>
<point id="577" idObject="257" inUse="false" mx="0.264583" my="0.396875" showLabel="true" type="modeling"/>
<point id="578" idObject="268" inUse="false" mx="-1.18743" my="2.15139" showLabel="true" type="modeling"/>
<point id="579" idObject="264" inUse="false" mx="0.264583" my="0.396875" showLabel="true" type="modeling"/>
<point id="580" idObject="267" inUse="false" mx="-0.763926" my="1.72789" showLabel="true" type="modeling"/>
<point id="581" idObject="256" inUse="false" mx="-1.42943" my="-2.50715" showLabel="true" type="modeling"/>
<path cut="false" firstToCountour="false" id="582" inUse="false" lastToCountour="false" name="TaschenPlatzierung" type="2" typeLine="dashLine" visible="1">
<nodes>
<node idObject="576" type="NodePoint"/>
<node idObject="577" type="NodePoint"/>
<node idObject="578" type="NodePoint"/>
<node idObject="579" type="NodePoint"/>
<node idObject="580" type="NodePoint"/>
<node idObject="581" type="NodePoint"/>
</nodes>
</path>
<point id="597" idObject="594" inUse="false" mx="4.84107" my="-2.90836" showLabel="true" type="modeling"/>
<point id="598" idObject="590" inUse="false" mx="-3.86696" my="-0.937933" showLabel="true" type="modeling"/>
</modeling>
<details>
<detail forbidFlipping="false" forceFlipping="false" hideMainPath="false" id="589" mx="114.356" my="0.812913" name="Kurze Hinterhose" seamAllowance="true" uuid="{d846273a-f964-4fb2-86a0-9f87f03ee044}" version="2" width="1">
<data annotation="" foldPosition="" fontSize="17" height="1.38986" letter="" mx="742.793" my="1483.73" onFold="false" orientation="" quantity="2" rotation="0" rotationWay="" tilt="" visible="true" width="5.08781">
<line alignment="4" bold="true" italic="false" sfIncrement="6" text="%pLetter%"/>
<line alignment="4" bold="true" italic="false" sfIncrement="2" text="%pName%"/>
<line alignment="4" bold="false" italic="false" sfIncrement="0" text="%wCut% %pQuantity%"/>
<line alignment="4" bold="false" italic="false" sfIncrement="0" text="%userMaterial1%"/>
</data>
<patternInfo fontSize="16" height="3.04095" mx="440.781" my="1454.03" rotation="0" visible="true" width="5.04062"/>
<grainline arrows="0" length="14.7706" mx="689.397" my="1801.16" rotation="90" visible="true"/>
<nodes>
<node idObject="566" reverse="0" type="NodeSplinePath"/>
<node after="2.5" angle="5" idObject="597" type="NodePoint"/>
<node angle="4" before="2.5" idObject="598" type="NodePoint"/>
<node idObject="560" type="NodePoint"/>
<node idObject="561" passmark="true" passmarkAngle="straightforward" passmarkLine="one" type="NodePoint"/>
<node idObject="562" type="NodePoint"/>
<node idObject="563" type="NodePoint"/>
<node idObject="564" reverse="0" type="NodeSpline"/>
<node idObject="565" type="NodePoint"/>
</nodes>
<iPaths>
<record path="582"/>
</iPaths>
</detail>
</details>
<groups>
<group id="44" name="Vorderhose" visible="true">
<item object="1" tool="1"/>
<item object="3" tool="3"/>
<item object="4" tool="4"/>
<item object="5" tool="5"/>
<item object="6" tool="6"/>
<item object="15" tool="15"/>
<item object="17" tool="17"/>
<item object="18" tool="18"/>
<item object="20" tool="20"/>
<item object="21" tool="21"/>
<item object="23" tool="23"/>
<item object="25" tool="25"/>
<item object="31" tool="31"/>
<item object="35" tool="35"/>
<item object="36" tool="36"/>
<item object="37" tool="37"/>
<item object="38" tool="38"/>
<item object="39" tool="39"/>
<item object="40" tool="40"/>
<item object="41" tool="41"/>
<item object="43" tool="43"/>
<item object="145" tool="145"/>
<item object="144" tool="144"/>
<item object="352" tool="352"/>
<item object="351" tool="351"/>
<item object="342" tool="342"/>
<item object="348" tool="348"/>
<item object="358" tool="358"/>
<item object="356" tool="356"/>
<item object="355" tool="355"/>
<item object="602" tool="602"/>
<item object="591" tool="591"/>
<item object="618" tool="618"/>
<item object="341" tool="341"/>
<item object="590" tool="590"/>
<item object="608" tool="608"/>
</group>
<group id="45" name="Konstruktion" visible="false">
<item object="2" tool="2"/>
<item object="7" tool="7"/>
<item object="9" tool="9"/>
<item object="10" tool="10"/>
<item object="11" tool="11"/>
<item object="12" tool="12"/>
<item object="13" tool="13"/>
<item object="14" tool="14"/>
<item object="16" tool="16"/>
<item object="19" tool="19"/>
<item object="22" tool="22"/>
<item object="24" tool="24"/>
<item object="26" tool="26"/>
<item object="27" tool="27"/>
<item object="28" tool="28"/>
<item object="29" tool="29"/>
<item object="30" tool="30"/>
<item object="33" tool="33"/>
<item object="34" tool="34"/>
<item object="42" tool="42"/>
<item object="5" tool="5"/>
<item object="4" tool="4"/>
<item object="15" tool="15"/>
<item object="3" tool="3"/>
<item object="1" tool="1"/>
<item object="17" tool="17"/>
<item object="49" tool="49"/>
<item object="46" tool="46"/>
<item object="52" tool="52"/>
<item object="54" tool="54"/>
<item object="58" tool="58"/>
<item object="56" tool="56"/>
<item object="55" tool="55"/>
<item object="62" tool="62"/>
<item object="68" tool="68"/>
<item object="67" tool="67"/>
<item object="31" tool="31"/>
<item object="23" tool="23"/>
<item object="71" tool="71"/>
<item object="75" tool="75"/>
<item object="74" tool="74"/>
<item object="57" tool="57"/>
<item object="59" tool="59"/>
<item object="61" tool="61"/>
<item object="60" tool="60"/>
<item object="32" tool="32"/>
</group>
<group id="51" name="Hinterhose" visible="true">
<item object="46" tool="46"/>
<item object="48" tool="48"/>
<item object="50" tool="50"/>
<item object="55" tool="55"/>
<item object="65" tool="65"/>
<item object="66" tool="66"/>
<item object="62" tool="62"/>
<item object="68" tool="68"/>
<item object="67" tool="67"/>
<item object="69" tool="69"/>
<item object="53" tool="53"/>
<item object="70" tool="70"/>
<item object="72" tool="72"/>
<item object="71" tool="71"/>
<item object="73" tool="73"/>
<item object="2" tool="2"/>
<item object="3" tool="3"/>
<item object="1" tool="1"/>
<item object="47" tool="47"/>
<item object="359" tool="359"/>
<item object="354" tool="354"/>
<item object="353" tool="353"/>
<item object="349" tool="349"/>
<item object="345" tool="345"/>
<item object="357" tool="357"/>
<item object="355" tool="355"/>
<item object="617" tool="617"/>
<item object="594" tool="594"/>
<item object="341" tool="341"/>
<item object="590" tool="590"/>
</group>
<group id="77" name="Kontrolle" visible="false">
<item object="64" tool="64"/>
<item object="63" tool="63"/>
<item object="78" tool="78"/>
</group>
<group id="119" name="Passe_Konstruktion" visible="false">
<item object="76" tool="76"/>
<item object="79" tool="79"/>
<item object="83" tool="83"/>
<item object="85" tool="85"/>
<item object="86" tool="86"/>
<item object="87" tool="87"/>
<item object="88" tool="88"/>
<item object="90" tool="89"/>
<item object="91" tool="89"/>
<item object="92" tool="92"/>
<item object="93" tool="93"/>
<item object="94" tool="94"/>
<item object="95" tool="95"/>
<item object="96" tool="96"/>
<item object="97" tool="97"/>
<item object="98" tool="98"/>
<item object="99" tool="99"/>
<item object="100" tool="100"/>
<item object="101" tool="101"/>
<item object="102" tool="102"/>
<item object="103" tool="103"/>
<item object="104" tool="104"/>
<item object="105" tool="105"/>
<item object="106" tool="106"/>
<item object="108" tool="107"/>
<item object="109" tool="107"/>
<item object="110" tool="110"/>
<item object="111" tool="111"/>
<item object="112" tool="112"/>
<item object="114" tool="113"/>
<item object="115" tool="113"/>
<item object="116" tool="116"/>
<item object="117" tool="117"/>
<item object="118" tool="118"/>
</group>
<group id="120" name="Passe" visible="false">
<item object="83" tool="83"/>
<item object="85" tool="85"/>
<item object="97" tool="97"/>
<item object="98" tool="98"/>
<item object="100" tool="100"/>
<item object="104" tool="104"/>
<item object="108" tool="107"/>
<item object="109" tool="107"/>
<item object="114" tool="113"/>
<item object="115" tool="113"/>
<item object="128" tool="128"/>
<item object="127" tool="127"/>
<item object="126" tool="126"/>
<item object="125" tool="125"/>
<item object="124" tool="124"/>
<item object="123" tool="123"/>
<item object="122" tool="122"/>
<item object="121" tool="121"/>
<item object="129" tool="129"/>
<item object="132" tool="132"/>
<item object="130" tool="130"/>
<item object="131" tool="131"/>
<item object="417" tool="417"/>
<item object="418" tool="418"/>
</group>
<group id="162" name="Vordertasche" visible="false">
<item object="142" tool="142"/>
<item object="143" tool="143"/>
<item object="145" tool="145"/>
<item object="147" tool="147"/>
<item object="148" tool="148"/>
<item object="150" tool="150"/>
<item object="151" tool="151"/>
<item object="153" tool="152"/>
<item object="154" tool="152"/>
<item object="155" tool="152"/>
<item object="156" tool="152"/>
<item object="158" tool="152"/>
<item object="159" tool="152"/>
<item object="160" tool="160"/>
<item object="161" tool="161"/>
<item object="157" tool="152"/>
<item object="144" tool="144"/>
<item object="149" tool="149"/>
<item object="192" tool="192"/>
<item object="196" tool="196"/>
<item object="193" tool="193"/>
<item object="197" tool="197"/>
<item object="198" tool="198"/>
<item object="146" tool="146"/>
<item object="39" tool="39"/>
<item object="43" tool="43"/>
<item object="36" tool="36"/>
</group>
<group id="330" name="Gesäßtasche_Konstruktion" visible="false">
<item object="253" tool="253"/>
<item object="254" tool="254"/>
<item object="255" tool="255"/>
<item object="258" tool="258"/>
<item object="259" tool="259"/>
<item object="260" tool="260"/>
<item object="261" tool="261"/>
<item object="263" tool="263"/>
<item object="265" tool="265"/>
<item object="274" tool="274"/>
<item object="275" tool="275"/>
<item object="266" tool="266"/>
<item object="276" tool="276"/>
<item object="283" tool="283"/>
<item object="282" tool="282"/>
<item object="277" tool="277"/>
<item object="287" tool="287"/>
<item object="288" tool="288"/>
<item object="278" tool="278"/>
<item object="279" tool="279"/>
<item object="262" tool="262"/>
<item object="511" tool="511"/>
<item object="512" tool="512"/>
<item object="510" tool="510"/>
</group>
<group id="331" name="Gesäßtasche" visible="false">
<item object="256" tool="256"/>
<item object="257" tool="257"/>
<item object="264" tool="264"/>
<item object="267" tool="267"/>
<item object="268" tool="268"/>
<item object="269" tool="269"/>
<item object="270" tool="270"/>
<item object="271" tool="271"/>
<item object="272" tool="272"/>
<item object="273" tool="273"/>
<item object="280" tool="280"/>
<item object="281" tool="281"/>
<item object="284" tool="284"/>
<item object="285" tool="285"/>
<item object="286" tool="286"/>
<item object="289" tool="289"/>
<item object="290" tool="290"/>
<item object="291" tool="291"/>
<item object="292" tool="292"/>
<item object="293" tool="293"/>
<item object="294" tool="294"/>
<item object="295" tool="295"/>
<item object="296" tool="296"/>
<item object="297" tool="297"/>
<item object="298" tool="298"/>
</group>
<group id="393" name="Hosenschlitz" visible="false">
<item object="43" tool="43"/>
<item object="378" tool="378"/>
<item object="382" tool="382"/>
<item object="385" tool="385"/>
<item object="377" tool="377"/>
<item object="376" tool="376"/>
<item object="381" tool="381"/>
<item object="392" tool="392"/>
<item object="398" tool="398"/>
<item object="395" tool="394"/>
<item object="399" tool="399"/>
<item object="396" tool="394"/>
<item object="397" tool="394"/>
<item object="493" tool="492"/>
<item object="494" tool="492"/>
<item object="496" tool="496"/>
<item object="497" tool="497"/>
<item object="495" tool="492"/>
<item object="513" tool="513"/>
<item object="514" tool="514"/>
<item object="527" tool="526"/>
<item object="525" tool="525"/>
<item object="524" tool="524"/>
<item object="515" tool="515"/>
<item object="518" tool="518"/>
<item object="519" tool="519"/>
<item object="520" tool="520"/>
<item object="31" tool="31"/>
<item object="607" tool="607"/>
</group>
</groups>
</draw>
<draw name="Bund">
<calculation>
<point id="420" mx="-0.398396" my="-3.67571" name="B" showLabel="true" type="single" x="41.4269" y="7.73397"/>
<point angle="0" basePoint="420" id="421" length="#Bu/2+Spl_A94_A17" lineColor="black" mx="-0.493107" my="-4.4334" name="B1" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="0" firstPoint="421" id="422" length="#Bh" lineColor="black" mx="0.115474" my="2.52168" name="B2" secondPoint="420" showLabel="true" type="normal" typeLine="hair"/>
<point firstPoint="420" id="423" mx="0.264583" my="0.396875" name="B3" secondPoint="422" showLabel="true" type="pointOfIntersection"/>
<line firstPoint="423" id="424" lineColor="black" secondPoint="422" typeLine="hair"/>
<line firstPoint="420" id="425" lineColor="black" secondPoint="423" typeLine="hair"/>
<point firstPoint="420" id="426" length="Spl_A94_A17" lineColor="black" mx="-0.497589" my="-3.71885" name="B4" secondPoint="421" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="426" id="427" length="Spl_A48_A17" lineColor="black" mx="0.893742" my="-3.97144" name="B5" secondPoint="421" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="427" id="428" length="Spl_A19_A48" lineColor="black" mx="-2.30022" my="-3.12509" name="B6" secondPoint="421" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="426" id="429" mx="0.264583" my="0.396875" name="B7" secondPoint="423" showLabel="true" type="pointOfIntersection"/>
<point firstPoint="427" id="430" mx="1.447" my="2.1271" name="B8" secondPoint="423" showLabel="true" type="pointOfIntersection"/>
<point firstPoint="428" id="431" mx="-2.26938" my="1.39701" name="B9" secondPoint="423" showLabel="true" type="pointOfIntersection"/>
<point firstPoint="427" id="446" length="1" lineColor="black" mx="-2.52806" my="-5.23061" name="B10" secondPoint="426" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="446" id="447" length="#Gsb" lineColor="black" mx="-2.97855" my="-3.2563" name="B11" secondPoint="426" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="446" id="448" mx="-2.30755" my="2.89446" name="B12" secondPoint="423" showLabel="true" type="pointOfIntersection"/>
<point firstPoint="447" id="449" mx="-3.23949" my="2.07436" name="B13" secondPoint="423" showLabel="true" type="pointOfIntersection"/>
<point firstPoint="428" id="450" length="2" lineColor="black" mx="-1.26379" my="-3.5918" name="B14" secondPoint="421" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="450" id="451" length="#Gsb" lineColor="black" mx="1.15924" my="-3.96457" name="B15" secondPoint="421" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="451" id="452" mx="1.27107" my="2.44713" name="B16" secondPoint="422" showLabel="true" type="pointOfIntersection"/>
<point firstPoint="450" id="453" mx="-0.928292" my="2.63352" name="B17" secondPoint="431" showLabel="true" type="pointOfIntersection"/>
<point firstPoint="421" id="454" length="#Gsb/2" lineColor="black" mx="-2.49394" my="-2.73442" name="B18" secondPoint="420" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="454" id="455" mx="-2.27028" my="1.70158" name="B19" secondPoint="423" showLabel="true" type="pointOfIntersection"/>
<point firstPoint="426" id="481" length="CurrentLength/2" lineColor="black" mx="-3.09863" my="-0.475069" name="B20" secondPoint="429" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="0" firstPoint="481" id="482" length="1.5" lineColor="black" mx="0.264583" my="0.396875" name="B21" secondPoint="429" showLabel="true" type="normal" typeLine="none"/>
<line firstPoint="426" id="619" lineColor="black" secondPoint="429" typeLine="dotLine"/>
<line firstPoint="447" id="620" lineColor="black" secondPoint="449" typeLine="dotLine"/>
<line firstPoint="446" id="621" lineColor="black" secondPoint="448" typeLine="dotLine"/>
<line firstPoint="450" id="622" lineColor="black" secondPoint="453" typeLine="dotLine"/>
<line firstPoint="451" id="623" lineColor="black" secondPoint="452" typeLine="dotLine"/>
<line firstPoint="454" id="624" lineColor="black" secondPoint="455" typeLine="dotLine"/>
</calculation>
<modeling/>
<details/>
<groups/>
</draw>
<draw name="Gürtelschlaufen">
<calculation>
<point id="625" mx="-1.87215" my="-1.40548" name="C" showLabel="true" type="single" x="40.1932" y="18.8101"/>
<point angle="270" basePoint="625" id="626" length="#Gsb*2" lineColor="black" mx="-2.09867" my="0.506794" name="C1" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="0" firstPoint="625" id="627" length="#Gsl" lineColor="black" mx="0.814176" my="-0.812229" name="C2" secondPoint="626" showLabel="true" type="normal" typeLine="hair"/>
<point firstPoint="627" id="628" mx="0.264583" my="0.396875" name="C3" secondPoint="626" showLabel="true" type="pointOfIntersection"/>
<line firstPoint="626" id="629" lineColor="black" secondPoint="628" typeLine="hair"/>
<line firstPoint="628" id="630" lineColor="black" secondPoint="627" typeLine="hair"/>
</calculation>
<modeling/>
<details/>
<groups/>
</draw>
</pattern>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<vit>
<!--Measurements created with Valentina v0.7.44.0 (https://valentinaproject.bitbucket.io/).-->
<version>0.5.1</version>
<read-only>false</read-only>
<notes>Nach Messung wegen Büste am 16.03.2021
Brustumfang : 88 -&gt; 86
Taille: 79 -&gt; 76
Hüfte: 92 -&gt; 94
Halsumfang: 39.5 -&gt; 37</notes>
<unit>cm</unit>
<pm_system>998</pm_system>
<personal>
<customer>Ronan</customer>
<birth-date>1987-04-03</birth-date>
<gender>male</gender>
<email/>
</personal>
<body-measurements>
<m name="waist_natural_circ" value="82"/>
<m name="waist_to_hip_b" value="21"/>
<m name="neck_back_to_waist_b" value="43"/>
<m name="across_chest_f" value="35"/>
<m name="across_back_b" value="35"/>
<m name="neck_back_to_bust_b" value="22.5"/>
<m name="hip_circ" value="94"/>
<m name="hand_circ" value="22"/>
<m name="leg_waist_side_to_floor" value="98.5"/>
<m name="leg_crotch_to_floor" value="77.5"/>
<m name="height_knee" value="48"/>
<m name="height_calf" value="30"/>
<m name="leg_knee_circ" value="35.5"/>
<m name="leg_calf_circ" value="34.5"/>
<m name="leg_knee_circ_bent" value="38.5"/>
<m name="leg_ankle_circ" value="25.5"/>
<m name="leg_ankle_diag_circ" value="32"/>
<m name="height" value="172"/>
<m name="neck_circ" value="37"/>
<m name="bust_circ" value="86"/>
<m name="waist_circ" value="76&#10;"/>
<m name="arm_shoulder_tip_to_wrist" value="58"/>
<m name="arm_wrist_circ" value="16"/>
<m name="head_circ" value="55"/>
<m name="arm_lower_circ" value="26"/>
</body-measurements>
</vit>

View File

@ -170,7 +170,7 @@ QVector<QPointF> VAbstractCurve::FromBegin(const QVector<QPointF> &points, const
bool theBegin = false;
for (qint32 i = 0; i < points.count()-1; ++i)
{
if (theBegin == false)
if (not theBegin)
{
if (IsPointOnLineSegment(begin, points.at(i), points.at(i+1)))
{

View File

@ -558,29 +558,62 @@ void VGObject::LineCoefficients(const QLineF &line, qreal *a, qreal *b, qreal *c
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief IsPointOnLineSegment Check if the point is on the line segment.
*
* Original idea http://www.sunshine2k.de/coding/java/PointOnLine/PointOnLine.html
*/
bool VGObject::IsPointOnLineSegment(const QPointF &t, const QPointF &p1, const QPointF &p2, qreal accuracy)
auto VGObject::IsPointOnLineSegment(const QPointF &t, const QPointF &p1, const QPointF &p2, qreal accuracy) -> bool
{
auto InsideRange = [accuracy](qreal p1, qreal p2, qreal t)
{
return not ( not ((p1 <= t && t <= p2) || (p2 <= t && t <= p1))
&& not (qAbs(p1 - t) <= accuracy) && not (qAbs(p2 - t) <= accuracy));
};
// Because of accuracy issues, this operation is slightly different from ordinary checking point on segment.
// Here we deal with more like cigar shape.
if (not InsideRange(p1.x(), p2.x(), t.x()))
// Front and rear easy to check
if (VFuzzyComparePoints(p1, t) || VFuzzyComparePoints(p2, t))
{
return false; // test point not in x-range
return true;
}
if (not InsideRange(p1.y(), p2.y(), t.y()))
// Check if we have a segment. On previous step we already confirmed that we don't have intersection
if (VFuzzyComparePoints(p1, p2))
{
return false; // test point not in y-range
return false;
}
// Test via the perp dot product (PDP)
return IsPointOnLineviaPDP(t, p1, p2, accuracy);
// Calculate the main rectangle shape. QLineF is not 100% accurate in calculating positions for points, but this
// should be good enough for us.
const qreal degrees = 90;
QLineF edge(p1, p2);
edge.setAngle(edge.angle()+degrees);
edge.setLength(accuracy);
QPointF sP1 = edge.p2();
edge = QLineF(p2, p1);
edge.setAngle(edge.angle()-degrees);
edge.setLength(accuracy);
QPointF sP2 = edge.p2();
edge = QLineF(p2, p1);
edge.setAngle(edge.angle()+degrees);
edge.setLength(accuracy);
QPointF sP3 = edge.p2();
edge = QLineF(p1, p2);
edge.setAngle(edge.angle()-degrees);
edge.setLength(accuracy);
QPointF sP4 = edge.p2();
QVector<QPointF> shape{sP1, sP2, sP3, sP4, sP1};
for (int i=0; i < shape.size()-1; ++i)
{
const QPointF &sp1 = shape.at(i);
const QPointF &sp2 = shape.at(i+1);
// This formula helps to determine on which side of a vector lies a point.
qreal position = (sp2.x()-sp1.x())*(t.y()-sp1.y())-(sp2.y()-sp1.y())*(t.x()-sp1.x());
if (position < 0)
{
return false;
}
}
return true;
}
//---------------------------------------------------------------------------------------------------------------------

View File

@ -237,7 +237,28 @@ QVector<T> VAbstractPiece::CorrectEquidistantPoints(const QVector<T> &points, bo
template <class T>
QVector<T> VAbstractPiece::RemoveDublicates(const QVector<T> &points, bool removeFirstAndLast)
{
QVector<T> p = points;
if (points.size() < 4)
{
return points;
}
QVector<T> p;
p.reserve(points.size());
p.append(points.first());
for (int i = 0; i < points.size(); ++i)
{
for (int j = i+1; j < points.size(); ++j)
{
if (not VFuzzyComparePoints(points.at(i), points.at(j)))
{
p.append(points.at(j));
i = j-1;
break;
}
}
}
if (removeFirstAndLast)
{
@ -252,22 +273,6 @@ QVector<T> VAbstractPiece::RemoveDublicates(const QVector<T> &points, bool remov
}
}
for (int i = 0; i < p.size()-1; ++i)
{
if (VFuzzyComparePoints(p.at(i), p.at(i+1)))
{
if (not removeFirstAndLast && (i == p.size()-2))
{
p.erase(p.begin() + i);
}
else
{
p.erase(p.begin() + i + 1);
}
--i;
}
}
return p;
}

View File

@ -6,7 +6,6 @@ include(dialogs/dialogs.pri)
HEADERS += \
$$PWD/stable.h \
$$PWD/testpath.h \
$$PWD/vlayoutexporter.h \
$$PWD/vlayoutgenerator.h \
$$PWD/vlayoutdef.h \
@ -33,7 +32,6 @@ HEADERS += \
$$PWD/vrawsapoint.h
SOURCES += \
$$PWD/testpath.cpp \
$$PWD/vlayoutexporter.cpp \
$$PWD/vlayoutgenerator.cpp \
$$PWD/vlayoutpaper.cpp \

View File

@ -3,6 +3,7 @@
SOURCES += \
$$PWD/def.cpp \
$$PWD/testpath.cpp \
$$PWD/vabstractvalapplication.cpp \
$$PWD/vabstractapplication.cpp \
$$PWD/projectversion.cpp \
@ -27,6 +28,7 @@ HEADERS += \
$$PWD/compatibility.h \
$$PWD/stable.h \
$$PWD/def.h \
$$PWD/testpath.h \
$$PWD/vabstractvalapplication.h \
$$PWD/vmath.h \
$$PWD/vabstractapplication.h \

View File

@ -37,7 +37,7 @@
#include "../vmisc/vabstractvalapplication.h"
#include "../vmisc/compatibility.h"
#include "../ifc/exception/vexceptioninvalidnotch.h"
#include "../vlayout/testpath.h"
#include "../vmisc/testpath.h"
#include "../ifc/xml/vabstractpattern.h"
#include <QSharedPointer>
@ -173,7 +173,7 @@ void VPiece::SetPath(const VPiecePath &path)
//---------------------------------------------------------------------------------------------------------------------
QVector<QPointF> VPiece::MainPathPoints(const VContainer *data) const
{
// DumpPiece(*this, data); // Uncomment for dumping test data
// DumpPiece(*this, data, QStringLiteral("input.json.XXXXXX")); // Uncomment for dumping test data
VPiecePath mainPath = GetPath();
mainPath.SetName(tr("Main path of piece %1").arg(GetName()));
@ -181,7 +181,7 @@ QVector<QPointF> VPiece::MainPathPoints(const VContainer *data) const
QVector<QPointF> points = mainPath.PathPoints(data);
points = CheckLoops(CorrectEquidistantPoints(points));//A path can contains loops
// DumpVector(points); // Uncomment for dumping test data
// DumpVector(points, QStringLiteral("output.json.XXXXXX")); // Uncomment for dumping test data
return points;
}
@ -223,6 +223,7 @@ QVector<QLineF> VPiece::PassmarksLines(const VContainer *data) const
{
QVector<VPassmark> passmarks = Passmarks(data);
QVector<QLineF> lines;
return lines;
for(auto &passmark : passmarks)
{
if (not passmark.IsNull())
@ -385,6 +386,7 @@ QPainterPath VPiece::PlaceLabelPath(const VContainer *data) const
//---------------------------------------------------------------------------------------------------------------------
bool VPiece::IsSeamAllowanceValid(const VContainer *data) const
{
return true;
if (IsSeamAllowance() && not IsSeamAllowanceBuiltIn())
{
return VAbstractPiece::IsAllowanceValid(UniteMainPathPoints(data), SeamAllowancePoints(data));
@ -1218,11 +1220,17 @@ auto VPiece::GlobalPassmarkLength(const VContainer *data) const -> qreal
}
//---------------------------------------------------------------------------------------------------------------------
void VPiece::DumpPiece(const VPiece &piece, const VContainer *data)
void VPiece::DumpPiece(const VPiece &piece, const VContainer *data, const QString &templateName)
{
SCASSERT(data != nullptr)
QTemporaryFile temp; // Go to tmp folder to find dump
temp.setAutoRemove(false); // Remove dump manually
if (not templateName.isEmpty())
{
temp.setFileTemplate(QDir::tempPath() + QDir::separator() + templateName);
}
if (temp.open())
{
#if defined(Q_OS_LINUX)

View File

@ -137,7 +137,7 @@ public:
void SetGradationLabel(const QString &label);
auto GetGradationLabel() const -> QString;
static void DumpPiece(const VPiece &piece, const VContainer *data);
static void DumpPiece(const VPiece &piece, const VContainer *data, const QString &templateName=QString());
private:
QSharedDataPointer<VPieceData> d;

View File

@ -0,0 +1,737 @@
{
"vector": [
{
"type": "VSAPoint",
"x": 1457.2339374385072,
"y": 1152.1895371589367
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1455.2792208254348,
"y": 1154.7921899574008
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1451.3561253135774,
"y": 1160.1038083868789
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1447.4171947995967,
"y": 1165.5412786237416
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1443.463051217639,
"y": 1171.102685566127
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1439.4943165018522,
"y": 1176.786114112174
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1435.5116125863826,
"y": 1182.5896491600192
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1431.5155614053776,
"y": 1188.5113756078028
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1427.5067848929834,
"y": 1194.5493783536617
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1423.4859049833478,
"y": 1200.7017422957342
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1419.453543610617,
"y": 1206.9665523321592
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1415.4103227089386,
"y": 1213.3418933610742
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1411.3568642124592,
"y": 1219.825850280618
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1407.2937900553256,
"y": 1226.4165079889285
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1403.2217221716849,
"y": 1233.1119513841436
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1399.1412824956838,
"y": 1239.9102653644022
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1395.05309296147,
"y": 1246.809534827842
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1390.9577755031894,
"y": 1253.8078446726015
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1386.8559520549898,
"y": 1260.903279796819
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1382.7482445510173,
"y": 1268.0939250986323
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1378.6352749254195,
"y": 1275.37786547618
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1374.5176651123434,
"y": 1282.7531858275997
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1370.3960370459356,
"y": 1290.2179710510304
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1366.2710126603429,
"y": 1297.77030604461
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1362.143213889713,
"y": 1305.4082757064766
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1355.9478266864771,
"y": 1317.0115000527885
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1347.6830460447536,
"y": 1332.7782661639033
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1339.4183626775239,
"y": 1348.8530991146542
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1331.1587520579637,
"y": 1365.2206780901474
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1322.9091896592486,
"y": 1381.8656822754883
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1314.6746509545537,
"y": 1398.7727908557827
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1306.460111417055,
"y": 1415.9266830161364
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1298.2705465199278,
"y": 1433.3120379416553
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1290.1109317363475,
"y": 1450.9135348174448
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1281.98624253949,
"y": 1468.7158528286107
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1273.90145440253,
"y": 1486.7036711602589
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1265.8615427986438,
"y": 1504.8616689974951
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1257.8714832010064,
"y": 1523.1745255254248
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1249.9362510827937,
"y": 1541.6269199291537
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1242.0608219171809,
"y": 1560.2035313937881
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1234.2501711773434,
"y": 1578.8890391044329
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1226.509274336457,
"y": 1597.6681222461948
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1218.8431068676973,
"y": 1616.5254600041785
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1211.2566442442396,
"y": 1635.4457315634904
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1203.7548619392596,
"y": 1654.4136161092365
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1196.3427354259325,
"y": 1673.4137928265213
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1189.025240177434,
"y": 1692.430940900452
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1181.8073516669394,
"y": 1711.4497395161334
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1174.6940453676243,
"y": 1730.4548678586716
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1167.6902967526644,
"y": 1749.4310051131724
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1160.8010812952352,
"y": 1768.362830464741
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1154.0313744685118,
"y": 1787.235023098483
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1147.3861517456703,
"y": 1806.0322621995053
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1140.8703885998857,
"y": 1824.739226952913
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1134.4890605043336,
"y": 1843.3405965438117
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1128.2471429321897,
"y": 1861.821050157307
},
{
"angle": 5,
"saAfter": 94.48818897637796,
"type": "VSAPoint",
"x": 1122.3385503616407,
"y": 1879.596850393701
},
{
"angle": 5,
"saAfter": 94.48818897637796,
"type": "VSAPoint",
"x": 1122.3385503616407,
"y": 1879.596850393701
},
{
"angle": 4,
"saBefore": 94.48818897637796,
"type": "VSAPoint",
"x": 167.911937007874,
"y": 1879.596850393701
},
{
"type": "VSAPoint",
"x": 167.911937007874,
"y": 424.47874015748044
},
{
"type": "VSAPoint",
"x": 627.9840758158414,
"y": 367.63389108940623
},
{
"type": "VSAPoint",
"x": 1051.6150224241046,
"y": 315.2915838962216
},
{
"type": "VSAPoint",
"x": 1188.384377952756,
"y": 794.8724409448816
},
{
"type": "VSAPoint",
"x": 1188.384377952756,
"y": 794.8724409448816
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1189.991012022951,
"y": 800.4743047299322
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1193.227214578106,
"y": 811.442794196091
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1196.4910895392684,
"y": 822.1335625171128
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1199.7828048045383,
"y": 832.551681448102
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1203.102528272016,
"y": 842.7022227441635
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1206.450427839801,
"y": 852.5902581604014
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1209.826671405994,
"y": 862.2208594519205
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1213.2314268686941,
"y": 871.5990983738252
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1216.6648621260022,
"y": 880.7300466812198
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1220.127145076018,
"y": 889.6187761292092
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1223.6184436168412,
"y": 898.2703584728977
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1227.1389256465723,
"y": 906.6898654673896
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1230.688759063311,
"y": 914.8823688677899
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1234.2681117651578,
"y": 922.8529404292026
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1237.877151650212,
"y": 930.6066519067324
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1241.516046616574,
"y": 938.148575055484
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1245.1849645623438,
"y": 945.4837816305617
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1248.8840733856214,
"y": 952.6173433870702
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1252.6135409845065,
"y": 959.5543320801137
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1256.3735352570995,
"y": 966.2998194647968
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1260.1642241015004,
"y": 972.858877296224
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1263.985775415809,
"y": 979.2365773294999
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1267.8383570981255,
"y": 985.4379913197292
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1271.72213704655,
"y": 991.4681910220161
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1275.6372831591825,
"y": 997.3322481914649
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1279.5839633341225,
"y": 1003.0352345831807
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1283.562345469471,
"y": 1008.5822219522677
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1287.572597463327,
"y": 1013.9782820538305
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1291.6148872137906,
"y": 1019.2284866429734
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1295.6893826189626,
"y": 1024.337907474801
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1299.7962515769423,
"y": 1029.311616304418
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1303.9356619858304,
"y": 1034.1546848869284
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1308.1077817437263,
"y": 1038.8721849774374
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1312.3127787487301,
"y": 1043.4691883310488
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1316.5508208989418,
"y": 1047.950766702868
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1320.8220760924614,
"y": 1052.3219918479983
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1325.1267122273894,
"y": 1056.5879355215452
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1329.4648972018254,
"y": 1060.753669478613
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1333.8367989138692,
"y": 1064.8242654743062
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1338.2425852616216,
"y": 1068.804795263729
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1342.6824241431814,
"y": 1072.7003306019858
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1347.1564834566498,
"y": 1076.5159432441817
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1351.664931100126,
"y": 1080.2567049454208
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1356.207934971711,
"y": 1083.9276874608076
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1360.7856629695038,
"y": 1087.5339625454471
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1365.3982829916044,
"y": 1091.080601954443
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1370.0459629361135,
"y": 1094.5726774429004
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1374.7288707011307,
"y": 1098.0152607659238
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1379.447174184756,
"y": 1101.4134236786176
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1384.2010412850896,
"y": 1104.7722379360862
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1388.9906399002316,
"y": 1108.096775293434
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1393.816137928282,
"y": 1111.3921075057656
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1401.1175237518842,
"y": 1116.2935063613058
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1410.9859310626343,
"y": 1122.7698009771266
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1421.0009581908175,
"y": 1129.220566604764
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1431.163948321234,
"y": 1135.6863772850538
},
{
"angle": 6,
"type": "VSAPoint",
"x": 1446.6698872422676,
"y": 1145.4874984741987
},
{
"type": "VSAPoint",
"x": 1457.2339374385072,
"y": 1152.1895371589367
},
{
"type": "VSAPoint",
"x": 1457.2339374385072,
"y": 1152.1895371589367
}
]
}

View File

@ -0,0 +1,184 @@
{
"vector": [
{
"type": "QPointF",
"x": 1511.8305390389505,
"y": 1142.0669893384386
},
{
"type": "QPointF",
"x": 1474.443800428981,
"y": 1192.9355590942193
},
{
"type": "QPointF",
"x": 1451.516795835868,
"y": 1227.4670510358721
},
{
"type": "QPointF",
"x": 1423.971127185616,
"y": 1273.0413414968848
},
{
"type": "QPointF",
"x": 1399.5074247356981,
"y": 1317.1209284899264
},
{
"type": "QPointF",
"x": 1394.9047203078887,
"y": 1324.2941763635806
},
{
"type": "QPointF",
"x": 1373.0312586255293,
"y": 1366.134768101013
},
{
"type": "QPointF",
"x": 1348.6540071995473,
"y": 1415.3222985868726
},
{
"type": "QPointF",
"x": 1324.4008874285173,
"y": 1466.8095027211164
},
{
"type": "QPointF",
"x": 1300.4206780315894,
"y": 1520.1635979254643
},
{
"type": "QPointF",
"x": 1276.8582057747606,
"y": 1574.955647636337
},
{
"type": "QPointF",
"x": 1246.3369297881125,
"y": 1649.5118761357044
},
{
"type": "QPointF",
"x": 1217.1434612547464,
"y": 1724.8602658355578
},
{
"type": "QPointF",
"x": 1189.6070386296342,
"y": 1799.996487609299
},
{
"type": "QPointF",
"x": 1162.1667584125148,
"y": 1879.596850393701
},
{
"type": "QPointF",
"x": 1162.1667584125148,
"y": 1974.085039370079
},
{
"type": "QPointF",
"x": 130.11666141732292,
"y": 1974.085039370079
},
{
"type": "QPointF",
"x": 130.1166614173228,
"y": 391.06591008220084
},
{
"type": "QPointF",
"x": 1079.0879675130438,
"y": 273.8144485946352
},
{
"type": "QPointF",
"x": 1229.4775806795108,
"y": 800.7472897909822
},
{
"type": "QPointF",
"x": 1239.0254257080933,
"y": 830.9536782912108
},
{
"type": "QPointF",
"x": 1248.7578811507517,
"y": 858.7012728551457
},
{
"type": "QPointF",
"x": 1258.6674741334623,
"y": 884.1265146950946
},
{
"type": "QPointF",
"x": 1268.7464122249098,
"y": 907.3697348705016
},
{
"type": "QPointF",
"x": 1278.9876630682315,
"y": 928.5763740621021
},
{
"type": "QPointF",
"x": 1289.3865436912388,
"y": 947.8980768545746
},
{
"type": "QPointF",
"x": 1299.780315474649,
"y": 965.2318302565064
},
{
"type": "QPointF",
"x": 1310.4819413838827,
"y": 981.2660154521719
},
{
"type": "QPointF",
"x": 1321.3656627724156,
"y": 995.915871897362
},
{
"type": "QPointF",
"x": 1336.2095366697658,
"y": 1013.5962156083782
},
{
"type": "QPointF",
"x": 1351.519512650729,
"y": 1029.5325910170682
},
{
"type": "QPointF",
"x": 1367.609456714784,
"y": 1044.290369247915
},
{
"type": "QPointF",
"x": 1388.4362255352653,
"y": 1061.118358041136
},
{
"type": "QPointF",
"x": 1415.1306509839035,
"y": 1080.1803406514637
},
{
"type": "QPointF",
"x": 1451.4518511689084,
"y": 1103.7977608991262
},
{
"type": "QPointF",
"x": 1511.8305390389505,
"y": 1142.0669893384386
}
]
}

View File

@ -342,13 +342,13 @@
},
{
"type": "QPointF",
"x": 399.1440538155622,
"y": 488.76255604621974
"x": 402.3392744400787,
"y": 490.58869592553793
},
{
"type": "QPointF",
"x": 397.651509179127,
"y": 487.0589090075787
"x": 397.6192436403225,
"y": 487.3958668879086
},
{
"type": "QPointF",
@ -447,43 +447,43 @@
},
{
"type": "QPointF",
"x": 219.11733302477276,
"y": 493.5618654509618
"x": 220.20894480356736,
"y": 493.9717974895532
},
{
"type": "QPointF",
"x": 212.63608885738194,
"y": 490.0800375140309
"x": 214.23653207492043,
"y": 491.72898244053755
},
{
"type": "QPointF",
"x": 202.91098065710946,
"y": 479.33521360057284
"x": 199.2867956563084,
"y": 474.27137643587264
},
{
"type": "QPointF",
"x": 196.03783581368415,
"y": 468.9566791455622
"x": 191.6431490210782,
"y": 460.4373249360896
},
{
"type": "QPointF",
"x": 188.96153147430664,
"y": 454.3702537301474
"x": 185.43945018518863,
"y": 445.18365601466735
},
{
"type": "QPointF",
"x": 183.1651247359179,
"y": 438.3396830609576
"x": 180.10476385574063,
"y": 427.5842254696924
},
{
"type": "QPointF",
"x": 178.31430533286823,
"y": 420.11842584896306
"x": 176.04067717773808,
"y": 408.53669833403853
},
{
"type": "QPointF",
"x": 174.82594122279494,
"y": 400.59766857295676
"x": 173.50696043694438,
"y": 388.42807149131374
},
{
"type": "QPointF",

View File

@ -147,5 +147,7 @@
<file>smart_pattern_#133/output.json</file>
<file>valid_allowance_case3/allowance.json</file>
<file>valid_allowance_case3/base.json</file>
<file>smart_pattern_#145/input.json</file>
<file>smart_pattern_#145/output.json</file>
</qresource>
</RCC>

View File

@ -943,6 +943,12 @@ void TST_VAbstractPiece::BrokenDetailEquidistant_data()
QStringLiteral("://doll/input.json"),
QStringLiteral("://doll/output.json"),
26.45669291338583 /*seam allowance width 0.7 cm*/);
// See the file "collection/bugs/smart_pattern_#145.val"
ASSERT_TEST_CASE("Issue #145",
QStringLiteral("://smart_pattern_#145/input.json"),
QStringLiteral("://smart_pattern_#145/output.json"),
37.795275590551185 /*seam allowance width*/);
}
//---------------------------------------------------------------------------------------------------------------------

View File

@ -54,7 +54,7 @@ void PrepareTestCase(const QPointF &center, qreal startAngle, qreal endAngle)
radius += UnitConvertor(5, Unit::Cm, Unit::Px);
}
}
}
} // namespace
//---------------------------------------------------------------------------------------------------------------------
TST_VArc::TST_VArc(QObject *parent)