Improve calculating notches.

This commit is contained in:
Roman Telezhynskyi 2023-04-12 21:05:29 +03:00
parent 872e50814d
commit e7a23df3e6
23 changed files with 1937 additions and 190 deletions

View File

@ -23,6 +23,7 @@
- Fix list of dimension popup list. Make sure it will always has enough space for values.
- New grainline type: Four way.
- [smart-pattern/valentina#163] Show/hide grainline when export.
- Improve calculating notches.
# Valentina 0.7.52 September 12, 2022
- Fix crash when default locale is ru.

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<pattern>
<!--Pattern created with Valentina v0.7.0.0a (https://valentinaproject.bitbucket.io/).-->
<version>0.8.5</version>
<!--Pattern created with Valentina v0.7.52.420 (https://smart-pattern.com.ua/).-->
<version>0.9.2</version>
<unit>cm</unit>
<description/>
<notes/>
@ -15,7 +15,7 @@
<line alignment="4" bold="false" italic="false" sfIncrement="0" text="Рост 110"/>
<line alignment="4" bold="false" italic="false" sfIncrement="0" text="%patternNumber%"/>
</patternLabel>
<measurements>Issue_#924.vit</measurements>
<measurements path="Issue_#924.vit"/>
<increments>
<increment description="Прибавка на уработку." formula="0.3" name="#Пур"/>
<increment description="" formula="1.6" name="#М"/>
@ -83,57 +83,17 @@
<spline id="378" idObject="20" inUse="false" type="modelingPath"/>
<point id="379" idObject="360" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="380" idObject="363" inUse="false" type="modelingSpline"/>
<point id="382" idObject="250" inUse="false" mx="1.43098" my="-2.09668" showLabel="true" type="modeling"/>
<point id="383" idObject="1" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="384" idObject="7" inUse="false" type="modelingPath"/>
<point id="385" idObject="5" inUse="false" mx="-0.602755" my="-1.78694" showLabel="true" type="modeling"/>
<point id="386" idObject="9" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="387" idObject="20" inUse="false" type="modelingPath"/>
<point id="388" idObject="360" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="389" idObject="363" inUse="false" type="modelingSpline"/>
<point id="391" idObject="250" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<point id="392" idObject="1" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="393" idObject="7" inUse="false" type="modelingPath"/>
<point id="394" idObject="5" inUse="false" mx="-0.602755" my="-1.78694" showLabel="true" type="modeling"/>
<point id="395" idObject="9" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="396" idObject="20" inUse="false" type="modelingPath"/>
<point id="397" idObject="360" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="398" idObject="363" inUse="false" type="modelingSpline"/>
<point id="400" idObject="250" inUse="false" mx="1.0768" my="-1.56539" showLabel="true" type="modeling"/>
<point id="401" idObject="1" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="402" idObject="7" inUse="false" type="modelingPath"/>
<point id="403" idObject="5" inUse="false" mx="-0.602755" my="-1.78694" showLabel="true" type="modeling"/>
<point id="404" idObject="9" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="405" idObject="20" inUse="false" type="modelingPath"/>
<point id="406" idObject="360" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="407" idObject="363" inUse="false" type="modelingSpline"/>
<point id="409" idObject="250" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<point id="410" idObject="1" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="411" idObject="7" inUse="false" type="modelingPath"/>
<point id="412" idObject="5" inUse="false" mx="-0.602755" my="-1.78694" showLabel="true" type="modeling"/>
<point id="413" idObject="9" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="414" idObject="20" inUse="false" type="modelingPath"/>
<point id="415" idObject="360" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="416" idObject="363" inUse="false" type="modelingSpline"/>
<point id="418" idObject="250" inUse="false" mx="0.663575" my="-2.98215" showLabel="true" type="modeling"/>
<point id="419" idObject="1" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="420" idObject="7" inUse="false" type="modelingPath"/>
<point id="421" idObject="5" inUse="false" mx="-0.602755" my="-1.78694" showLabel="true" type="modeling"/>
<point id="422" idObject="9" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="423" idObject="20" inUse="false" type="modelingPath"/>
<point id="424" idObject="360" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="425" idObject="363" inUse="false" type="modelingSpline"/>
<point id="427" idObject="250" inUse="false" mx="1.13583" my="-3.4544" showLabel="true" type="modeling"/>
<point id="428" idObject="1" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="429" idObject="7" inUse="false" type="modelingPath"/>
<point id="430" idObject="5" inUse="false" mx="-0.602755" my="-1.78694" showLabel="true" type="modeling"/>
<point id="431" idObject="9" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="432" idObject="20" inUse="false" type="modelingPath"/>
<point id="433" idObject="360" inUse="false" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="434" idObject="363" inUse="false" type="modelingSpline"/>
<point id="435" idObject="250" inUse="true" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<point id="436" idObject="1" inUse="true" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="437" idObject="7" inUse="true" type="modelingPath"/>
<point id="438" idObject="5" inUse="true" mx="-0.602755" my="-1.78694" showLabel="true" type="modeling"/>
<point id="439" idObject="9" inUse="true" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="440" idObject="20" inUse="true" type="modelingPath"/>
<point id="441" idObject="360" inUse="true" mx="0.132292" my="0.264583" showLabel="true" type="modeling"/>
<spline id="442" idObject="363" inUse="true" type="modelingSpline"/>
</modeling>
<details>
<detail forbidFlipping="false" forceFlipping="false" hideMainPath="false" id="381" mx="0.851574" my="-55.8515" name="Test 1" seamAllowance="true" version="2" width="1">
<detail forbidFlipping="false" forceFlipping="false" hideMainPath="false" id="381" mx="0.851574" my="-55.8515" name="Test 1" seamAllowance="true" uuid="{7672adb2-965d-4d68-80f1-0bdd8436442b}" version="2" width="1">
<data annotation="" foldPosition="" fontSize="0" height="1" letter="" mx="0" my="0" onFold="false" orientation="" quantity="1" rotation="0" rotationWay="" tilt="" visible="false" width="1"/>
<patternInfo fontSize="0" height="1" mx="0" my="0" rotation="0" visible="false" width="1"/>
<grainline arrows="0" length="1" mx="0" my="0" rotation="90" visible="false"/>
@ -148,6 +108,21 @@
<node idObject="380" reverse="1" type="NodeSpline"/>
</nodes>
</detail>
<detail forbidFlipping="false" forceFlipping="false" hideMainPath="false" id="443" mx="24.1526" my="-56.1243" name="Test 2" seamAllowance="true" sewLineOnDrawing="false" uuid="{6d256c5f-6ab0-4df1-be6d-fe62c0b0a101}" version="2" width="1">
<data annotation="" foldPosition="" fontSize="0" height="1" letter="" mx="0" my="0" onFold="false" orientation="" quantity="1" rotation="0" rotationWay="" tilt="" visible="false" width="1"/>
<patternInfo fontSize="0" height="1" mx="0" my="0" rotation="0" visible="false" width="1"/>
<grainline arrows="0" length="1" mx="0" my="0" rotation="90" visible="false"/>
<nodes>
<node after="1" before="1" idObject="435" passmark="true" passmarkAngle="bisector" passmarkLine="tMark" type="NodePoint"/>
<node after="1" before="1" idObject="436" type="NodePoint"/>
<node idObject="437" reverse="1" type="NodeSplinePath"/>
<node idObject="438" passmark="false" passmarkAngle="intersection2" passmarkLine="one" type="NodePoint"/>
<node idObject="439" type="NodePoint"/>
<node idObject="440" reverse="0" type="NodeSplinePath"/>
<node idObject="441" type="NodePoint"/>
<node idObject="442" reverse="1" type="NodeSpline"/>
</nodes>
</detail>
</details>
<groups/>
</draw>

View File

@ -0,0 +1,351 @@
<?xml version="1.0" encoding="UTF-8"?>
<pattern labelPrefix="ru">
<!--Pattern created with Valentina v0.7.52.420 (https://smart-pattern.com.ua/).-->
<version>0.9.2</version>
<unit>cm</unit>
<description/>
<notes/>
<patternLabel>
<line alignment="0" bold="true" italic="false" sfIncrement="5" text="%pFileName%"/>
<line alignment="0" bold="false" italic="false" sfIncrement="0" text="%pName%"/>
<line alignment="0" bold="false" italic="false" sfIncrement="0" text="2 детали"/>
</patternLabel>
<measurements path="incorrect_notch.vit"/>
<increments>
<increment description="Прибавка на свободу облегания" formula="20" name="#Прибавка_1"/>
</increments>
<previewCalculations>
<increment formula="neck_circ/6+1" name="#Шгорл"/>
<increment formula="neck_back_to_waist_b-neck_side_to_waist_b" name="#Росток"/>
</previewCalculations>
<draw name="Основа">
<calculation>
<point id="1" mx="0.264583" my="-2.16291" name="О" showLabel="true" type="single" x="0" y="0"/>
<point angle="270" basePoint="1" id="2" length="neck_back_to_waist_b" lineColor="black" mx="0.264583" my="0.396875" name="Т" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="270" basePoint="2" id="3" length="@Б" lineColor="black" mx="0.264583" my="0.396875" name="Б" showLabel="true" type="endLine" typeLine="hair"/>
<point firstPoint="1" id="4" length="CurrentLength/2" lineColor="black" mx="0.264583" my="0.396875" name="Г" secondPoint="2" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="1" id="5" length="@Ди" lineColor="black" mx="0.395436" my="-2.08933" name="Н" secondPoint="3" showLabel="true" type="alongLine" typeLine="hair"/>
<point angle="0" basePoint="1" id="6" length="#Шгорл" lineColor="black" mx="0.264583" my="0.396875" name="А1" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="90" basePoint="6" id="7" length="neck_side_to_waist_b-neck_back_to_waist_b" lineColor="black" mx="0.264583" my="0.240661" name="Р" showLabel="true" type="endLine" typeLine="hair"/>
<point firstPoint="1" id="8" length="width_shoulder/2" lineColor="black" mx="-0.162048" my="-2.16291" name="П" secondPoint="6" showLabel="true" type="alongLine" typeLine="hair"/>
<point angle="0" basePoint="4" id="9" length="(bust_circ+#Прибавка_1)/4" lineColor="black" mx="-0.661136" my="0.396875" name="Г1" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="0" basePoint="3" id="10" length="(@Об+#Прибавка_1)/4" lineColor="black" mx="-2.09077" my="0.527728" name="Б1" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="0" basePoint="5" id="11" length="Line_Б_Б1" lineColor="black" mx="-2.22162" my="-2.08933" name="Н1" showLabel="true" type="endLine" typeLine="hair"/>
<line firstPoint="10" id="12" lineColor="black" secondPoint="11" typeLine="hair"/>
<line firstPoint="9" id="13" lineColor="black" secondPoint="10" typeLine="dotLine"/>
<point angle="270" basePoint="8" id="14" length="1.5" lineColor="black" mx="0.264583" my="0.396875" name="П1" showLabel="true" type="endLine" typeLine="hair"/>
<point firstPoint="7" id="15" length="@Др" lineColor="blue" mx="0.264583" my="0.396875" name="Р1" secondPoint="14" showLabel="true" type="alongLine" typeLine="hair"/>
<point angle="0" firstPoint="15" id="16" length="@Шр/2" lineColor="black" mx="0.918848" my="-1.95848" name="Р2" secondPoint="14" showLabel="true" type="normal" typeLine="hair"/>
<point firstPoint="9" id="17" length="8" lineColor="black" mx="-1.7061" my="-0.0486005" name="П2" secondPoint="10" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="0" firstPoint="16" id="18" length="23" lineColor="black" mx="-0.389682" my="-2.22018" name="Р3" secondPoint="15" showLabel="true" type="normal" typeLine="hair"/>
<spline aScale="0" angle1="77-90" angle2="AngleLine_Р2_Р3+3" color="black" id="19" length1="3" length2="9" penStyle="hair" point1="17" point4="18" type="simpleInteractive"/>
<point firstPoint="14" id="20" length="8" lineColor="black" mx="0.264583" my="0.396875" name="П3" secondPoint="15" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="20" id="21" lineColor="black" secondPoint="17" typeLine="dotLine"/>
<point firstPoint="17" id="22" length="CurrentLength/3" lineColor="black" mx="-0.891388" my="-2.20406" name="П4" secondPoint="20" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="180" basePoint="22" id="23" length="1.5" lineColor="black" mx="-0.542473" my="0.341082" name="П5" showLabel="true" type="endLine" typeLine="hair"/>
<spline aScale="0" color="blue" id="24" penStyle="hair" type="pathInteractive">
<pathPoint angle1="80.1807" angle2="AngleLine_П1_П3-90" length1="0" length2="3" pSpline="20"/>
<pathPoint angle1="90" angle2="270" length1="1" length2="1" pSpline="23"/>
<pathPoint angle1="180" angle2="0" length1="1" length2="0.947892" pSpline="17"/>
</spline>
<point basePoint="17" id="25" lineColor="black" mx="0.264583" my="0.396875" name="О1" p1Line="20" p2Line="15" showLabel="true" type="height" typeLine="dotLine"/>
<point angle="0" basePoint="22" id="26" length="1.5" lineColor="black" mx="-0.62339" my="-0.0737702" name="П6" showLabel="true" type="endLine" typeLine="hair"/>
<spline aScale="0" color="blue" id="27" penStyle="hair" type="pathInteractive">
<pathPoint angle1="257" angle2="Angle1Spl_П2_Р3+90" length1="0" length2="3" pSpline="17"/>
<pathPoint angle1="267" angle2="87" length1="0.5" length2="1" pSpline="26"/>
<pathPoint angle1="AngleLine_П1_П3-90" angle2="77.0054" length1="7" length2="1.08338" pSpline="20"/>
</spline>
<point firstPoint="7" id="28" length="3" lineColor="black" mx="-0.19741" my="0.674071" name="А2" secondPoint="14" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="1" id="29" length="0.5" lineColor="black" mx="0.264583" my="0.254665" name="А3" secondPoint="4" showLabel="true" type="alongLine" typeLine="none"/>
<spline aScale="0" angle1="360" angle2="AngleLine_А2_П1-90" color="blue" id="30" length1="5" length2="2" penStyle="hair" point1="29" point4="28" type="simpleInteractive"/>
<point firstPoint="6" id="31" length="CurrentLength+2" lineColor="black" mx="0.32244" my="-0.239556" name="А4" secondPoint="7" showLabel="true" type="alongLine" typeLine="hair"/>
<line firstPoint="31" id="32" lineColor="darkRed" secondPoint="20" typeLine="hair"/>
<point firstPoint="31" id="33" length="3" lineColor="black" mx="-0.0238379" my="0.185293" name="А5" secondPoint="20" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="1" id="34" length="7" lineColor="black" mx="0.264583" my="0.396875" name="А6" secondPoint="4" showLabel="true" type="alongLine" typeLine="none"/>
<spline aScale="0" angle1="0" angle2="AngleLine_А5_П3-90" color="darkRed" id="35" length1="5.5" length2="3.5" penStyle="hair" point1="34" point4="33" type="simpleInteractive"/>
<point firstPoint="22" id="36" length="CurrentLength+0.5" lineColor="black" mx="-2.04971" my="-1.16528" name="П7" secondPoint="23" showLabel="true" type="alongLine" typeLine="hair"/>
<point firstPoint="22" id="37" length="CurrentLength+0.5" lineColor="black" mx="0.32244" my="-1.68599" name="П8" secondPoint="26" showLabel="true" type="alongLine" typeLine="none"/>
<spline aScale="0" color="darkRed" duplicate="1" id="38" penStyle="hair" type="pathInteractive">
<pathPoint angle1="77.0054" angle2="AngleLine_П1_П3-90" length1="0" length2="3" pSpline="20"/>
<pathPoint angle1="90" angle2="270" length1="1" length2="1" pSpline="36"/>
<pathPoint angle1="180" angle2="0" length1="1.5" length2="0" pSpline="17"/>
</spline>
<spline aScale="0" color="darkRed" duplicate="1" id="39" penStyle="hair" type="pathInteractive">
<pathPoint angle1="257" angle2="Angle1Spl_П2_Р3+90" length1="0" length2="3" pSpline="17"/>
<pathPoint angle1="280" angle2="100" length1="1.5" length2="2" pSpline="37"/>
<pathPoint angle1="AngleLine_П1_П3-90" angle2="77.0054" length1="7.5" length2="1.59694" pSpline="20"/>
</spline>
<point firstPoint="15" id="40" length="20" lineColor="black" mx="0.264583" my="0.396875" name="Р4" secondPoint="25" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="16" id="41" length="Line_Р1_Р4" lineColor="black" mx="0.787995" my="-1.82762" name="Р5" secondPoint="18" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="40" id="42" lineColor="black" secondPoint="41" typeLine="hair"/>
<operation id="43" p1Line="15" p2Line="16" suffix="а1" type="flippingByLine">
<source>
<item idObject="40"/>
<item idObject="41"/>
</source>
<destination>
<item idObject="44" mx="-3.661" my="0.0043162"/>
<item idObject="45" mx="-2.48333" my="-2.7436"/>
</destination>
</operation>
<line firstPoint="15" id="46" lineColor="black" secondPoint="44" typeLine="hair"/>
<line firstPoint="44" id="47" lineColor="black" secondPoint="45" typeLine="hair"/>
<line firstPoint="45" id="48" lineColor="black" secondPoint="16" typeLine="hair"/>
<point firstPoint="33" id="49" length="4" lineColor="black" mx="-1.76564" my="-0.105088" name="А7" secondPoint="20" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="5" id="50" length="6" lineColor="black" mx="-1.95992" my="-1.69677" name="Н2" secondPoint="11" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="4" id="51" length="6" lineColor="black" mx="0.264583" my="0.396875" name="Г2" secondPoint="9" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="51" id="52" lineColor="darkRed" secondPoint="50" typeLine="hair"/>
<spline aScale="0" angle1="AngleLine_А4_П3-90" angle2="90" color="darkRed" id="53" length1="3" length2="7" penStyle="hair" point1="49" point4="51" type="simpleInteractive"/>
<point firstPoint="28" id="54" length="4" lineColor="black" mx="-0.00215062" my="0.704446" name="А8" secondPoint="14" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="29" id="55" length="4" lineColor="black" mx="0.264583" my="0.396875" name="А9" secondPoint="4" showLabel="true" type="alongLine" typeLine="none"/>
<spline aScale="0" angle1="0" angle2="AngleLine_А2_П1-90" color="blue" id="56" length1="13.5" length2="3" penStyle="hair" point1="55" point4="54" type="simpleInteractive"/>
<operation id="552" p1Line="20" p2Line="44" suffix="а2" type="flippingByLine">
<source>
<item idObject="45"/>
<item idObject="16"/>
<item idObject="41"/>
<item idObject="18"/>
<item idObject="19"/>
<item idObject="17"/>
<item idObject="37"/>
</source>
<destination>
<item idObject="553" mx="-5.23124" my="0.135169"/>
<item idObject="554" mx="0.264583" my="0.396875"/>
<item idObject="555" mx="0.264583" my="0.396875"/>
<item idObject="556" mx="0.264583" my="0.396875"/>
<item idObject="557"/>
<item idObject="558" mx="0.120087" my="0.396875"/>
<item idObject="559" mx="0.32244" my="-1.68599"/>
</destination>
</operation>
<line firstPoint="44" id="560" lineColor="black" secondPoint="553" typeLine="hair"/>
<line firstPoint="553" id="561" lineColor="black" secondPoint="554" typeLine="hair"/>
<line firstPoint="554" id="562" lineColor="black" secondPoint="555" typeLine="hair"/>
<line firstPoint="555" id="563" lineColor="black" secondPoint="556" typeLine="hair"/>
<line firstPoint="554" id="564" lineColor="black" secondPoint="15" typeLine="hair"/>
<line firstPoint="555" id="565" lineColor="black" secondPoint="40" typeLine="hair"/>
<line firstPoint="558" id="566" lineColor="black" secondPoint="25" typeLine="dotLine"/>
<operation id="567" p1Line="20" p2Line="25" suffix="а3" type="flippingByLine">
<source>
<item idObject="39"/>
</source>
<destination>
<item idObject="568"/>
</destination>
</operation>
<point angle="0" basePoint="2" id="598" length="30.492" lineColor="black" mx="-1.49099" my="0.304476" name="Т1" showLabel="true" type="endLine" typeLine="hair"/>
<line firstPoint="17" id="607" lineColor="black" secondPoint="598" typeLine="hair"/>
<line firstPoint="598" id="608" lineColor="black" secondPoint="10" typeLine="hair"/>
</calculation>
<modeling>
<point id="286" idObject="29" inUse="false" mx="0.264583" my="0.254665" showLabel="true" type="modeling"/>
<spline id="287" idObject="30" inUse="false" type="modelingSpline"/>
<point id="288" idObject="54" inUse="false" mx="-0.155936" my="0.396875" showLabel="true" type="modeling"/>
<point id="289" idObject="20" inUse="false" mx="-2.44" my="0.396875" showLabel="true" type="modeling"/>
<spline id="290" idObject="24" inUse="false" type="modelingPath"/>
<point id="291" idObject="23" inUse="false" mx="-2.61069" my="-1.09076" showLabel="true" type="modeling"/>
<spline id="292" idObject="24" inUse="false" type="modelingPath"/>
<point id="293" idObject="17" inUse="false" mx="0.120087" my="0.396875" showLabel="true" type="modeling"/>
<point id="294" idObject="10" inUse="false" mx="0.264583" my="0.396875" showLabel="true" type="modeling"/>
<point id="295" idObject="11" inUse="false" mx="0.264583" my="0.396875" showLabel="true" type="modeling"/>
<point id="297" idObject="5" inUse="false" mx="0.264583" my="0.396875" showLabel="true" type="modeling"/>
<point id="298" idObject="55" inUse="false" mx="0.264583" my="0.396875" showLabel="true" type="modeling"/>
<spline id="300" idObject="56" inUse="false" type="modelingSpline"/>
<path cut="false" firstToContour="false" id="301" inUse="false" lastToContour="false" name="Безымянный контур" type="2" typeLine="hair" visible="1">
<nodes>
<node idObject="300" reverse="0" type="NodeSpline"/>
</nodes>
</path>
<point id="307" idObject="28" inUse="false" mx="0.264583" my="0.396875" showLabel="true" type="modeling"/>
<point id="599" idObject="2" inUse="false" mx="0.264583" my="0.396875" showLabel="true" type="modeling"/>
<point id="600" idObject="598" inUse="false" mx="0.264583" my="0.396875" showLabel="true" type="modeling"/>
<path cut="false" firstToContour="false" id="601" inUse="false" lastToContour="false" name="Линия талии" type="2" typeLine="hair" visible="1">
<nodes>
<node idObject="599" type="NodePoint"/>
<node idObject="600" type="NodePoint"/>
</nodes>
</path>
<point id="605" idObject="598" inUse="false" mx="-1.96272" my="0.396875" showLabel="true" type="modeling"/>
</modeling>
<details>
<detail forbidFlipping="false" forceFlipping="false" hideMainPath="false" id="299" mx="-35.0996" my="-37.4043" name="Спинка" seamAllowance="true" sewLineOnDrawing="false" uuid="{841e06cc-d26d-4443-8ac1-29e1458ece7a}" version="2" width="1">
<data annotation="" foldPosition="" fontSize="0" height="3" letter="" mx="259.229" my="233.731" onFold="false" orientation="" quantity="1" rotation="0" rotationWay="" tilt="" visible="true" width="7">
<line alignment="0" bold="true" italic="false" sfIncrement="5" text="%pFileName%"/>
<line alignment="0" bold="false" italic="false" sfIncrement="0" text="%pName%"/>
<line alignment="0" bold="false" italic="false" sfIncrement="0" text="деталь со сгибом"/>
</data>
<patternInfo fontSize="0" height="1" mx="0" my="0" rotation="0" visible="false" width="1"/>
<grainline arrows="0" length="1" mx="0" my="0" rotation="90" visible="false"/>
<nodes>
<node idObject="605" type="NodePoint"/>
<node idObject="294" type="NodePoint"/>
<node idObject="295" passmark="false" passmarkAngle="intersection" passmarkLine="one" type="NodePoint"/>
<node after="0" before="1" idObject="297" type="NodePoint"/>
<node after="0" before="0" idObject="298" type="NodePoint"/>
<node before="0" idObject="286" passmark="false" passmarkAngle="intersection" passmarkLine="one" type="NodePoint"/>
<node idObject="287" reverse="0" type="NodeSpline"/>
<node idObject="307" passmark="false" passmarkAngle="intersection" passmarkLine="one" type="NodePoint"/>
<node idObject="288" type="NodePoint"/>
<node idObject="289" passmark="false" passmarkAngle="intersection" passmarkLine="one" type="NodePoint"/>
<node idObject="290" reverse="0" type="NodeSplinePath"/>
<node idObject="291" type="NodePoint"/>
<node idObject="292" reverse="0" type="NodeSplinePath"/>
<node idObject="293" passmark="true" passmarkAngle="intersection" passmarkLine="one" showSecondPassmark="false" type="NodePoint"/>
</nodes>
<iPaths>
<record path="301"/>
<record path="601"/>
</iPaths>
</detail>
</details>
<groups/>
</draw>
<draw name="капюшон">
<calculation>
<point id="57" mx="0.264583" my="0.396875" name="К" showLabel="true" type="single" x="66.6137" y="82.4832"/>
<point angle="90" basePoint="57" id="58" length="9" lineColor="black" mx="0.264583" my="0.396875" name="К1" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="180" basePoint="58" id="59" length="3" lineColor="black" mx="0.264583" my="0.396875" name="К2" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="180" basePoint="57" id="60" length="Spl_А3_А2+Spl_А6_А5" lineColor="black" mx="-0.57745" my="-2.06908" name="К3" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="135" basePoint="60" id="61" length="9" lineColor="black" mx="0.788326" my="-0.794175" name="К4" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="180" basePoint="59" id="62" length="14.3972" lineColor="black" mx="0.264583" my="-2.59497" name="К5" showLabel="true" type="endLine" typeLine="dotLine"/>
<point angle="270" basePoint="62" id="63" length="2" lineColor="black" mx="-0.397015" my="0.216439" name="К6" showLabel="true" type="endLine" typeLine="dotLine"/>
<spline aScale="0" color="black" id="64" penStyle="hair" type="pathInteractive">
<pathPoint angle1="225" angle2="45" length1="0" length2="3" pSpline="60"/>
<pathPoint angle1="205" angle2="25" length1="5" length2="3.5" pSpline="63"/>
<pathPoint angle1="180" angle2="0" length1="3.5" length2="1.52986" pSpline="59"/>
</spline>
<point id="65" length="CurrentLength-Spl_А3_А2" mx="-0.818031" my="-1.8285" name="К7" showLabel="true" splinePath="64" type="cutSplinePath"/>
<point angle="90" basePoint="65" id="66" length="@Дгол/2" lineColor="black" mx="0.420874" my="-1.71305" name="К8" showLabel="true" type="endLine" typeLine="dotLine"/>
<point angle="90" basePoint="58" id="67" length="35.1325" lineColor="black" mx="0.499019" my="-1.71305" name="К9" showLabel="true" type="endLine" typeLine="hair"/>
<point basePoint="66" id="68" lineColor="black" mx="0.264583" my="0.396875" name="К10" p1Line="67" p2Line="58" showLabel="true" type="height" typeLine="hair"/>
<point firstPoint="68" id="69" length="@Огол/2" lineColor="black" mx="-0.126144" my="-2.18192" name="К11" secondPoint="66" showLabel="true" type="alongLine" typeLine="hair"/>
<point firstPoint="68" id="70" length="CurrentLength/2" lineColor="black" mx="-2.62679" my="0.162439" name="К12" secondPoint="69" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="58" id="71" length="CurrentLength/2" lineColor="black" mx="0.264583" my="0.396875" name="К13" secondPoint="68" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="70" id="72" length="6" lineColor="black" mx="0.264583" my="0.396875" name="К14" secondPoint="68" showLabel="true" thirdPoint="71" type="bisector" typeLine="hair"/>
<line firstPoint="59" id="73" lineColor="black" secondPoint="71" typeLine="hair"/>
<spline aScale="0" color="black" id="74" penStyle="hair" type="pathInteractive">
<pathPoint angle1="180" angle2="360" length1="0" length2="6.5" pSpline="70"/>
<pathPoint angle1="135" angle2="315" length1="2" length2="3.5" pSpline="72"/>
<pathPoint angle1="90" angle2="270" length1="5.5" length2="2.02329" pSpline="71"/>
</spline>
<point angle="270" basePoint="69" id="75" length="2" lineColor="black" mx="0.577164" my="0.00614843" name="К15" showLabel="true" type="endLine" typeLine="hair"/>
<line firstPoint="70" id="76" lineColor="black" secondPoint="75" typeLine="hair"/>
<point angle="270" basePoint="75" id="77" length="@Огол/4" lineColor="black" mx="0.264583" my="0.396875" name="К16" showLabel="true" type="endLine" typeLine="dotLine"/>
<point basePoint="77" id="78" lineColor="black" mx="0.264583" my="0.396875" name="К17" p1Line="70" p2Line="75" showLabel="true" type="height" typeLine="hair"/>
<line firstPoint="78" id="79" lineColor="black" secondPoint="75" typeLine="hair"/>
<spline aScale="0" angle1="45" angle2="AngleLine_К16_К17-180" color="black" id="80" length1="5" length2="15" penStyle="hair" point1="61" point4="77" type="simpleInteractive"/>
<point firstPoint="78" id="81" length="7" lineColor="black" mx="-2.38181" my="0.276585" name="К18" secondPoint="70" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="180" firstPoint="77" id="82" length="7" lineColor="black" mx="0.264583" my="0.396875" name="К19" secondPoint="78" showLabel="true" type="normal" typeLine="dotLine"/>
<point firstPoint="60" id="83" length="1.5" lineColor="black" mx="-0.829451" my="-2.41636" name="К20" secondPoint="61" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="81" id="84" lineColor="black" secondPoint="82" typeLine="hair"/>
<spline aScale="0" angle1="45" angle2="AngleLine_К16_К17-180" color="black" id="85" length1="5" length2="15" penStyle="hair" point1="83" point4="82" type="simpleInteractive"/>
<point firstPoint="81" id="86" length="5" lineColor="black" mx="0.264583" my="0.396875" name="К21" secondPoint="82" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="0" firstPoint="70" id="87" length="5" lineColor="black" mx="0.0841473" my="0.276585" name="К22" secondPoint="81" showLabel="true" type="normal" typeLine="dotLine"/>
<point firstPoint="68" id="88" length="CurrentLength+5" lineColor="black" mx="-2.56224" my="0.156294" name="К23" secondPoint="72" showLabel="true" type="alongLine" typeLine="dotLine"/>
<point angle="180" basePoint="71" id="89" length="5" lineColor="black" mx="-2.74268" my="-0.80603" name="К24" showLabel="true" type="endLine" typeLine="dotLine"/>
<point id="90" length="CurrentLength-5" mx="-2.20137" my="-1.88864" name="К25" showLabel="true" splinePath="64" type="cutSplinePath"/>
<line firstPoint="86" id="91" lineColor="black" secondPoint="87" typeLine="hair"/>
<line firstPoint="89" id="92" lineColor="black" secondPoint="90" typeLine="hair"/>
<spline aScale="0" color="black" id="93" penStyle="hair" type="pathInteractive">
<pathPoint angle1="187.595" angle2="AngleLine_К21_К22" length1="0" length2="2" pSpline="87"/>
<pathPoint angle1="130" angle2="310" length1="1.5" length2="1.5" pSpline="88"/>
<pathPoint angle1="AngleLine_К24_К25-180" angle2="260.085" length1="5.5" length2="0.973187" pSpline="89"/>
</spline>
</calculation>
<modeling/>
<details/>
<groups/>
</draw>
<draw name="карман">
<calculation>
<point id="94" mx="0.0537863" my="-1.67596" name="В" showLabel="true" type="single" x="71.7543" y="71.4043"/>
<point angle="90" basePoint="94" id="95" length="20" lineColor="black" mx="0.264583" my="0.396875" name="В1" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="0" basePoint="94" id="96" length="17" lineColor="black" mx="0.22399" my="-0.41498" name="В2" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="0" basePoint="95" id="97" length="17" lineColor="black" mx="0.0414691" my="0.167511" name="В3" showLabel="true" type="endLine" typeLine="hair"/>
<line firstPoint="97" id="98" lineColor="black" secondPoint="96" typeLine="dotLine"/>
<point firstPoint="95" id="99" length="CurrentLength/2" lineColor="black" mx="-1.83999" my="0.193911" name="В4" secondPoint="97" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="94" id="100" length="CurrentLength/2" lineColor="black" mx="-1.68387" my="-1.75454" name="В5" secondPoint="96" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="99" id="101" lineColor="black" secondPoint="100" typeLine="hair"/>
<point angle="90" basePoint="95" id="102" length="2" lineColor="black" mx="0.481739" my="-0.906062" name="В6" showLabel="true" type="endLine" typeLine="dotLine"/>
<point angle="90" basePoint="97" id="103" length="2" lineColor="black" mx="-1.90698" my="-0.906062" name="В7" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="180" basePoint="102" id="104" length="0.5" lineColor="black" mx="-1.97596" my="-0.851277" name="В8" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="0" basePoint="103" id="105" length="0.5" lineColor="black" mx="0.32036" my="-0.975035" name="В9" showLabel="true" type="endLine" typeLine="hair"/>
<line firstPoint="102" id="106" lineColor="black" secondPoint="103" typeLine="hair"/>
<point angle="270" basePoint="104" id="107" length="6" lineColor="black" mx="-1.1056" my="0.361742" name="В10" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="270" basePoint="105" id="108" length="6" lineColor="black" mx="0.264583" my="0.396875" name="В11" showLabel="true" type="endLine" typeLine="hair"/>
<point firstPoint="104" id="109" length="CurrentLength/2" lineColor="black" mx="-1.2307" my="0.048861" name="В12" secondPoint="105" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="270" basePoint="109" id="110" length="8" lineColor="black" mx="-1.03533" my="0.256344" name="В13" showLabel="true" type="endLine" typeLine="hair"/>
<line firstPoint="107" id="111" lineColor="black" secondPoint="110" typeLine="hair"/>
<line firstPoint="108" id="112" lineColor="black" secondPoint="110" typeLine="hair"/>
<point firstPoint="100" id="113" length="2" lineColor="black" mx="-1.20894" my="0.400749" name="В14" secondPoint="96" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="113" id="116" length="2" lineColor="black" mx="-1.19676" my="-1.87632" name="В15" secondPoint="96" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="116" id="118" length="2" lineColor="black" mx="-1.15616" my="0.234504" name="В16" secondPoint="96" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="118" id="120" length="2" lineColor="black" mx="-1.35913" my="-1.9575" name="В17" secondPoint="96" showLabel="true" type="alongLine" typeLine="none"/>
<point angle="90" basePoint="95" id="134" length="4" lineColor="black" mx="0.032156" my="-0.0434623" name="В18" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="90" basePoint="97" id="135" length="4" lineColor="black" mx="0.515886" my="-0.817758" name="В19" showLabel="true" type="endLine" typeLine="hair"/>
<line firstPoint="134" id="136" lineColor="black" secondPoint="135" typeLine="hair"/>
<point firstPoint="134" id="137" length="CurrentLength/2" lineColor="black" mx="-2.31072" my="-0.0244512" name="В20" secondPoint="135" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="137" id="138" length="2" lineColor="black" mx="-0.991934" my="0.229339" name="В21" secondPoint="135" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="138" id="139" length="2" lineColor="black" mx="-0.824398" my="-1.86485" name="В22" secondPoint="135" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="139" id="140" length="2" lineColor="black" mx="-0.991934" my="0.313107" name="В23" secondPoint="135" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="140" id="141" length="2" lineColor="black" mx="-1.49454" my="-1.90674" name="В24" secondPoint="135" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="137" id="142" lineColor="black" secondPoint="109" typeLine="hair"/>
<line firstPoint="138" id="143" lineColor="black" secondPoint="113" typeLine="hair"/>
<line firstPoint="139" id="144" lineColor="black" secondPoint="116" typeLine="hair"/>
<line firstPoint="140" id="145" lineColor="black" secondPoint="118" typeLine="hair"/>
<line firstPoint="141" id="146" lineColor="black" secondPoint="120" typeLine="hair"/>
<point angle="0" basePoint="141" id="147" length="8.5" lineColor="black" mx="-2.30011" my="-0.0247183" name="В25" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="0" basePoint="120" id="148" length="8.5" lineColor="black" mx="-2.44064" my="-1.74622" name="В26" showLabel="true" type="endLine" typeLine="hair"/>
<line firstPoint="147" id="149" lineColor="black" secondPoint="148" typeLine="hair"/>
<point firstPoint="148" id="150" length="20" lineColor="black" mx="-2.44064" my="0.115813" name="В27" secondPoint="147" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="97" id="151" lineColor="black" secondPoint="150" typeLine="hair"/>
<point firstPoint="95" id="230" length="4" lineColor="black" mx="0.264583" my="-1.78136" name="В28" secondPoint="94" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="97" id="231" length="4" lineColor="black" mx="-2.54604" my="-1.81649" name="В29" secondPoint="96" showLabel="true" type="alongLine" typeLine="none"/>
<line firstPoint="230" id="232" lineColor="black" secondPoint="231" typeLine="dashLine"/>
</calculation>
<modeling/>
<details/>
<groups/>
</draw>
<draw name="капюшон центральная деталь">
<calculation>
<point id="198" mx="0.264583" my="0.396875" name="Д" showLabel="true" type="single" x="-10.555" y="-15.0781"/>
<point angle="270" basePoint="198" id="199" length="10" lineColor="black" mx="0.264583" my="-2.35104" name="Д1" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="0" basePoint="198" id="200" length="Line_К21_К22+Line_К24_К25+SplPath_К22_К24" lineColor="black" mx="-2.09077" my="0.346223" name="Д2" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="0" basePoint="199" id="201" length="Line_Д_Д2" lineColor="black" mx="-1.95992" my="-2.61274" name="Д3" showLabel="true" type="endLine" typeLine="hair"/>
<line firstPoint="200" id="202" lineColor="black" secondPoint="201" typeLine="hair"/>
<point firstPoint="198" id="238" length="Line_К21_К22" lineColor="black" mx="0.264583" my="0.396875" name="Д4" secondPoint="200" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="238" id="239" length="SplPath_К22_К24" lineColor="black" mx="0.264583" my="0.396875" name="Д5" secondPoint="200" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="199" id="240" length="Line_Д_Д4" lineColor="black" mx="-0.651388" my="-2.7436" name="Д6" secondPoint="201" showLabel="true" type="alongLine" typeLine="none"/>
<point firstPoint="240" id="241" length="Line_Д4_Д5" lineColor="black" mx="-0.520535" my="-2.48189" name="Д7" secondPoint="201" showLabel="true" type="alongLine" typeLine="none"/>
</calculation>
<modeling/>
<details/>
<groups/>
</draw>
<draw name="Планка">
<calculation>
<point id="208" mx="-0.830903" my="0.177778" name="Е" showLabel="true" type="single" x="-0.994854" y="-4.12151"/>
<point angle="180" basePoint="208" id="209" length="6+6+2" lineColor="black" mx="0.264583" my="0.396875" name="Е1" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="270" basePoint="209" id="210" length="@Ди+Line_К3_К4" lineColor="black" mx="0.047832" my="-2.01319" name="Е2" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="0" basePoint="210" id="211" length="Line_Е_Е1" lineColor="black" mx="-1.70729" my="-1.7941" name="Е3" showLabel="true" type="endLine" typeLine="hair"/>
<line firstPoint="208" id="212" lineColor="black" secondPoint="211" typeLine="hair"/>
</calculation>
<modeling/>
<details/>
<groups/>
</draw>
<draw name="Пата">
<calculation>
<point id="218" mx="0.388689" my="0.230989" name="Ж" showLabel="true" type="single" x="52.3772" y="-19.9113"/>
<point angle="0" basePoint="218" id="219" length="50" lineColor="black" mx="-2.00351" my="0.0676355" name="Ж1" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="270" basePoint="218" id="220" length="4" lineColor="black" mx="0.191419" my="-1.72351" name="Ж2" showLabel="true" type="endLine" typeLine="hair"/>
<point angle="0" basePoint="220" id="221" length="Line_Ж_Ж1" lineColor="black" mx="-2.00351" my="-1.65173" name="Ж3" showLabel="true" type="endLine" typeLine="hair"/>
<line firstPoint="219" id="222" lineColor="black" secondPoint="221" typeLine="hair"/>
</calculation>
<modeling/>
<details/>
<groups/>
</draw>
</pattern>

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<vit>
<!--Measurements created with Valentina v0.7.49.0 (https://smart-pattern.com.ua/).-->
<version>0.5.1</version>
<read-only>false</read-only>
<notes/>
<unit>cm</unit>
<pm_system>998</pm_system>
<personal>
<customer/>
<birth-date>1800-01-01</birth-date>
<gender>unknown</gender>
<email/>
</personal>
<body-measurements>
<m name="bust_circ" value="100"/>
<m name="width_shoulder" value="42"/>
<m name="neck_circ" value="42"/>
<m name="neck_back_to_waist_b" value="44"/>
<m name="neck_side_to_waist_b" value="45.5"/>
<m full_name="Длина рукава в сумме с шириной плеча" name="@Др" value="72"/>
<m full_name="Обхват бедер с учетом выступания живота" name="@Об" value="104"/>
<m full_name="Расстояние от талии до бёдер" name="@Б" value="18"/>
<m full_name="Длтна изделия" name="@Ди" value="85"/>
<m description="не менее 40 для сборки или подворота" full_name="ширина рукава" name="@Шр" value="40"/>
<m name="@Дгол" value="60+6"/>
<m full_name="Обхват головы" name="@Огол" value="60"/>
</body-measurements>
</vit>

View File

@ -1144,9 +1144,9 @@ auto VAbstractPiece::Equidistant(QVector<VSAPoint> points, qreal width, const QS
const bool removeFirstAndLast = false;
ekvPoints = RemoveDublicates(ekvPoints, removeFirstAndLast);
ekvPoints = CheckLoops(ekvPoints);
CastTo(ekvPoints, cleaned);//Result path can contain loops
cleaned = CorrectEquidistantPoints(cleaned, removeFirstAndLast);
cleaned = CorrectPathDistortion(cleaned);
CastTo(ekvPoints, cleaned);//Result path can contain loops
// QVector<QPointF> dump;
// CastTo(cleaned, dump);

View File

@ -34,6 +34,7 @@
#include "../vgeometry/vabstractcurve.h"
#include "../vgeometry/varc.h"
#include "../vlayout/vrawsapoint.h"
#include "../vpatterndb/testpassmark.h"
const qreal VPassmark::passmarkRadiusFactor = 0.45;
@ -52,7 +53,7 @@ PassmarkStatus GetSeamPassmarkSAPoint(const VPiecePassmarkData &passmarkData, co
if (needRollback && not seamAllowance.isEmpty())
{
ekvPoints.clear();
ekvPoints += VRawSAPoint(seamAllowance.at(seamAllowance.size()-2));
ekvPoints += VRawSAPoint(seamAllowance.at(seamAllowance.size()-1));
}
if (ekvPoints.isEmpty())
@ -60,24 +61,7 @@ PassmarkStatus GetSeamPassmarkSAPoint(const VPiecePassmarkData &passmarkData, co
return PassmarkStatus::Error; // Something wrong
}
if (ekvPoints.size() == 1 || ekvPoints.size() > 2)
{
point = ConstFirst(ekvPoints);
}
else if (ekvPoints.size() == 2)
{
if(passmarkData.passmarkSAPoint.GetAngleType() == PieceNodeAngle::ByFirstEdgeSymmetry ||
passmarkData.passmarkSAPoint.GetAngleType() == PieceNodeAngle::ByFirstEdgeRightAngle)
{
point = ConstFirst(ekvPoints);
}
else
{
QLineF line = QLineF(ekvPoints.at(0), ekvPoints.at(1));
line.setLength(line.length()/2.);
point = line.p2();
}
}
point = ConstFirst(ekvPoints);
return needRollback ? PassmarkStatus::Rollback : PassmarkStatus::Common;
}
@ -600,8 +584,8 @@ QVector<QLineF> PassmarkBisectorBaseLine(PassmarkStatus seamPassmarkType, const
}
else if(seamPassmarkType == PassmarkStatus::Rollback)
{
edge1 = QLineF(seamPassmarkSAPoint, seamAllowance.at(seamAllowance.size() - 3));
edge2 = QLineF(seamPassmarkSAPoint, seamAllowance.at(0));
edge1 = QLineF(seamPassmarkSAPoint, seamAllowance.at(seamAllowance.size() - 2));
edge2 = QLineF(seamPassmarkSAPoint, seamAllowance.at(1));
}
else
{ // Should never happen
@ -725,24 +709,40 @@ QVector<QLineF> VPassmark::SAPassmark(const VPiece &piece, const VContainer *dat
if (not piece.IsSeamAllowanceBuiltIn())
{
// Because rollback cannot be calulated if passmark is not first point in main path we rotate it.
QVector<QPointF> points;
CastTo(piece.SeamAllowancePointsWithRotation(data, m_data.passmarkIndex), points);
return SAPassmark(points, side);
QVector<QPointF> rotatedSeamAllowance;
CastTo(piece.SeamAllowancePointsWithRotation(data, m_data.passmarkIndex), rotatedSeamAllowance);
QVector<QPointF> seamAllowance;
CastTo(piece.SeamAllowancePoints(data), seamAllowance);
return SAPassmark(seamAllowance, rotatedSeamAllowance, side);
}
return {};
}
//---------------------------------------------------------------------------------------------------------------------
QVector<QLineF> VPassmark::SAPassmark(const QVector<QPointF> &seamAllowance, PassmarkSide side) const
QVector<QLineF> VPassmark::SAPassmark(const QVector<QPointF> &seamAllowance,
const QVector<QPointF> &rotatedSeamAllowance, PassmarkSide side) const
{
if (m_null)
{
return {};
}
// Because rollback @seamAllowance must be rotated here.
return MakeSAPassmark(seamAllowance, side);
// DumpVector(seamAllowance, QStringLiteral("seamAllowance.json.XXXXXX")); // Uncomment for dumping test data
// DumpVector(seamAllowance, QStringLiteral("rotatedSeamAllowance.json.XXXXXX")); // Uncomment for dumping test data
// DumpPassmarkData(m_data, QStringLiteral("passmarkData.json.XXXXXX")); // Uncomment for dumping test data
QVector<QLineF> lines = SAPassmarkBaseLine(seamAllowance, rotatedSeamAllowance, side);
if (lines.isEmpty())
{
return lines;
}
lines = CreatePassmarkLines(m_data.passmarkLineType, m_data.passmarkAngleType, lines, seamAllowance, side);
// DumpPassmarkShape(lines, QStringLiteral("passmarkShape.json.XXXXXX")); // Uncomment for dumping test data
return lines;
}
//---------------------------------------------------------------------------------------------------------------------
@ -771,23 +771,6 @@ QLineF VPassmark::FindIntersection(const QLineF &line, const QVector<QPointF> &s
return line;
}
//---------------------------------------------------------------------------------------------------------------------
QVector<QLineF> VPassmark::MakeSAPassmark(const QVector<QPointF> &seamAllowance, PassmarkSide side) const
{
// DumpVector(seamAllowance, QStringLiteral("seamAllowance.json.XXXXXX")); // Uncomment for dumping test data
// DumpPassmarkData(m_data, QStringLiteral("passmarkData.json.XXXXXX")); // Uncomment for dumping test data
QVector<QLineF> lines = SAPassmarkBaseLine(seamAllowance, side);
if (lines.isEmpty())
{
return lines;
}
lines = CreatePassmarkLines(m_data.passmarkLineType, m_data.passmarkAngleType, lines, seamAllowance, side);
// DumpPassmarkShape(lines, QStringLiteral("passmarkShape.json.XXXXXX")); // Uncomment for dumping test data
return lines;
}
//---------------------------------------------------------------------------------------------------------------------
QVector<QLineF> VPassmark::BuiltInSAPassmark(const VPiece &piece, const VContainer *data) const
{
@ -870,59 +853,69 @@ QVector<QLineF> VPassmark::SAPassmarkBaseLine(const VPiece &piece, const VContai
if (not piece.IsSeamAllowanceBuiltIn())
{
// Because rollback cannot be calulated if passmark is not first point in main path we rotate it.
QVector<QPointF> points;
CastTo(piece.SeamAllowancePointsWithRotation(data, m_data.passmarkIndex), points);
return SAPassmarkBaseLine(points, side);
QVector<QPointF> rotatedSeamAllowance;
CastTo(piece.SeamAllowancePointsWithRotation(data, m_data.passmarkIndex), rotatedSeamAllowance);
QVector<QPointF> seamAllowance;
CastTo(piece.SeamAllowancePoints(data), seamAllowance);
return SAPassmarkBaseLine(seamAllowance, rotatedSeamAllowance, side);
}
return {};
}
//---------------------------------------------------------------------------------------------------------------------
QVector<QLineF> VPassmark::SAPassmarkBaseLine(const QVector<QPointF> &seamAllowance, PassmarkSide side) const
QVector<QLineF> VPassmark::SAPassmarkBaseLine(const QVector<QPointF> &seamAllowance,
const QVector<QPointF> &rotatedSeamAllowance, PassmarkSide side) const
{
if (m_null)
{
return {};
}
if (seamAllowance.size() < 2)
if (rotatedSeamAllowance.size() < 2)
{
const QString errorMsg = QObject::tr("Cannot calculate a notch for point '%1' in piece '%2'. Seam allowance is "
"empty.").arg(m_data.nodeName, m_data.pieceName);
VAbstractApplication::VApp()->IsPedantic() ? throw VExceptionInvalidNotch(errorMsg) :
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
return QVector<QLineF>(); // Something wrong
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
return {}; // Something wrong
}
QPointF seamPassmarkSAPoint;
const PassmarkStatus seamPassmarkType = GetSeamPassmarkSAPoint(m_data, seamAllowance, seamPassmarkSAPoint);
const PassmarkStatus seamPassmarkType = GetSeamPassmarkSAPoint(m_data, rotatedSeamAllowance, seamPassmarkSAPoint);
if (seamPassmarkType == PassmarkStatus::Error)
{
const QString errorMsg = QObject::tr("Cannot calculate a notch for point '%1' in piece '%2'. Cannot find "
"position for a notch.")
.arg(m_data.nodeName, m_data.pieceName);
.arg(m_data.nodeName, m_data.pieceName);
VAbstractApplication::VApp()->IsPedantic() ? throw VExceptionInvalidNotch(errorMsg) :
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
return QVector<QLineF>(); // Something wrong
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
return {}; // Something wrong
}
if (not FixNotchPoint(seamAllowance, m_data.passmarkSAPoint, &seamPassmarkSAPoint))
const QVector<QPointF>& path = (m_data.passmarkAngleType == PassmarkAngleType::Straightforward ||
m_data.passmarkAngleType == PassmarkAngleType::Bisector)
? rotatedSeamAllowance
: seamAllowance;
if (not FixNotchPoint(path, m_data.passmarkSAPoint, &seamPassmarkSAPoint))
{
const QString errorMsg = QObject::tr("Cannot calculate a notch for point '%1' in piece '%2'. Unable to fix a "
"notch position.")
.arg(m_data.nodeName, m_data.pieceName);
.arg(m_data.nodeName, m_data.pieceName);
VAbstractApplication::VApp()->IsPedantic() ? throw VExceptionInvalidNotch(errorMsg) :
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
}
auto PassmarkIntersection = [this, seamAllowance] (QLineF line, qreal width)
auto PassmarkIntersection = [this, path] (QLineF line, qreal width)
{
line.setLength(line.length()*100); // Hope 100 is enough
// DumpVector(seamAllowance, QStringLiteral("points.json.XXXXXX")); // Uncomment for dumping test data
// DumpVector(path, QStringLiteral("points.json.XXXXXX")); // Uncomment for dumping test data
const QVector<QPointF> intersections = VAbstractCurve::CurveIntersectLine(seamAllowance, line);
const QVector<QPointF> intersections = VAbstractCurve::CurveIntersectLine(path, line);
// DumpVector(intersections, QStringLiteral("intersections.json.XXXXXX")); // Uncomment for dumping test data
@ -977,7 +970,7 @@ QVector<QLineF> VPassmark::SAPassmarkBaseLine(const QVector<QPointF> &seamAllowa
}
else if (m_data.passmarkAngleType == PassmarkAngleType::Bisector)
{
return PassmarkBisectorBaseLine(seamPassmarkType, m_data, seamPassmarkSAPoint, seamAllowance);
return PassmarkBisectorBaseLine(seamPassmarkType, m_data, seamPassmarkSAPoint, path);
}
else if (m_data.passmarkAngleType == PassmarkAngleType::Intersection
|| m_data.passmarkAngleType == PassmarkAngleType::IntersectionOnlyLeft
@ -1032,7 +1025,7 @@ QVector<QLineF> VPassmark::SAPassmarkBaseLine(const QVector<QPointF> &seamAllowa
return lines;
}
return QVector<QLineF>();
return {};
}
//---------------------------------------------------------------------------------------------------------------------

View File

@ -81,12 +81,14 @@ public:
QVector<QLineF> FullPassmark(const VPiece& piece, const VContainer *data) const;
QVector<QLineF> SAPassmark(const VPiece& piece, const VContainer *data, PassmarkSide side) const;
QVector<QLineF> SAPassmark(const QVector<QPointF> &seamAllowance, PassmarkSide side) const;
QVector<QLineF> SAPassmark(const QVector<QPointF> &seamAllowance, const QVector<QPointF> &rotatedSeamAllowance,
PassmarkSide side) const;
QVector<QLineF> BuiltInSAPassmark(const VPiece &piece, const VContainer *data) const;
QVector<QLineF> BuiltInSAPassmarkBaseLine(const VPiece &piece) const;
QVector<QLineF> SAPassmarkBaseLine(const VPiece &piece, const VContainer *data, PassmarkSide side) const;
QVector<QLineF> SAPassmarkBaseLine(const QVector<QPointF> &seamAllowance, PassmarkSide side) const;
QVector<QLineF> SAPassmarkBaseLine(const QVector<QPointF> &seamAllowance,
const QVector<QPointF> &rotatedSeamAllowance, PassmarkSide side) const;
QPainterPath SAPassmarkPath(const VPiece& piece, const VContainer *data, PassmarkSide side) const;
QPainterPath BuiltInSAPassmarkPath(const VPiece &piece, const VContainer *data) const;
@ -101,8 +103,6 @@ public:
private:
VPiecePassmarkData m_data{};
bool m_null{true};
QVector<QLineF> MakeSAPassmark(const QVector<QPointF> &seamAllowance, PassmarkSide side) const;
};
#endif // VPASSMARK_H

View File

@ -949,7 +949,7 @@ bool VPiece::GetPassmarkPreviousSAPoints(const QVector<VPieceNode> &path, vsizet
{
const VSAPoint previous = points.at(nodeIndex);
QLineF line(passmarkSAPoint, previous);
if (line.length() >= ToPixel(1, Unit::Mm))
if (line.length() > accuracyPointOnLine)
{
point = previous;
found = true;

View File

@ -209,6 +209,10 @@ inline QPainterPath VPiece::SeamAllowancePath(const QVector<T> &points) const
// accuracyPointOnLine*2., accuracyPointOnLine*2.);
// ekv.addText(points.at(i).x()-accuracyPointOnLine, points.at(i).y()-accuracyPointOnLine, font,
// QString::number(i+1));
// if (i > 250)
// {
// break;
// }
// }
#endif

View File

@ -1,11 +1,13 @@
{
"data": {
"globalPassmarkLength": 0,
"id": 373,
"isMainPathNode": true,
"isShowSecondPassmark": true,
"nextSAPoint": {
"saAfter": 37.795275590551185,
"saBefore": 0,
"turnPoint": true,
"type": "VSAPoint",
"x": -814.7149606299213,
"y": -8.844283464566928
@ -17,6 +19,7 @@
"passmarkSAPoint": {
"saAfter": 0,
"saBefore": 37.795275590551185,
"turnPoint": true,
"type": "VSAPoint",
"x": -814.7149606299213,
"y": 331.31319685039375
@ -24,11 +27,12 @@
"pieceName": "Test 1",
"previousSAPoint": {
"angle": 6,
"curvePoint": true,
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -809.5439285608359,
"y": 334.19362962533444
"x": -813.9961742743959,
"y": 331.90352529002166
},
"saWidth": 37.795275590551185
}

View File

@ -3,26 +3,26 @@
{
"p1": {
"type": "QPointF",
"x": -814.7149606299213,
"y": 371.920060042948
"x": -838.7026077978906,
"y": 360.52065549216417
},
"p2": {
"type": "QPointF",
"x": -799.7420137621286,
"y": 360.39046437199266
"x": -821.3739639415661,
"y": 352.98150326249686
},
"type": "QLineF"
},
{
"p1": {
"type": "QPointF",
"x": -804.0656121387367,
"y": 354.7756092965702
"x": -824.2011460276914,
"y": 346.4832618163752
},
"p2": {
"type": "QPointF",
"x": -795.4184153855206,
"y": 366.0053194474151
"x": -818.5467818554408,
"y": 359.4797447086185
},
"type": "QLineF"
}

View File

@ -0,0 +1,244 @@
{
"vector": [
{
"type": "QPointF",
"x": -838.7026077978906,
"y": 360.52065549216417
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": 331.31319685039375
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": -46.67441747789094
},
{
"type": "QPointF",
"x": -778.5602746831969,
"y": -50.54949176119329
},
{
"type": "QPointF",
"x": -737.9608911970803,
"y": -56.790170478392334
},
{
"type": "QPointF",
"x": -709.2737849361882,
"y": -62.54507114228297
},
{
"type": "QPointF",
"x": -681.3583296765614,
"y": -69.77242131730785
},
{
"type": "QPointF",
"x": -662.7349969797801,
"y": -76.08666265976335
},
{
"type": "QPointF",
"x": -652.0000133582183,
"y": -80.53001488530862
},
{
"type": "QPointF",
"x": -631.5852394687715,
"y": -90.99511806184105
},
{
"type": "QPointF",
"x": -616.3280202339932,
"y": -100.59426715697734
},
{
"type": "QPointF",
"x": -594.0963839106644,
"y": -115.97215530775206
},
{
"type": "QPointF",
"x": -184.04865014874576,
"y": 76.19837439910705
},
{
"type": "QPointF",
"x": -202.58871262669433,
"y": 128.5312170877332
},
{
"type": "QPointF",
"x": -214.84435298014535,
"y": 166.709615345359
},
{
"type": "QPointF",
"x": -224.9007219166664,
"y": 202.7867077349721
},
{
"type": "QPointF",
"x": -232.93434714099442,
"y": 237.0808568349011
},
{
"type": "QPointF",
"x": -239.08903715169467,
"y": 269.8170459573539
},
{
"type": "QPointF",
"x": -243.50661138639543,
"y": 301.2305028748881
},
{
"type": "QPointF",
"x": -246.32424570745593,
"y": 331.5659013496859
},
{
"type": "QPointF",
"x": -247.42591881697234,
"y": 355.68472552671597
},
{
"type": "QPointF",
"x": -274.1103616347226,
"y": 368.3965019419771
},
{
"type": "QPointF",
"x": -280.4308271742487,
"y": 370.73899686729897
},
{
"type": "QPointF",
"x": -286.53994881447335,
"y": 372.65108939343145
},
{
"type": "QPointF",
"x": -295.7605238049802,
"y": 375.07066902356064
},
{
"type": "QPointF",
"x": -309.1086607001497,
"y": 377.8122722714953
},
{
"type": "QPointF",
"x": -323.7918413406422,
"y": 380.189287868496
},
{
"type": "QPointF",
"x": -339.7464924132723,
"y": 382.2635758852316
},
{
"type": "QPointF",
"x": -356.9362622181957,
"y": 384.07704503986554
},
{
"type": "QPointF",
"x": -375.2815276936278,
"y": 385.65320885961137
},
{
"type": "QPointF",
"x": -414.7876067251065,
"y": 388.13579550460133
},
{
"type": "QPointF",
"x": -457.785958265363,
"y": 389.8184840359457
},
{
"type": "QPointF",
"x": -502.9230721502437,
"y": 390.7285243590086
},
{
"type": "QPointF",
"x": -549.0970864147915,
"y": 390.90686803484715
},
{
"type": "QPointF",
"x": -595.1846601170994,
"y": 390.3891909827694
},
{
"type": "QPointF",
"x": -640.0561486385068,
"y": 389.2080817760433
},
{
"type": "QPointF",
"x": -682.5877079123363,
"y": 387.3931112039708
},
{
"type": "QPointF",
"x": -721.6778577696422,
"y": 384.9687413227853
},
{
"type": "QPointF",
"x": -756.6283706367624,
"y": 381.91399989149096
},
{
"type": "QPointF",
"x": -772.0557074133295,
"y": 380.1563856315983
},
{
"type": "QPointF",
"x": -786.1074176186619,
"y": 378.2178680808823
},
{
"type": "QPointF",
"x": -798.8005062137145,
"y": 376.0511796823399
},
{
"type": "QPointF",
"x": -810.1810632465617,
"y": 373.5624561175911
},
{
"type": "QPointF",
"x": -818.0929557813661,
"y": 371.27957591636186
},
{
"type": "QPointF",
"x": -823.6929755287717,
"y": 369.27180555078513
},
{
"type": "QPointF",
"x": -829.5753368833371,
"y": 366.62694879394735
},
{
"type": "QPointF",
"x": -835.8151397150926,
"y": 362.8920896668538
},
{
"type": "QPointF",
"x": -838.7026077978906,
"y": 360.52065549216417
}
]
}

View File

@ -2,143 +2,243 @@
"vector": [
{
"type": "QPointF",
"x": -814.7149606299213,
"y": -46.83844987562506
"x": -838.7026077978906,
"y": 360.52065549216417
},
{
"type": "QPointF",
"x": -778.5027796006967,
"y": -50.55832953918108
"x": -815.5965354330709,
"y": 331.31319685039375
},
{
"type": "QPointF",
"x": -737.9608911970817,
"y": -56.79017047839188
"x": -815.5965354330709,
"y": -46.67441747789094
},
{
"type": "QPointF",
"x": -709.2737849361833,
"y": -62.54507114228375
"x": -778.5602746831969,
"y": -50.54949176119329
},
{
"type": "QPointF",
"x": -681.3583296765719,
"y": -69.77242131730468
"x": -737.9608911970803,
"y": -56.790170478392334
},
{
"type": "QPointF",
"x": -663.080059476596,
"y": -75.96966921296226
"x": -709.2737849361882,
"y": -62.54507114228297
},
{
"type": "QPointF",
"x": -646.8510624753319,
"y": -83.05604358358234
"x": -681.3583296765614,
"y": -69.77242131730785
},
{
"type": "QPointF",
"x": -631.5852394687809,
"y": -90.99511806183605
"x": -662.7349969797801,
"y": -76.08666265976335
},
{
"type": "QPointF",
"x": -616.3280202339708,
"y": -100.59426715699185
"x": -652.0000133582183,
"y": -80.53001488530862
},
{
"type": "QPointF",
"x": -594.0963839106636,
"y": -115.97215530775165
"x": -631.5852394687715,
"y": -90.99511806184105
},
{
"type": "QPointF",
"x": -184.652959517236,
"y": 75.91516236819507
"x": -616.3280202339932,
"y": -100.59426715697734
},
{
"type": "QPointF",
"x": -214.89666292622343,
"y": 166.89727659461178
"x": -594.0963839106644,
"y": -115.97215530775206
},
{
"type": "QPointF",
"x": -224.9007219166651,
"y": 202.78670773496933
"x": -184.04865014874576,
"y": 76.19837439910705
},
{
"type": "QPointF",
"x": -232.93434714099388,
"y": 237.08085683490162
"x": -202.58871262669433,
"y": 128.5312170877332
},
{
"type": "QPointF",
"x": -239.0890371517,
"y": 269.81704595738483
"x": -214.84435298014535,
"y": 166.709615345359
},
{
"type": "QPointF",
"x": -243.49817442555994,
"y": 301.1705074811104
"x": -224.9007219166664,
"y": 202.7867077349721
},
{
"type": "QPointF",
"x": -248.3168574229531,
"y": 354.919297434933
"x": -232.93434714099442,
"y": 237.0808568349011
},
{
"type": "QPointF",
"x": -269.9238569102081,
"y": 366.58612044863963
"x": -239.08903715169467,
"y": 269.8170459573539
},
{
"type": "QPointF",
"x": -286.16902160246076,
"y": 372.6172940694789
"x": -243.50661138639543,
"y": 301.2305028748881
},
{
"type": "QPointF",
"x": -311.04178506989064,
"y": 378.1071805105328
"x": -246.32424570745593,
"y": 331.5659013496859
},
{
"type": "QPointF",
"x": -358.1556709259087,
"y": 384.1720729374989
"x": -247.42591881697234,
"y": 355.68472552671597
},
{
"type": "QPointF",
"x": -437.0178873589189,
"y": 389.1088088614001
"x": -274.1103616347226,
"y": 368.3965019419771
},
{
"type": "QPointF",
"x": -550.0911721596755,
"y": 390.89374507300744
"x": -280.4308271742487,
"y": 370.73899686729897
},
{
"type": "QPointF",
"x": -683.5941332112803,
"y": 387.332152895494
"x": -286.53994881447335,
"y": 372.65108939343145
},
{
"type": "QPointF",
"x": -757.8761616208975,
"y": 381.7608312465323
"x": -295.7605238049802,
"y": 375.07066902356064
},
{
"type": "QPointF",
"x": -799.0261371963916,
"y": 376.0668102876168
"x": -309.1086607001497,
"y": 377.8122722714953
},
{
"type": "QPointF",
"x": -814.7149606299213,
"y": 371.920060042948
"x": -323.7918413406422,
"y": 380.189287868496
},
{
"type": "QPointF",
"x": -814.7149606299213,
"y": -46.83844987562506
"x": -339.7464924132723,
"y": 382.2635758852316
},
{
"type": "QPointF",
"x": -356.9362622181957,
"y": 384.07704503986554
},
{
"type": "QPointF",
"x": -375.2815276936278,
"y": 385.65320885961137
},
{
"type": "QPointF",
"x": -414.7876067251065,
"y": 388.13579550460133
},
{
"type": "QPointF",
"x": -457.785958265363,
"y": 389.8184840359457
},
{
"type": "QPointF",
"x": -502.9230721502437,
"y": 390.7285243590086
},
{
"type": "QPointF",
"x": -549.0970864147915,
"y": 390.90686803484715
},
{
"type": "QPointF",
"x": -595.1846601170994,
"y": 390.3891909827694
},
{
"type": "QPointF",
"x": -640.0561486385068,
"y": 389.2080817760433
},
{
"type": "QPointF",
"x": -682.5877079123363,
"y": 387.3931112039708
},
{
"type": "QPointF",
"x": -721.6778577696422,
"y": 384.9687413227853
},
{
"type": "QPointF",
"x": -756.6283706367624,
"y": 381.91399989149096
},
{
"type": "QPointF",
"x": -772.0557074133295,
"y": 380.1563856315983
},
{
"type": "QPointF",
"x": -786.1074176186619,
"y": 378.2178680808823
},
{
"type": "QPointF",
"x": -798.8005062137145,
"y": 376.0511796823399
},
{
"type": "QPointF",
"x": -810.1810632465617,
"y": 373.5624561175911
},
{
"type": "QPointF",
"x": -818.0929557813661,
"y": 371.27957591636186
},
{
"type": "QPointF",
"x": -823.6929755287717,
"y": 369.27180555078513
},
{
"type": "QPointF",
"x": -829.5753368833371,
"y": 366.62694879394735
},
{
"type": "QPointF",
"x": -835.8151397150926,
"y": 362.8920896668538
},
{
"type": "QPointF",
"x": -838.7026077978906,
"y": 360.52065549216417
}
]
}

View File

@ -0,0 +1,39 @@
{
"data": {
"globalPassmarkLength": 0,
"id": 435,
"isMainPathNode": true,
"isShowSecondPassmark": true,
"nextSAPoint": {
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"turnPoint": true,
"type": "VSAPoint",
"x": -814.7149606299213,
"y": -8.844283464566928
},
"nodeName": "А4",
"passmarkAngleType": 1,
"passmarkIndex": 0,
"passmarkLineType": 3,
"passmarkSAPoint": {
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"turnPoint": true,
"type": "VSAPoint",
"x": -814.7149606299213,
"y": 331.31319685039375
},
"pieceName": "Test 2",
"previousSAPoint": {
"angle": 6,
"curvePoint": true,
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -813.9961742743959,
"y": 331.90352529002166
},
"saWidth": 37.795275590551185
}
}

View File

@ -0,0 +1,30 @@
{
"shape": [
{
"p1": {
"type": "QPointF",
"x": -852.5102362204725,
"y": 349.18065762074224
},
"p2": {
"type": "QPointF",
"x": -835.4255113454269,
"y": 341.1039695504113
},
"type": "QLineF"
},
{
"p1": {
"type": "QPointF",
"x": -838.454269371801,
"y": 334.6971977222692
},
"p2": {
"type": "QPointF",
"x": -832.3967533190528,
"y": 347.5107413785534
},
"type": "QLineF"
}
]
}

View File

@ -0,0 +1,244 @@
{
"vector": [
{
"type": "QPointF",
"x": -852.5102362204725,
"y": 349.18065762074224
},
{
"type": "QPointF",
"x": -852.5102362204725,
"y": -44.006726330744414
},
{
"type": "QPointF",
"x": -814.2667801920694,
"y": -46.77051665539475
},
{
"type": "QPointF",
"x": -778.5602746831969,
"y": -50.54949176119329
},
{
"type": "QPointF",
"x": -737.9608911970803,
"y": -56.790170478392334
},
{
"type": "QPointF",
"x": -709.2737849361882,
"y": -62.54507114228297
},
{
"type": "QPointF",
"x": -681.3583296765614,
"y": -69.77242131730785
},
{
"type": "QPointF",
"x": -662.7349969797801,
"y": -76.08666265976335
},
{
"type": "QPointF",
"x": -652.0000133582183,
"y": -80.53001488530862
},
{
"type": "QPointF",
"x": -631.5852394687715,
"y": -90.99511806184105
},
{
"type": "QPointF",
"x": -616.3280202339932,
"y": -100.59426715697734
},
{
"type": "QPointF",
"x": -594.0963839106644,
"y": -115.97215530775206
},
{
"type": "QPointF",
"x": -184.04865014874576,
"y": 76.19837439910705
},
{
"type": "QPointF",
"x": -202.58871262669433,
"y": 128.5312170877332
},
{
"type": "QPointF",
"x": -214.84435298014535,
"y": 166.709615345359
},
{
"type": "QPointF",
"x": -224.9007219166664,
"y": 202.7867077349721
},
{
"type": "QPointF",
"x": -232.93434714099442,
"y": 237.0808568349011
},
{
"type": "QPointF",
"x": -239.08903715169467,
"y": 269.8170459573539
},
{
"type": "QPointF",
"x": -243.50661138639543,
"y": 301.2305028748881
},
{
"type": "QPointF",
"x": -246.32424570745593,
"y": 331.5659013496859
},
{
"type": "QPointF",
"x": -247.42591881697234,
"y": 355.68472552671597
},
{
"type": "QPointF",
"x": -274.1103616347226,
"y": 368.3965019419771
},
{
"type": "QPointF",
"x": -280.4308271742487,
"y": 370.73899686729897
},
{
"type": "QPointF",
"x": -286.53994881447335,
"y": 372.65108939343145
},
{
"type": "QPointF",
"x": -295.7605238049802,
"y": 375.07066902356064
},
{
"type": "QPointF",
"x": -309.1086607001497,
"y": 377.8122722714953
},
{
"type": "QPointF",
"x": -323.7918413406422,
"y": 380.189287868496
},
{
"type": "QPointF",
"x": -339.7464924132723,
"y": 382.2635758852316
},
{
"type": "QPointF",
"x": -356.9362622181957,
"y": 384.07704503986554
},
{
"type": "QPointF",
"x": -375.2815276936278,
"y": 385.65320885961137
},
{
"type": "QPointF",
"x": -414.7876067251065,
"y": 388.13579550460133
},
{
"type": "QPointF",
"x": -457.785958265363,
"y": 389.8184840359457
},
{
"type": "QPointF",
"x": -502.9230721502437,
"y": 390.7285243590086
},
{
"type": "QPointF",
"x": -549.0970864147915,
"y": 390.90686803484715
},
{
"type": "QPointF",
"x": -595.1846601170994,
"y": 390.3891909827694
},
{
"type": "QPointF",
"x": -640.0561486385068,
"y": 389.2080817760433
},
{
"type": "QPointF",
"x": -682.5877079123363,
"y": 387.3931112039708
},
{
"type": "QPointF",
"x": -721.6778577696422,
"y": 384.9687413227853
},
{
"type": "QPointF",
"x": -756.6283706367624,
"y": 381.91399989149096
},
{
"type": "QPointF",
"x": -772.0557074133295,
"y": 380.1563856315983
},
{
"type": "QPointF",
"x": -786.1074176186619,
"y": 378.2178680808823
},
{
"type": "QPointF",
"x": -798.8005062137145,
"y": 376.0511796823399
},
{
"type": "QPointF",
"x": -810.1810632465617,
"y": 373.5624561175911
},
{
"type": "QPointF",
"x": -818.0929557813661,
"y": 371.27957591636186
},
{
"type": "QPointF",
"x": -823.6929755287717,
"y": 369.27180555078513
},
{
"type": "QPointF",
"x": -829.5753368833371,
"y": 366.62694879394735
},
{
"type": "QPointF",
"x": -835.8151397150926,
"y": 362.8920896668538
},
{
"type": "QPointF",
"x": -852.5102362204725,
"y": 349.18065762074224
}
]
}

View File

@ -0,0 +1,244 @@
{
"vector": [
{
"type": "QPointF",
"x": -852.5102362204725,
"y": 349.18065762074224
},
{
"type": "QPointF",
"x": -852.5102362204725,
"y": -44.006726330744414
},
{
"type": "QPointF",
"x": -814.2667801920694,
"y": -46.77051665539475
},
{
"type": "QPointF",
"x": -778.5602746831969,
"y": -50.54949176119329
},
{
"type": "QPointF",
"x": -737.9608911970803,
"y": -56.790170478392334
},
{
"type": "QPointF",
"x": -709.2737849361882,
"y": -62.54507114228297
},
{
"type": "QPointF",
"x": -681.3583296765614,
"y": -69.77242131730785
},
{
"type": "QPointF",
"x": -662.7349969797801,
"y": -76.08666265976335
},
{
"type": "QPointF",
"x": -652.0000133582183,
"y": -80.53001488530862
},
{
"type": "QPointF",
"x": -631.5852394687715,
"y": -90.99511806184105
},
{
"type": "QPointF",
"x": -616.3280202339932,
"y": -100.59426715697734
},
{
"type": "QPointF",
"x": -594.0963839106644,
"y": -115.97215530775206
},
{
"type": "QPointF",
"x": -184.04865014874576,
"y": 76.19837439910705
},
{
"type": "QPointF",
"x": -202.58871262669433,
"y": 128.5312170877332
},
{
"type": "QPointF",
"x": -214.84435298014535,
"y": 166.709615345359
},
{
"type": "QPointF",
"x": -224.9007219166664,
"y": 202.7867077349721
},
{
"type": "QPointF",
"x": -232.93434714099442,
"y": 237.0808568349011
},
{
"type": "QPointF",
"x": -239.08903715169467,
"y": 269.8170459573539
},
{
"type": "QPointF",
"x": -243.50661138639543,
"y": 301.2305028748881
},
{
"type": "QPointF",
"x": -246.32424570745593,
"y": 331.5659013496859
},
{
"type": "QPointF",
"x": -247.42591881697234,
"y": 355.68472552671597
},
{
"type": "QPointF",
"x": -274.1103616347226,
"y": 368.3965019419771
},
{
"type": "QPointF",
"x": -280.4308271742487,
"y": 370.73899686729897
},
{
"type": "QPointF",
"x": -286.53994881447335,
"y": 372.65108939343145
},
{
"type": "QPointF",
"x": -295.7605238049802,
"y": 375.07066902356064
},
{
"type": "QPointF",
"x": -309.1086607001497,
"y": 377.8122722714953
},
{
"type": "QPointF",
"x": -323.7918413406422,
"y": 380.189287868496
},
{
"type": "QPointF",
"x": -339.7464924132723,
"y": 382.2635758852316
},
{
"type": "QPointF",
"x": -356.9362622181957,
"y": 384.07704503986554
},
{
"type": "QPointF",
"x": -375.2815276936278,
"y": 385.65320885961137
},
{
"type": "QPointF",
"x": -414.7876067251065,
"y": 388.13579550460133
},
{
"type": "QPointF",
"x": -457.785958265363,
"y": 389.8184840359457
},
{
"type": "QPointF",
"x": -502.9230721502437,
"y": 390.7285243590086
},
{
"type": "QPointF",
"x": -549.0970864147915,
"y": 390.90686803484715
},
{
"type": "QPointF",
"x": -595.1846601170994,
"y": 390.3891909827694
},
{
"type": "QPointF",
"x": -640.0561486385068,
"y": 389.2080817760433
},
{
"type": "QPointF",
"x": -682.5877079123363,
"y": 387.3931112039708
},
{
"type": "QPointF",
"x": -721.6778577696422,
"y": 384.9687413227853
},
{
"type": "QPointF",
"x": -756.6283706367624,
"y": 381.91399989149096
},
{
"type": "QPointF",
"x": -772.0557074133295,
"y": 380.1563856315983
},
{
"type": "QPointF",
"x": -786.1074176186619,
"y": 378.2178680808823
},
{
"type": "QPointF",
"x": -798.8005062137145,
"y": 376.0511796823399
},
{
"type": "QPointF",
"x": -810.1810632465617,
"y": 373.5624561175911
},
{
"type": "QPointF",
"x": -818.0929557813661,
"y": 371.27957591636186
},
{
"type": "QPointF",
"x": -823.6929755287717,
"y": 369.27180555078513
},
{
"type": "QPointF",
"x": -829.5753368833371,
"y": 366.62694879394735
},
{
"type": "QPointF",
"x": -835.8151397150926,
"y": 362.8920896668538
},
{
"type": "QPointF",
"x": -852.5102362204725,
"y": 349.18065762074224
}
]
}

View File

@ -0,0 +1,33 @@
{
"data": {
"globalPassmarkLength": 0,
"id": 293,
"isMainPathNode": true,
"isShowSecondPassmark": false,
"nextSAPoint": {
"turnPoint": true,
"type": "VSAPoint",
"x": 1152.4535433070866,
"y": 1662.9921259842522
},
"nodeName": "П2",
"passmarkAngleType": 2,
"passmarkIndex": 13,
"passmarkLineType": 0,
"passmarkSAPoint": {
"turnPoint": true,
"type": "VSAPoint",
"x": 1141.4149617366281,
"y": 1133.7638237958422
},
"pieceName": "Спинка",
"previousSAPoint": {
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 1139.6438937742528,
"y": 1133.618039930699
},
"saWidth": 37.795275590551185
}
}

View File

@ -0,0 +1,30 @@
{
"shape": [
{
"p1": {
"type": "QPointF",
"x": 1139.3326742643058,
"y": 1033.93166179103
},
"p2": {
"type": "QPointF",
"x": 1139.7267532538592,
"y": 1052.8251902066388
},
"type": "QLineF"
},
{
"p1": {
"type": "QPointF",
"x": 1179.2834742397833,
"y": 1136.8809363162034
},
"p2": {
"type": "QPointF",
"x": 1160.4495344535837,
"y": 1135.3306375155732
},
"type": "QLineF"
}
]
}

View File

@ -0,0 +1,199 @@
{
"vector": [
{
"type": "QPointF",
"x": 1190.2406001383044,
"y": 1662.2039680051453
},
{
"type": "QPointF",
"x": 1209.4488188976375,
"y": 2342.773859437746
},
{
"type": "QPointF",
"x": 1209.4488188976375,
"y": 3250.3937007874015
},
{
"type": "QPointF",
"x": -0.8815748031499879,
"y": 3250.3937007874015
},
{
"type": "QPointF",
"x": -0.8815748031495994,
"y": -18.90270523414847
},
{
"type": "QPointF",
"x": 36.06830233693379,
"y": -18.71151699052007
},
{
"type": "QPointF",
"x": 176.7581908823862,
"y": -15.623913503836024
},
{
"type": "QPointF",
"x": 240.56111876467253,
"y": -15.371142749507564
},
{
"type": "QPointF",
"x": 283.02475239967555,
"y": -16.960656398549304
},
{
"type": "QPointF",
"x": 308.061552082953,
"y": -19.005401290853676
},
{
"type": "QPointF",
"x": 330.04878169129023,
"y": -21.999453952826794
},
{
"type": "QPointF",
"x": 348.3000499826031,
"y": -25.905057771403385
},
{
"type": "QPointF",
"x": 362.40752429359753,
"y": -30.55236401849043
},
{
"type": "QPointF",
"x": 369.6390108302289,
"y": -34.11853329534943
},
{
"type": "QPointF",
"x": 372.53030088317746,
"y": -35.99399952185556
},
{
"type": "QPointF",
"x": 374.4497024236884,
"y": -37.6004648038369
},
{
"type": "QPointF",
"x": 375.731924310238,
"y": -39.17689552332192
},
{
"type": "QPointF",
"x": 385.5578642938417,
"y": -76.28252041905073
},
{
"type": "QPointF",
"x": 1132.8843499959523,
"y": 96.17743781989789
},
{
"type": "QPointF",
"x": 1123.2499865503153,
"y": 142.30451579211226
},
{
"type": "QPointF",
"x": 1119.4331797033872,
"y": 169.9443000683722
},
{
"type": "QPointF",
"x": 1116.0694952739436,
"y": 206.09184896188202
},
{
"type": "QPointF",
"x": 1113.2116085565735,
"y": 249.10360770883094
},
{
"type": "QPointF",
"x": 1109.7797678912355,
"y": 322.9252827665309
},
{
"type": "QPointF",
"x": 1106.7931536939295,
"y": 432.92489820410816
},
{
"type": "QPointF",
"x": 1104.698680844792,
"y": 599.8736704749733
},
{
"type": "QPointF",
"x": 1104.6877148285491,
"y": 768.0253235320995
},
{
"type": "QPointF",
"x": 1105.0862335655727,
"y": 804.6028292831181
},
{
"type": "QPointF",
"x": 1108.1219728269216,
"y": 837.8875330051616
},
{
"type": "QPointF",
"x": 1114.033437974546,
"y": 886.8462970147783
},
{
"type": "QPointF",
"x": 1122.3157741686778,
"y": 943.8756722466893
},
{
"type": "QPointF",
"x": 1132.5012728895842,
"y": 1002.143947735286
},
{
"type": "QPointF",
"x": 1141.0910401133106,
"y": 1042.113647850344
},
{
"type": "QPointF",
"x": 1146.9915048454545,
"y": 1065.2982406183592
},
{
"type": "QPointF",
"x": 1152.866983723146,
"y": 1084.4990776210993
},
{
"type": "QPointF",
"x": 1158.2695861318405,
"y": 1098.3116276750254
},
{
"type": "QPointF",
"x": 1159.9654497820648,
"y": 1101.4512027679732
},
{
"type": "QPointF",
"x": 1178.7326371711267,
"y": 1110.471875988405
},
{
"type": "QPointF",
"x": 1190.2406001383044,
"y": 1662.2039680051453
}
]
}

View File

@ -0,0 +1,199 @@
{
"vector": [
{
"type": "QPointF",
"x": 1190.2406001383044,
"y": 1662.2039680051453
},
{
"type": "QPointF",
"x": 1209.4488188976375,
"y": 2342.773859437746
},
{
"type": "QPointF",
"x": 1209.4488188976375,
"y": 3250.3937007874015
},
{
"type": "QPointF",
"x": -0.8815748031499879,
"y": 3250.3937007874015
},
{
"type": "QPointF",
"x": -0.8815748031495994,
"y": -18.90270523414847
},
{
"type": "QPointF",
"x": 36.06830233693379,
"y": -18.71151699052007
},
{
"type": "QPointF",
"x": 176.7581908823862,
"y": -15.623913503836024
},
{
"type": "QPointF",
"x": 240.56111876467253,
"y": -15.371142749507564
},
{
"type": "QPointF",
"x": 283.02475239967555,
"y": -16.960656398549304
},
{
"type": "QPointF",
"x": 308.061552082953,
"y": -19.005401290853676
},
{
"type": "QPointF",
"x": 330.04878169129023,
"y": -21.999453952826794
},
{
"type": "QPointF",
"x": 348.3000499826031,
"y": -25.905057771403385
},
{
"type": "QPointF",
"x": 362.40752429359753,
"y": -30.55236401849043
},
{
"type": "QPointF",
"x": 369.6390108302289,
"y": -34.11853329534943
},
{
"type": "QPointF",
"x": 372.53030088317746,
"y": -35.99399952185556
},
{
"type": "QPointF",
"x": 374.4497024236884,
"y": -37.6004648038369
},
{
"type": "QPointF",
"x": 375.731924310238,
"y": -39.17689552332192
},
{
"type": "QPointF",
"x": 385.5578642938417,
"y": -76.28252041905073
},
{
"type": "QPointF",
"x": 1132.8843499959523,
"y": 96.17743781989789
},
{
"type": "QPointF",
"x": 1123.2499865503153,
"y": 142.30451579211226
},
{
"type": "QPointF",
"x": 1119.4331797033872,
"y": 169.9443000683722
},
{
"type": "QPointF",
"x": 1116.0694952739436,
"y": 206.09184896188202
},
{
"type": "QPointF",
"x": 1113.2116085565735,
"y": 249.10360770883094
},
{
"type": "QPointF",
"x": 1109.7797678912355,
"y": 322.9252827665309
},
{
"type": "QPointF",
"x": 1106.7931536939295,
"y": 432.92489820410816
},
{
"type": "QPointF",
"x": 1104.698680844792,
"y": 599.8736704749733
},
{
"type": "QPointF",
"x": 1104.6877148285491,
"y": 768.0253235320995
},
{
"type": "QPointF",
"x": 1105.0862335655727,
"y": 804.6028292831181
},
{
"type": "QPointF",
"x": 1108.1219728269216,
"y": 837.8875330051616
},
{
"type": "QPointF",
"x": 1114.033437974546,
"y": 886.8462970147783
},
{
"type": "QPointF",
"x": 1122.3157741686778,
"y": 943.8756722466893
},
{
"type": "QPointF",
"x": 1132.5012728895842,
"y": 1002.143947735286
},
{
"type": "QPointF",
"x": 1141.0910401133106,
"y": 1042.113647850344
},
{
"type": "QPointF",
"x": 1146.9915048454545,
"y": 1065.2982406183592
},
{
"type": "QPointF",
"x": 1152.866983723146,
"y": 1084.4990776210993
},
{
"type": "QPointF",
"x": 1158.2695861318405,
"y": 1098.3116276750254
},
{
"type": "QPointF",
"x": 1159.9654497820648,
"y": 1101.4512027679732
},
{
"type": "QPointF",
"x": 1178.7326371711267,
"y": 1110.471875988405
},
{
"type": "QPointF",
"x": 1190.2406001383044,
"y": 1662.2039680051453
}
]
}

View File

@ -99,6 +99,11 @@
<file>Issue_924_Test_1/passmarkData.json</file>
<file>Issue_924_Test_1/passmarkShape.json</file>
<file>Issue_924_Test_1/seamAllowance.json</file>
<file>Issue_924_Test_1/rotatedSeamAllowance.json</file>
<file>Issue_924_Test_2/passmarkData.json</file>
<file>Issue_924_Test_2/passmarkShape.json</file>
<file>Issue_924_Test_2/seamAllowance.json</file>
<file>Issue_924_Test_2/rotatedSeamAllowance.json</file>
<file>DP_6/input.json</file>
<file>DP_6/output.json</file>
<file>Issue_923_test7_1/input.json</file>
@ -163,5 +168,9 @@
<file>custom_seam_allwance_exclude_p2/output.json</file>
<file>hat/input.json</file>
<file>hat/output.json</file>
<file>incorrect_notch/passmarkData.json</file>
<file>incorrect_notch/passmarkShape.json</file>
<file>incorrect_notch/rotatedSeamAllowance.json</file>
<file>incorrect_notch/seamAllowance.json</file>
</qresource>
</RCC>

View File

@ -73,10 +73,11 @@ void TST_VPiece::TestSAPassmark_data()
{
QTest::addColumn<VPiecePassmarkData>("passmarkData");
QTest::addColumn<QVector<QPointF>>("seamAllowance");
QTest::addColumn<QVector<QPointF>>("rotatedSeamAllowance");
QTest::addColumn<QVector<QLineF>>("expectedResult");
auto ASSERT_TEST_CASE = [this](const char *title, const QString &passmarkData, const QString &seamAllowance,
const QString &shape)
const QString &rotatedSeamAllowance, const QString &shape)
{
QT_WARNING_PUSH
QT_WARNING_DISABLE_GCC("-Wnoexcept")
@ -85,11 +86,13 @@ void TST_VPiece::TestSAPassmark_data()
AbstractTest::PassmarkDataFromJson(passmarkData, inputPassmarkData);
QVector<QPointF> inputSeamAllowance = AbstractTest::VectorFromJson<QPointF>(seamAllowance);
QVector<QPointF> inputRotatedSeamAllowance = AbstractTest::VectorFromJson<QPointF>(rotatedSeamAllowance);
QVector<QLineF> inputOutputShape;
AbstractTest::PassmarkShapeFromJson(shape, inputOutputShape);
QTest::newRow(title) << inputPassmarkData << inputSeamAllowance << inputOutputShape;
QTest::newRow(title) << inputPassmarkData << inputSeamAllowance << inputRotatedSeamAllowance
<< inputOutputShape;
QT_WARNING_POP
};
@ -98,7 +101,22 @@ void TST_VPiece::TestSAPassmark_data()
ASSERT_TEST_CASE("Test 1.",
QStringLiteral("://Issue_924_Test_1/passmarkData.json"),
QStringLiteral("://Issue_924_Test_1/seamAllowance.json"),
QStringLiteral("://Issue_924_Test_1/rotatedSeamAllowance.json"),
QStringLiteral("://Issue_924_Test_1/passmarkShape.json"));
// See file src/app/share/collection/bugs/Issue_#924.val
ASSERT_TEST_CASE("Test 2.",
QStringLiteral("://Issue_924_Test_2/passmarkData.json"),
QStringLiteral("://Issue_924_Test_2/seamAllowance.json"),
QStringLiteral("://Issue_924_Test_2/rotatedSeamAllowance.json"),
QStringLiteral("://Issue_924_Test_2/passmarkShape.json"));
// See file src/app/share/collection/bugs/incorrect_notch.val
ASSERT_TEST_CASE("Piece.",
QStringLiteral("://incorrect_notch/passmarkData.json"),
QStringLiteral("://incorrect_notch/seamAllowance.json"),
QStringLiteral("://incorrect_notch/rotatedSeamAllowance.json"),
QStringLiteral("://incorrect_notch/passmarkShape.json"));
}
//---------------------------------------------------------------------------------------------------------------------
@ -106,9 +124,10 @@ void TST_VPiece::TestSAPassmark()
{
QFETCH(VPiecePassmarkData, passmarkData);
QFETCH(QVector<QPointF>, seamAllowance);
QFETCH(QVector<QPointF>, rotatedSeamAllowance);
QFETCH(QVector<QLineF>, expectedResult);
VPassmark passmark(passmarkData);
CompareLinesDistance(passmark.SAPassmark(seamAllowance, PassmarkSide::All), expectedResult);
CompareLinesDistance(passmark.SAPassmark(seamAllowance, rotatedSeamAllowance, PassmarkSide::All), expectedResult);
}