Compare commits

...

6 commits

Author SHA1 Message Date
Roman Telezhynskyi 857e384221 New grainline type: Four way. 2023-04-07 10:05:29 +03:00
Roman Telezhynskyi 9cd31f1dd7 Fix notches. 2023-04-06 18:21:24 +03:00
Roman Telezhynskyi 6e295f7172 Fix list of dimension popup list. Make sure it will always has enough space for values. 2023-04-05 17:09:54 +03:00
Roman Telezhynskyi 433389b798 QScopedPointer::take() was deprecated since 6.1. 2023-04-03 13:44:20 +03:00
Roman Telezhynskyi e7e4e07162 Fix seam allowance. Loose requirements to case with prong. 2023-04-03 10:50:25 +03:00
Roman Telezhynskyi 944d9e71e0 Fix compatibility with Richpeace DXF-AAMA/ASTM R12. 2023-04-01 15:03:34 +03:00
50 changed files with 2987 additions and 1289 deletions

View file

@ -18,6 +18,10 @@
- Fix QT issue on MacOS version 11.0 "Big Sur".
- Fix excluding objects in internal path.
- Fix float-point accuracy issue in multisize measurements dimensions.
- Fix compatibility with Richpeace DXF-AAMA/ASTM R12.
- Fix seam allowance. Loose requirements to case with prong.
- Fix list of dimension popup list. Make sure it will always has enough space for values.
- New grainline type: Four way.
# Valentina 0.7.52 September 12, 2022
- Fix crash when default locale is ru.

View file

@ -270,7 +270,7 @@ void VPPiece::RotateToGrainline(const VPTransformationOrigon &origin)
{
degrees = DegreesAtRear();
}
else
else if (type == GrainlineArrowDirection::atBoth)
{
const qreal atFront = DegreesAtFront();
if (atFront <= 90 || atFront >= 270)
@ -282,6 +282,22 @@ void VPPiece::RotateToGrainline(const VPTransformationOrigon &origin)
degrees = DegreesAtRear();
}
}
else
{
const qreal atFront = DegreesAtFront();
if (atFront <= 45)
{
degrees = atFront;
}
else if (atFront > 45 && atFront < 90)
{
degrees = atFront - 90;
}
else
{
degrees = atFront - 90 * qFloor(atFront / 90);
}
}
if (origin.custom)
{

View file

@ -111,9 +111,10 @@ auto StringToGrainlineArrowDirrection(const QString &dirrection) -> GrainlineArr
{
const QStringList arrows
{
ML::atFrontStr, // 0
ML::atRearStr, // 1
ML::atBothStr // 2
ML::atFrontStr, // 0
ML::atRearStr, // 1
ML::atFourWayStr, // 2
ML::atBothStr // 3
};
GrainlineArrowDirection arrowDirection = GrainlineArrowDirection::atBoth;
@ -125,7 +126,10 @@ auto StringToGrainlineArrowDirrection(const QString &dirrection) -> GrainlineArr
case 1:// at rear
arrowDirection = GrainlineArrowDirection::atRear;
break;
case 2:// at both
case 2:// at four way
arrowDirection = GrainlineArrowDirection::atFourWay;
break;
case 3:// at both
default:
arrowDirection = GrainlineArrowDirection::atBoth;
break;

View file

@ -121,6 +121,8 @@ auto GrainlineArrowDirrectionToString(GrainlineArrowDirection type) -> QString
return ML::atFrontStr;
case GrainlineArrowDirection::atRear:
return ML::atRearStr;
case GrainlineArrowDirection::atFourWay:
return ML::atFourWayStr;
case GrainlineArrowDirection::atBoth:
default:
return ML::atBothStr;

View file

@ -117,6 +117,7 @@ const QString AttrCurvePoint = QStringLiteral("curvePoint"); // NOLINT
const QString atFrontStr = QStringLiteral("atFront"); // NOLINT(cert-err58-cpp)
const QString atRearStr = QStringLiteral("atRear"); // NOLINT(cert-err58-cpp)
const QString atFourWayStr = QStringLiteral("atFourWay"); // NOLINT(cert-err58-cpp)
const QString atBothStr = QStringLiteral("atBoth"); // NOLINT(cert-err58-cpp)
const QChar groupSep = QLatin1Char(';');

View file

@ -122,6 +122,7 @@ extern const QString AttrCurvePoint;
extern const QString atFrontStr;
extern const QString atRearStr;
extern const QString atFourWayStr;
extern const QString atBothStr;
extern const QChar groupSep;

View file

@ -2905,6 +2905,21 @@ void TMainWindow::InitDimensionGradation(int index, const MeasurementDimension_p
InitDimensionYWZItems(bases, labels, control, unit, dimension->IsBodyMeasurement(), fc);
}
// Calculate the width of the largest item using QFontMetrics
QFontMetrics fontMetrics(control->font());
int maxWidth = 0;
for (int i = 0; i < control->count(); ++i)
{
int itemWidth = TextWidth(fontMetrics, control->itemText(i));
if (itemWidth > maxWidth)
{
maxWidth = itemWidth;
}
}
// Set the minimum width of the view to the largest item width
control->view()->setMinimumWidth(maxWidth);
// after initialization the current index is 0. The signal for changing the index will not be triggered if not make
// it invalid first
control->setCurrentIndex(-1);

View file

@ -4918,6 +4918,21 @@ void MainWindow::InitDimensionGradation(int index, const MeasurementDimension_p
InitDimensionYWZGradation(bases, labels, control, dimension->IsBodyMeasurement());
}
// Calculate the width of the largest item using QFontMetrics
QFontMetrics fontMetrics(control->font());
int maxWidth = 0;
for (int i = 0; i < control->count(); ++i)
{
int itemWidth = TextWidth(fontMetrics, control->itemText(i));
if (itemWidth > maxWidth)
{
maxWidth = itemWidth;
}
}
// Set the minimum width of the view to the largest item width
control->view()->setMinimumWidth(maxWidth);
// after initialization the current index is 0. The signal for changing the index will not be triggered if not make
// it invalid first
control->setCurrentIndex(-1);
@ -5849,8 +5864,8 @@ auto MainWindow::LoadPattern(QString fileName, const QString& customMeasureFile)
QFuture<VPatternConverter *> futureConverter = QtConcurrent::run([fileName]()
{
QScopedPointer<VPatternConverter> converter(new VPatternConverter(fileName));
return converter.take();
std::unique_ptr<VPatternConverter> converter(new VPatternConverter(fileName));
return converter.release();
});
//We have unsaved changes or load more then one file per time

View file

@ -95,5 +95,6 @@
<file>schema/layout/v0.1.1.xsd</file>
<file>schema/layout/v0.1.2.xsd</file>
<file>schema/layout/v0.1.3.xsd</file>
<file>schema/layout/v0.1.4.xsd</file>
</qresource>
</RCC>

View file

@ -0,0 +1,568 @@
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="layout">
<xs:complexType>
<xs:sequence>
<xs:element name="properties">
<xs:complexType>
<xs:sequence>
<xs:element type="units" name="unit"/>
<xs:element type="xs:string" name="title"/>
<xs:element type="xs:string" name="description"/>
<xs:element name="control">
<xs:complexType>
<xs:attribute type="xs:boolean" name="warningSuperposition"/>
<xs:attribute type="xs:boolean" name="warningOutOfBound"/>
<xs:attribute type="xs:boolean" name="stickyEdges"/>
<xs:attribute type="xs:boolean" name="followGrainline"/>
<xs:attribute type="xs:float" name="piecesGap"/>
</xs:complexType>
</xs:element>
<xs:element name="tiles">
<xs:complexType>
<xs:sequence>
<xs:element name="size">
<xs:complexType>
<xs:attribute type="xs:float" name="width" use="required"/>
<xs:attribute type="xs:float" name="length" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="margin">
<xs:complexType>
<xs:attribute type="xs:float" name="top"/>
<xs:attribute type="xs:float" name="right"/>
<xs:attribute type="xs:float" name="bottom"/>
<xs:attribute type="xs:float" name="left"/>
<xs:attribute type="xs:boolean" name="ignoreMargins"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:boolean" name="visible"/>
<xs:attribute type="xs:string" name="matchingMarks"/>
<xs:attribute type="xs:boolean" name="printScheme"/>
<xs:attribute type="xs:boolean" name="tileNumber"/>
</xs:complexType>
</xs:element>
<xs:element name="scale">
<xs:complexType>
<xs:attribute type="LayoutScale" name="xScale"/>
<xs:attribute type="LayoutScale" name="yScale"/>
</xs:complexType>
</xs:element>
<xs:element name="watermark">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:boolean" name="showPreview" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="unplacedPieces">
<xs:complexType>
<xs:sequence>
<xs:element name="piece" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="seamLine">
<xs:complexType>
<xs:sequence>
<xs:element name="point" minOccurs="3" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute type="xs:double" name="x" use="required"/>
<xs:attribute type="xs:double" name="y" use="required"/>
<xs:attribute type="xs:boolean" name="turnPoint" use="optional"/>
<xs:attribute type="xs:boolean" name="curvePoint" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="seamAllowance">
<xs:complexType>
<xs:sequence>
<xs:element name="point" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute type="xs:double" name="x" use="required"/>
<xs:attribute type="xs:double" name="y" use="required"/>
<xs:attribute type="xs:boolean" name="turnPoint" use="optional"/>
<xs:attribute type="xs:boolean" name="curvePoint" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:boolean" name="enabled" use="optional"/>
<xs:attribute type="xs:boolean" name="builtIn" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="grainline">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="PathOrEmpty">
<xs:attribute type="xs:boolean" name="enabled" use="optional"/>
<xs:attribute type="xs:float" name="angle" use="optional"/>
<xs:attribute type="ArrowDirection" name="arrowDirection" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="notches">
<xs:complexType>
<xs:sequence>
<xs:element name="notch" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute type="xs:boolean" name="builtIn" use="optional"/>
<xs:attribute type="NotchType" name="type" use="optional"/>
<xs:attribute type="LinePath" name="baseLine" use="optional"/>
<xs:attribute type="LinesPath" name="path" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="internalPaths">
<xs:complexType>
<xs:sequence>
<xs:element name="internalPath" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="point" minOccurs="2" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute type="xs:double" name="x" use="required"/>
<xs:attribute type="xs:double" name="y" use="required"/>
<xs:attribute type="xs:boolean" name="turnPoint" use="optional"/>
<xs:attribute type="xs:boolean" name="curvePoint" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:boolean" name="cut" use="optional"/>
<xs:attribute type="CurvePenStyle" name="penStyle" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="markers">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="marker" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:attribute type="Transformation" name="transform" use="required"/>
<xs:attribute type="MarkerType" name="type" use="required"/>
<xs:attribute type="PointPath" name="center" use="required"/>
<xs:attribute type="RectPath" name="box" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="labels">
<xs:complexType>
<xs:sequence>
<xs:element name="pieceLabel" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="lines">
<xs:complexType>
<xs:sequence>
<xs:element name="line" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:boolean" name="bold" use="optional"/>
<xs:attribute type="xs:boolean" name="italic" use="optional"/>
<xs:attribute type="xs:unsignedInt" name="alignment" use="optional"/>
<xs:attribute type="xs:unsignedInt" name="fontSize" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="font"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="shape" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="patternLabel" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="lines">
<xs:complexType>
<xs:sequence>
<xs:element name="line" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:boolean" name="bold" use="optional"/>
<xs:attribute type="xs:boolean" name="italic" use="optional"/>
<xs:attribute type="xs:unsignedInt" name="alignment" use="optional"/>
<xs:attribute type="xs:unsignedInt" name="fontSize" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="font"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="shape" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="uid" type="uuid" use="required"/>
<xs:attribute type="xs:string" name="name"/>
<xs:attribute type="xs:boolean" name="mirrored"/>
<xs:attribute type="xs:boolean" name="forbidFlipping"/>
<xs:attribute type="xs:boolean" name="forceFlipping"/>
<xs:attribute type="xs:boolean" name="sewLineOnDrawing"/>
<xs:attribute type="Transformation" name="transform"/>
<xs:attribute type="xs:string" name="gradationLabel"/>
<xs:attribute type="xs:unsignedInt" name="copyNumber"/>
<xs:attribute type="xs:boolean" name="showSeamline"/>
<xs:attribute type="xs:float" name="xScale"/>
<xs:attribute type="xs:float" name="yScale"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="sheets">
<xs:complexType>
<xs:sequence>
<xs:element name="sheet" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="name"/>
<xs:element name="size">
<xs:complexType>
<xs:attribute type="xs:float" name="width" use="required"/>
<xs:attribute type="xs:float" name="length" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="margin">
<xs:complexType>
<xs:attribute type="xs:float" name="top"/>
<xs:attribute type="xs:float" name="right"/>
<xs:attribute type="xs:float" name="bottom"/>
<xs:attribute type="xs:float" name="left"/>
<xs:attribute type="xs:boolean" name="ignoreMargins"/>
</xs:complexType>
</xs:element>
<xs:element name="pieces">
<xs:complexType>
<xs:sequence>
<xs:element name="piece" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="seamLine">
<xs:complexType>
<xs:sequence>
<xs:element name="point" minOccurs="3" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute type="xs:double" name="x" use="required"/>
<xs:attribute type="xs:double" name="y" use="required"/>
<xs:attribute type="xs:boolean" name="turnPoint" use="optional"/>
<xs:attribute type="xs:boolean" name="curvePoint" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="seamAllowance">
<xs:complexType>
<xs:sequence>
<xs:element name="point" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute type="xs:double" name="x" use="required"/>
<xs:attribute type="xs:double" name="y" use="required"/>
<xs:attribute type="xs:boolean" name="turnPoint" use="optional"/>
<xs:attribute type="xs:boolean" name="curvePoint" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:boolean" name="enabled" use="optional"/>
<xs:attribute type="xs:boolean" name="builtIn" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="grainline">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="PathOrEmpty">
<xs:attribute type="xs:boolean" name="enabled" use="optional"/>
<xs:attribute type="xs:float" name="angle" use="optional"/>
<xs:attribute type="ArrowDirection" name="arrowDirection" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="notches">
<xs:complexType>
<xs:sequence>
<xs:element name="notch" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute type="xs:boolean" name="builtIn" use="optional"/>
<xs:attribute type="NotchType" name="type" use="optional"/>
<xs:attribute type="LinePath" name="baseLine" use="optional"/>
<xs:attribute type="LinesPath" name="path" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="internalPaths">
<xs:complexType>
<xs:sequence>
<xs:element name="internalPath" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="point" minOccurs="2" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute type="xs:double" name="x" use="required"/>
<xs:attribute type="xs:double" name="y" use="required"/>
<xs:attribute type="xs:boolean" name="turnPoint" use="optional"/>
<xs:attribute type="xs:boolean" name="curvePoint" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:boolean" name="cut" use="optional"/>
<xs:attribute type="CurvePenStyle" name="penStyle" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="markers">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="marker" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:attribute type="Transformation" name="transform" use="required"/>
<xs:attribute type="MarkerType" name="type" use="required"/>
<xs:attribute type="PointPath" name="center" use="required"/>
<xs:attribute type="RectPath" name="box" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="labels">
<xs:complexType>
<xs:sequence>
<xs:element name="pieceLabel" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="lines">
<xs:complexType>
<xs:sequence>
<xs:element name="line" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:boolean" name="bold" use="optional"/>
<xs:attribute type="xs:boolean" name="italic" use="optional"/>
<xs:attribute type="AlignmentType" name="alignment" use="optional"/>
<xs:attribute type="xs:unsignedInt" name="fontSize" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="font"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="PathNotEmpty" name="shape" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="patternLabel" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="lines">
<xs:complexType>
<xs:sequence>
<xs:element name="line" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:boolean" name="bold" use="optional"/>
<xs:attribute type="xs:boolean" name="italic" use="optional"/>
<xs:attribute type="AlignmentType" name="alignment" use="optional"/>
<xs:attribute type="xs:unsignedInt" name="fontSize" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="font"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="PathNotEmpty" name="shape" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="uid" type="uuid" use="required"/>
<xs:attribute type="xs:string" name="name"/>
<xs:attribute type="xs:boolean" name="mirrored"/>
<xs:attribute type="xs:boolean" name="forbidFlipping"/>
<xs:attribute type="xs:boolean" name="forceFlipping"/>
<xs:attribute type="xs:boolean" name="sewLineOnDrawing"/>
<xs:attribute type="Transformation" name="transform"/>
<xs:attribute type="xs:string" name="gradationLabel"/>
<xs:attribute type="xs:unsignedInt" name="copyNumber"/>
<xs:attribute type="xs:boolean" name="showSeamline"/>
<xs:attribute type="xs:float" name="xScale"/>
<xs:attribute type="xs:float" name="yScale"/>
<xs:attribute type="xs:float" name="zValue"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="GrainlineType" name="grainlineType"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="formatVersion" name="version" use="required"/>
</xs:complexType>
</xs:element>
<!--Types-->
<xs:simpleType name="formatVersion">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="units">
<xs:restriction base="xs:string">
<xs:enumeration value="mm"/>
<xs:enumeration value="cm"/>
<xs:enumeration value="inch"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="uuid">
<xs:restriction base="xs:string">
<xs:pattern value="|\{[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}\}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ArrowDirection">
<xs:restriction base="xs:string">
<xs:enumeration value="atFront"/>
<xs:enumeration value="atRear"/>
<xs:enumeration value="atBoth"/>
<xs:enumeration value="atFourWay"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NotchType">
<xs:restriction base="xs:unsignedInt">
<xs:enumeration value="0"/>
<!--OneLine-->
<xs:enumeration value="1"/>
<!--TwoLines-->
<xs:enumeration value="2"/>
<!--ThreeLines-->
<xs:enumeration value="3"/>
<!--TMark-->
<xs:enumeration value="4"/>
<!--VMark-->
<xs:enumeration value="5"/>
<!--VMark2-->
<xs:enumeration value="6"/>
<!--UMark-->
<xs:enumeration value="7"/>
<!--BoxMark-->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CurvePenStyle">
<xs:restriction base="xs:string">
<xs:enumeration value="hair"/>
<xs:enumeration value="dashLine"/>
<xs:enumeration value="dotLine"/>
<xs:enumeration value="dashDotLine"/>
<xs:enumeration value="dashDotDotLine"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="MarkerType">
<xs:restriction base="xs:unsignedInt">
<xs:enumeration value="0"/><!--Segment-->
<xs:enumeration value="1"/><!--Rectangle-->
<xs:enumeration value="2"/><!--Cross-->
<xs:enumeration value="3"/><!--Tshaped-->
<xs:enumeration value="4"/><!--Doubletree-->
<xs:enumeration value="5"/><!--Corner-->
<xs:enumeration value="6"/><!--Triangle-->
<xs:enumeration value="7"/><!--Hshaped-->
<xs:enumeration value="8"/><!--Button-->
<xs:enumeration value="9"/><!--Circle-->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="AlignmentType">
<xs:restriction base="xs:unsignedInt">
<xs:enumeration value="0"/><!--default (no aligns)-->
<xs:enumeration value="1"/><!--aligns with the left edge-->
<xs:enumeration value="2"/><!--aligns with the right edge-->
<xs:enumeration value="4"/><!--Centers horizontally in the available space-->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Transformation">
<xs:restriction base="xs:string">
<xs:pattern value="([-+]?\d+\.?\d*([eE][-+]?\d+)?;){8,}[-+]?\d+\.?\d*([eE][-+]?\d+)?"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PathNotEmpty">
<xs:restriction base="xs:string">
<xs:pattern value="([-+]?\d+\.?\d*([eE][-+]?\d+)?,[-+]?\d+\.?\d*([eE][-+]?\d+)?\s){0,}[-+]?\d+\.?\d*([eE][-+]?\d+)?,[-+]?\d+\.?\d*([eE][-+]?\d+)?"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PathOrEmpty">
<xs:restriction base="xs:string">
<xs:pattern value="|([-+]?\d+\.?\d*([eE][-+]?\d+)?,[-+]?\d+\.?\d*([eE][-+]?\d+)?\s){0,}[-+]?\d+\.?\d*([eE][-+]?\d+)?,[-+]?\d+\.?\d*([eE][-+]?\d+)?"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="LinePath">
<xs:restriction base="xs:string">
<xs:pattern value="[-+]?\d+\.?\d*([eE][-+]?\d+)?,[-+]?\d+\.?\d*([eE][-+]?\d+)?;[-+]?\d+\.?\d*([eE][-+]?\d+)?,[-+]?\d+\.?\d*([eE][-+]?\d+)?"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="LinesPath">
<xs:restriction base="xs:string">
<xs:pattern value="([-+]?\d+\.?\d*([eE][-+]?\d+)?,[-+]?\d+\.?\d*([eE][-+]?\d+)?;[-+]?\d+\.?\d*([eE][-+]?\d+)?,[-+]?\d+\.?\d*([eE][-+]?\d+)?\*){0,}[-+]?\d+\.?\d*([eE][-+]?\d+)?,[-+]?\d+\.?\d*([eE][-+]?\d+)?;[-+]?\d+\.?\d*([eE][-+]?\d+)?,[-+]?\d+\.?\d*([eE][-+]?\d+)?"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PointPath">
<xs:restriction base="xs:string">
<xs:pattern value="[-+]?\d+\.?\d*([eE][-+]?\d+)?,[-+]?\d+\.?\d*([eE][-+]?\d+)?"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="RectPath">
<xs:restriction base="xs:string">
<xs:pattern value="([-+]?\d+\.?\d*([eE][-+]?\d+)?;){3,}[-+]?\d+\.?\d*([eE][-+]?\d+)?"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="GrainlineType">
<xs:restriction base="xs:string">
<xs:enumeration value="horizontal"/>
<xs:enumeration value="vertical"/>
<xs:enumeration value="notFixed"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="LayoutScale">
<xs:restriction base="xs:float">
<xs:minInclusive value="0.01"/>
<xs:maxInclusive value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View file

@ -953,6 +953,8 @@
<!--Front-->
<xs:enumeration value="2"/>
<!--Rear-->
<xs:enumeration value="3"/>
<!--For way-->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="pieceVersion">

View file

@ -39,8 +39,8 @@
*/
const QString VLayoutConverter::LayoutMinVerStr = QStringLiteral("0.1.0");
const QString VLayoutConverter::LayoutMaxVerStr = QStringLiteral("0.1.3");
const QString VLayoutConverter::CurrentSchema = QStringLiteral("://schema/layout/v0.1.3.xsd");
const QString VLayoutConverter::LayoutMaxVerStr = QStringLiteral("0.1.4");
const QString VLayoutConverter::CurrentSchema = QStringLiteral("://schema/layout/v0.1.4.xsd");
//VLayoutConverter::LayoutMinVer; // <== DON'T FORGET TO UPDATE TOO!!!!
//VLayoutConverter::LayoutMaxVer; // <== DON'T FORGET TO UPDATE TOO!!!!
@ -125,7 +125,8 @@ auto VLayoutConverter::XSDSchemas() -> QHash<unsigned int, QString>
std::make_pair(FormatVersion(0, 1, 0), QStringLiteral("://schema/layout/v0.1.0.xsd")),
std::make_pair(FormatVersion(0, 1, 1), QStringLiteral("://schema/layout/v0.1.1.xsd")),
std::make_pair(FormatVersion(0, 1, 2), QStringLiteral("://schema/layout/v0.1.2.xsd")),
std::make_pair(FormatVersion(0, 1, 3), CurrentSchema),
std::make_pair(FormatVersion(0, 1, 3), QStringLiteral("://schema/layout/v0.1.3.xsd")),
std::make_pair(FormatVersion(0, 1, 4), CurrentSchema),
};
return schemas;
@ -156,9 +157,12 @@ void VLayoutConverter::ApplyPatches()
case (FormatVersion(0, 1, 1)):
case (FormatVersion(0, 1, 2)):
ToV0_1_3();
ValidateXML(XSDSchema(FormatVersion(0, 1, 3)));
Q_FALLTHROUGH();
case (FormatVersion(0, 1, 3)):
ToV0_1_4();
ValidateXML(CurrentSchema);
Q_FALLTHROUGH();
case (FormatVersion(0, 1, 4)):
break;
default:
InvalidVersion(m_ver);
@ -271,3 +275,13 @@ void VLayoutConverter::ToV0_1_3()
SetVersion(QStringLiteral("0.1.3"));
Save();
}
//---------------------------------------------------------------------------------------------------------------------
void VLayoutConverter::ToV0_1_4()
{
// TODO. Delete if minimal supported version is 0.1.4
Q_STATIC_ASSERT_X(VLayoutConverter::LayoutMinVer < FormatVersion(0, 1, 4),
"Time to refactor the code.");
SetVersion(QStringLiteral("0.1.4"));
Save();
}

View file

@ -46,7 +46,7 @@ public:
static const QString LayoutMaxVerStr;
static const QString CurrentSchema;
static Q_DECL_CONSTEXPR const unsigned LayoutMinVer = FormatVersion(0, 1, 0);
static Q_DECL_CONSTEXPR const unsigned LayoutMaxVer = FormatVersion(0, 1, 3);
static Q_DECL_CONSTEXPR const unsigned LayoutMaxVer = FormatVersion(0, 1, 4);
static auto XSDSchemas() -> QHash <unsigned, QString>;
@ -70,6 +70,7 @@ protected:
void ConvertPathToV0_1_3(QDomElement &node);
void ToV0_1_3();
void ToV0_1_4();
private:
Q_DISABLE_COPY_MOVE(VLayoutConverter) // NOLINT

View file

@ -1002,7 +1002,7 @@ QString VPatternConverter::FixMeasurementInFormulaToV0_2_0(const QString &formul
QScopedPointer<qmu::QmuTokenParser> cal(new qmu::QmuTokenParser(formula, false, false));// Eval formula
QMap<vsizetype, QString> tokens = cal->GetTokens();// Tokens (variables, measurements)
delete cal.take();
cal.reset();
QList<vsizetype> tKeys = tokens.keys();// Take all tokens positions
QList<QString> tValues = tokens.values();

View file

@ -287,12 +287,19 @@ void dx_iface::AddAAMALayers()
// layer.name = "26";// REF
// layer.color = DRW::black;
// cData.layers.push_back(layer);
// cData.layers.push_back(layer);
}
void dx_iface::AddDefHeaderData()
{
cData.headerC.addInt("$HANDLING", 1, 70); // Enabled by default for flat version.
}
void dx_iface::AddAAMAHeaderData()
{
cData.headerC.addStr("$CLAYER", "1", 8); // Current layer name
// Looks like doesn't work with handling enabled.
// Missing or 0 for $HANDLING value disables handling.
}
void dx_iface::AddASTMLayers()

View file

@ -101,6 +101,8 @@ public:
bool fileExport(bool binary);
void writeEntity(DRW_Entity* e);
void AddXSpaceBlock(bool add) {dxfW->AddXSpaceBlock(add);}
std::string ErrorString() const;
//reimplement virtual DRW_Interface functions
@ -126,6 +128,7 @@ public:
void AddQtLTypes();
void AddDefLayers();
void AddAAMALayers();
void AddDefHeaderData();
void AddAAMAHeaderData();
void AddASTMLayers();

View file

@ -234,9 +234,6 @@ class DRW_Point : public DRW_Entity {
SETENTFRIENDS
public:
DRW_Point()
: basePoint(),
thickness(0),
extPoint(DRW_Coord(0, 0, 1))
{
eType = DRW::POINT;
}
@ -247,9 +244,9 @@ protected:
bool parseCode(int code, dxfReader *reader) override;
public:
DRW_Coord basePoint; /*!< base point, code 10, 20 & 30 */
double thickness; /*!< thickness, code 39 */
DRW_Coord extPoint; /*!< Dir extrusion normal vector, code 210, 220 & 230 */
DRW_Coord basePoint{}; /*!< base point, code 10, 20 & 30 */
double thickness{0}; /*!< thickness, code 39 */
DRW_Coord extPoint{DRW_Coord(0, 0, 1)}; /*!< Dir extrusion normal vector, code 210, 220 & 230 */
// TNick: we're not handling code 50 - Angle of the X axis for
// the UCS in effect when the point was drawn
};

View file

@ -120,31 +120,32 @@ void DRW_Header::write(dxfWriter *writer, DRW::Version ver){
DRW_Coord varCoord;
writer->writeString(2, "HEADER");
writer->writeString(9, "$ACADVER");
switch (ver) {
case DRW::AC1006: //unsupported version acad 10
case DRW::AC1009: //acad 11 & 12
varStr = "AC1009";
break;
case DRW::AC1012: //unsupported version acad 13
case DRW::AC1014: //acad 14
varStr = "AC1014";
break;
case DRW::AC1015: //acad 2000
varStr = "AC1015";
break;
case DRW::AC1018: //acad 2004
varStr = "AC1018";
break;
case DRW::AC1024: //acad 2010
varStr = "AC1024";
break;
case DRW::AC1027: //acad 2013
varStr = "AC1027";
break;
case DRW::AC1021: //acad 2007
default: //acad 2007 default version
varStr = "AC1021";
break;
switch (ver)
{
case DRW::AC1006: //unsupported version acad 10
case DRW::AC1009: //acad 11 & 12
varStr = "AC1009";
break;
case DRW::AC1012: //unsupported version acad 13
case DRW::AC1014: //acad 14
varStr = "AC1014";
break;
case DRW::AC1015: //acad 2000
varStr = "AC1015";
break;
case DRW::AC1018: //acad 2004
varStr = "AC1018";
break;
case DRW::AC1024: //acad 2010
varStr = "AC1024";
break;
case DRW::AC1027: //acad 2013
varStr = "AC1027";
break;
case DRW::AC1021: //acad 2007
default: //acad 2007 default version
varStr = "AC1021";
break;
}
writer->writeString(1, varStr);
writer->setVersion(varStr, true);
@ -271,14 +272,15 @@ void DRW_Header::write(dxfWriter *writer, DRW::Version ver){
writer->writeUtf8String(7, varStr);
else
writer->writeString(7, "STANDARD");
writer->writeString(9, "$CLAYER");
if (getStr("$CLAYER", &varStr))
{
writer->writeString(9, "$CLAYER");
if (ver == DRW::AC1009)
writer->writeUtf8Caps(8, varStr);
else
writer->writeUtf8String(8, varStr);
else
writer->writeString(8, "0");
}
writer->writeString(9, "$CELTYPE");
if (getStr("$CELTYPE", &varStr))
if (ver == DRW::AC1009)
@ -878,7 +880,8 @@ void DRW_Header::write(dxfWriter *writer, DRW::Version ver){
writer->writeInt16(70, varInt);
} else
writer->writeInt16(70, 8);
if (ver < DRW::AC1012) {
if (ver < DRW::AC1012)
{
writer->writeString(9, "$ATTDIA");
if (getInt("$ATTDIA", &varInt)) {
writer->writeInt16(70, varInt);
@ -889,11 +892,19 @@ void DRW_Header::write(dxfWriter *writer, DRW::Version ver){
writer->writeInt16(70, varInt);
} else
writer->writeInt16(70, 1);
writer->writeString(9, "$HANDLING");
if (getInt("$HANDLING", &varInt)) {
// A handle is an arbitrary but in your DXF file unique hex value as string like 10FF. It is common to to use
// uppercase letters for hex numbers. Handle can have up to 16 hexadecimal digits (8 bytes).
//
// For DXF R10 until R12 the usage of handles was optional. The header variable $HANDLING set to 1 indicate the
// usage of handles, else $HANDLING is 0 or missing.
//
// For DXF R13 and later the usage of handles is mandatory and the header variable $HANDLING was removed.
if (getInt("$HANDLING", &varInt))
{
writer->writeString(9, "$HANDLING");
writer->writeInt16(70, varInt);
} else
writer->writeInt16(70, 1);
}
}
writer->writeString(9, "$HANDSEED");
//RLZ dxfHex(5, 0xFFFF);
@ -1694,37 +1705,39 @@ void DRW_Header::addCoord(std::string key, const DRW_Coord &value, int code){
vars[key] =curr;
}
bool DRW_Header::getDouble(const std::string &key, double *varDouble){
bool DRW_Header::getDouble(const std::string &key, double *varDouble) const
{
bool result = false;
auto it=vars.find( key);
if (it != vars.end()) {
if (it != vars.end())
{
DRW_Variant *var = (*it).second;
if (var->type == DRW_Variant::DOUBLE) {
if (var->type == DRW_Variant::DOUBLE)
{
*varDouble = var->content.d;
result = true;
}
delete var;
vars.erase (it);
}
return result;
}
bool DRW_Header::getInt(const std::string &key, int *varInt){
bool DRW_Header::getInt(const std::string &key, int *varInt) const
{
bool result = false;
auto it=vars.find( key);
if (it != vars.end()) {
if (it != vars.end())
{
DRW_Variant *var = (*it).second;
if (var->type == DRW_Variant::INTEGER) {
if (var->type == DRW_Variant::INTEGER)
{
*varInt = var->content.i;
result = true;
}
delete var;
vars.erase (it);
}
return result;
}
bool DRW_Header::getStr(const std::string &key, std::string *varStr){
bool DRW_Header::getStr(const std::string &key, std::string *varStr) const{
bool result = false;
auto it=vars.find( key);
if (it != vars.end()) {
@ -1733,23 +1746,22 @@ bool DRW_Header::getStr(const std::string &key, std::string *varStr){
*varStr = *var->content.s;
result = true;
}
delete var;
vars.erase (it);
}
return result;
}
bool DRW_Header::getCoord(const std::string &key, DRW_Coord *varCoord){
bool DRW_Header::getCoord(const std::string &key, DRW_Coord *varCoord) const
{
bool result = false;
auto it=vars.find( key);
if (it != vars.end()) {
if (it != vars.end())
{
DRW_Variant *var = (*it).second;
if (var->type == DRW_Variant::COORD) {
if (var->type == DRW_Variant::COORD)
{
*varCoord = *var->content.v;
result = true;
}
delete var;
vars.erase (it);
}
return result;
}

View file

@ -117,10 +117,10 @@ public:
protected:
bool parseCode(int code, dxfReader *reader);
private:
bool getDouble(const std::string &key, double *varDouble);
bool getInt(const std::string &key, int *varInt);
bool getStr(const std::string &key, std::string *varStr);
bool getCoord(const std::string &key, DRW_Coord *varCoord);
bool getDouble(const std::string &key, double *varDouble) const;
bool getInt(const std::string &key, int *varInt) const;
bool getStr(const std::string &key, std::string *varStr) const;
bool getCoord(const std::string &key, DRW_Coord *varCoord) const;
void clearVars()
{
for (auto it=vars.begin(); it!=vars.end(); ++it)

View file

@ -142,10 +142,10 @@ bool dxfRW::write(DRW_Interface *interface_, DRW::Version ver, bool bin){
std::string comm = std::string("dxfrw ") + std::string(DRW_VERSION);
writer->writeString(999, comm);
}
DRW_Header header;
this->header = DRW_Header();
iface->writeHeader(header);
writer->writeString(0, "SECTION");
entCount =FIRSTHANDLE;
entCount = FIRSTHANDLE;
header.write(writer, version);
writer->writeString(0, "ENDSEC");
if (ver > DRW::AC1009) {
@ -190,9 +190,33 @@ bool dxfRW::write(DRW_Interface *interface_, DRW::Version ver, bool bin){
return isOk;
}
bool dxfRW::writeEntity(DRW_Entity *ent) {
ent->handle = static_cast<duint32>(++entCount);
writer->writeString(5, toHexStr(static_cast<int>(ent->handle)));
bool dxfRW::writeEntity(DRW_Entity *ent)
{
// A handle is an arbitrary but in your DXF file unique hex value as string like 10FF. It is common to to use
// uppercase letters for hex numbers. Handle can have up to 16 hexadecimal digits (8 bytes).
//
// For DXF R10 until R12 the usage of handles was optional. The header variable $HANDLING set to 1 indicate the
// usage of handles, else $HANDLING is 0 or missing.
//
// For DXF R13 and later the usage of handles is mandatory and the header variable $HANDLING was removed.
if (version < DRW::AC1012)
{
int varInt = 0;
if (header.getInt("$HANDLING", &varInt))
{
if (varInt != 0)
{
ent->handle = static_cast<duint32>(++entCount);
writer->writeString(5, toHexStr(static_cast<int>(ent->handle)));
}
}
}
else
{
ent->handle = static_cast<duint32>(++entCount);
writer->writeString(5, toHexStr(static_cast<int>(ent->handle)));
}
if (version > DRW::AC1009) {
writer->writeString(100, "AcDbEntity");
}
@ -467,6 +491,7 @@ bool dxfRW::writeDimstyle(DRW_Dimstyle *ent){
if (name == "STANDARD")
dimstyleStd = true;
}
if (version > DRW::AC1009) {
writer->writeString(105, toHexStr(++entCount));
}
@ -615,7 +640,10 @@ bool dxfRW::writeASTMNotch(DRW_ASTMNotch *ent)
{
writePoint(ent);
writer->writeDouble(50, ent->angle);
writer->writeDouble(39, ent->thickness); // Defined, but not used in point
if (not qFuzzyIsNull(ent->thickness))
{
writer->writeDouble(39, ent->thickness); // Defined, but not used in point
}
return true;
}
@ -1694,92 +1722,129 @@ bool dxfRW::writeTables() {
return true;
}
bool dxfRW::writeBlocks() {
writer->writeString(0, "BLOCK");
if (version > DRW::AC1009) {
writer->writeString(5, "20");
if (version > DRW::AC1014) {
writer->writeString(330, "1F");
bool dxfRW::writeBlocks()
{
if (version > DRW::AC1009 || m_xSpaceBlock)
{
writer->writeString(0, "BLOCK");
if (version > DRW::AC1009)
{
writer->writeString(5, "20");
if (version > DRW::AC1014)
{
writer->writeString(330, "1F");
}
writer->writeString(100, "AcDbEntity");
}
writer->writeString(100, "AcDbEntity");
}
writer->writeString(8, "0");
if (version > DRW::AC1009) {
writer->writeString(100, "AcDbBlockBegin");
writer->writeString(2, "*Model_Space");
} else
writer->writeString(2, "$MODEL_SPACE");
writer->writeInt16(70, 0);
writer->writeDouble(10, 0.0);
writer->writeDouble(20, 0.0);
writer->writeDouble(30, 0.0);
if (version > DRW::AC1009)
writer->writeString(3, "*Model_Space");
else
writer->writeString(3, "$MODEL_SPACE");
writer->writeString(1, "");
writer->writeString(0, "ENDBLK");
if (version > DRW::AC1009) {
writer->writeString(5, "21");
if (version > DRW::AC1014) {
writer->writeString(330, "1F");
writer->writeString(8, "0");
if (version > DRW::AC1009)
{
writer->writeString(100, "AcDbBlockBegin");
writer->writeString(2, "*Model_Space");
}
else
{
writer->writeString(2, "$MODEL_SPACE");
}
writer->writeInt16(70, 0);
writer->writeDouble(10, 0.0);
writer->writeDouble(20, 0.0);
writer->writeDouble(30, 0.0);
if (version > DRW::AC1009)
{
writer->writeString(3, "*Model_Space");
}
else
{
writer->writeString(3, "$MODEL_SPACE");
}
writer->writeString(1, "");
writer->writeString(0, "ENDBLK");
if (version > DRW::AC1009)
{
writer->writeString(5, "21");
if (version > DRW::AC1014)
{
writer->writeString(330, "1F");
}
writer->writeString(100, "AcDbEntity");
}
writer->writeString(8, "0");
if (version > DRW::AC1009)
{
writer->writeString(100, "AcDbBlockEnd");
}
writer->writeString(100, "AcDbEntity");
}
writer->writeString(8, "0");
if (version > DRW::AC1009)
writer->writeString(100, "AcDbBlockEnd");
writer->writeString(0, "BLOCK");
if (version > DRW::AC1009) {
writer->writeString(5, "1C");
if (version > DRW::AC1014) {
writer->writeString(330, "1B");
writer->writeString(0, "BLOCK");
if (version > DRW::AC1009)
{
writer->writeString(5, "1C");
if (version > DRW::AC1014)
{
writer->writeString(330, "1B");
}
writer->writeString(100, "AcDbEntity");
}
writer->writeString(100, "AcDbEntity");
}
writer->writeString(8, "0");
if (version > DRW::AC1009) {
writer->writeString(100, "AcDbBlockBegin");
writer->writeString(2, "*Paper_Space");
} else
writer->writeString(2, "$PAPER_SPACE");
writer->writeInt16(70, 0);
writer->writeDouble(10, 0.0);
writer->writeDouble(20, 0.0);
writer->writeDouble(30, 0.0);
if (version > DRW::AC1009)
writer->writeString(3, "*Paper_Space");
else
writer->writeString(3, "$PAPER_SPACE");
writer->writeString(1, "");
writer->writeString(0, "ENDBLK");
if (version > DRW::AC1009) {
writer->writeString(5, "1D");
if (version > DRW::AC1014) {
writer->writeString(330, "1F");
writer->writeString(8, "0");
if (version > DRW::AC1009)
{
writer->writeString(100, "AcDbBlockBegin");
writer->writeString(2, "*Paper_Space");
}
else
{
writer->writeString(2, "$PAPER_SPACE");
}
writer->writeInt16(70, 0);
writer->writeDouble(10, 0.0);
writer->writeDouble(20, 0.0);
writer->writeDouble(30, 0.0);
if (version > DRW::AC1009)
{
writer->writeString(3, "*Paper_Space");
}
else
{
writer->writeString(3, "$PAPER_SPACE");
}
writer->writeString(1, "");
writer->writeString(0, "ENDBLK");
if (version > DRW::AC1009)
{
writer->writeString(5, "1D");
if (version > DRW::AC1014)
{
writer->writeString(330, "1F");
}
writer->writeString(100, "AcDbEntity");
}
writer->writeString(8, "0");
if (version > DRW::AC1009)
{
writer->writeString(100, "AcDbBlockEnd");
}
writer->writeString(100, "AcDbEntity");
}
writer->writeString(8, "0");
if (version > DRW::AC1009)
writer->writeString(100, "AcDbBlockEnd");
writingBlock = false;
iface->writeBlocks();
if (writingBlock) {
if (writingBlock)
{
writingBlock = false;
writer->writeString(0, "ENDBLK");
if (version > DRW::AC1009) {
if (version > DRW::AC1009)
{
writer->writeString(5, toHexStr(currHandle+2));
// writer->writeString(5, "1D");
if (version > DRW::AC1014) {
if (version > DRW::AC1014)
{
writer->writeString(330, toHexStr(currHandle));
}
writer->writeString(100, "AcDbEntity");
}
writer->writeString(8, "0");
if (version > DRW::AC1009)
{
writer->writeString(100, "AcDbBlockEnd");
}
}
return true;
}
@ -2702,11 +2767,11 @@ bool dxfRW::processPolyline() {
bool dxfRW::processVertex(DRW_Polyline *pl) {
DRW_DBG("dxfRW::processVertex");
int code;
QScopedPointer<DRW_Vertex> v(new DRW_Vertex());
std::unique_ptr<DRW_Vertex> v(new DRW_Vertex());
while (reader->readRec(&code)) {
DRW_DBG(code); DRW_DBG("\n");
if (0 == code) {
pl->appendVertex(v.take());
pl->appendVertex(v.release());
nextentity = reader->getString();
DRW_DBG(nextentity); DRW_DBG("\n");
if (nextentity == "SEQEND") {

View file

@ -39,6 +39,7 @@ public:
*/
bool read(DRW_Interface *interface_, bool ext);
void setBinary(bool b) {binFile = b;}
void AddXSpaceBlock(bool add) {m_xSpaceBlock = add;}
bool write(DRW_Interface *interface_, DRW::Version ver, bool bin);
bool writeLineType(DRW_LType *ent);
@ -138,6 +139,7 @@ private:
std::string fileName;
std::string codePage;
bool binFile;
bool m_xSpaceBlock{true};
dxfReader *reader;
dxfWriter *writer;
DRW_Interface *iface;

View file

@ -157,6 +157,7 @@ auto VDxfEngine::begin(QPaintDevice *pdev) -> bool
m_input = QSharedPointer<dx_iface>(new dx_iface(GetFileNameForLocale(), m_version, m_varMeasurement,
m_varInsunits));
m_input->AddDefHeaderData();
m_input->AddQtLTypes();
m_input->AddDefLayers();
return true;
@ -700,6 +701,7 @@ auto VDxfEngine::ExportToAAMA(const QVector<VLayoutPiece> &details) -> bool
}
m_input = QSharedPointer<dx_iface>::create(GetFileNameForLocale(), m_version, m_varMeasurement, m_varInsunits);
m_input->AddXSpaceBlock(false);
m_input->AddAAMAHeaderData();
if (m_version > DRW::AC1009)
{
@ -730,6 +732,7 @@ auto VDxfEngine::ExportToAAMA(const QVector<VLayoutPiece> &details) -> bool
}
detailBlock->name = blockName.toStdString();
detailBlock->flags = 64;
detailBlock->layer = *layer1;
detail.Scale(m_xscale, m_yscale);
@ -744,11 +747,11 @@ auto VDxfEngine::ExportToAAMA(const QVector<VLayoutPiece> &details) -> bool
m_input->AddBlock(detailBlock.data());
QScopedPointer<DRW_Insert> insert(new DRW_Insert());
std::unique_ptr<DRW_Insert> insert(new DRW_Insert());
insert->name = blockName.toStdString();
insert->layer = *layer1;
m_input->AddEntity(insert.take());
m_input->AddEntity(insert.release());
deleteBlock = false; // lose ownership
}
@ -844,13 +847,16 @@ void VDxfEngine::ExportAAMANotch(const QSharedPointer<dx_ifaceBlock> &detailBloc
const QVector<VLayoutPassmark> passmarks = detail.GetMappedPassmarks();
for(const auto &passmark : passmarks)
{
for (const auto &line : passmark.lines)
{
if (DRW_Entity *e = AAMALine(line, *layer4))
{
detailBlock->ent.push_back(e);
}
}
std::unique_ptr<DRW_ASTMNotch> notch(new DRW_ASTMNotch());
const QPointF center = passmark.baseLine.p1();
notch->basePoint = DRW_Coord(FromPixel(center.x(), m_varInsunits),
FromPixel(GetSize().height() - center.y(), m_varInsunits),
FromPixel(passmark.baseLine.length(), m_varInsunits));
notch->angle = passmark.baseLine.angle();
notch->layer = *layer4;
detailBlock->ent.push_back(notch.release());
}
}
}
@ -928,7 +934,7 @@ auto VDxfEngine::ExportToASTM(const QVector<VLayoutPiece> &details) -> bool
m_input = QSharedPointer<dx_iface>(new dx_iface(GetFileNameForLocale(), m_version, m_varMeasurement,
m_varInsunits));
m_input->AddXSpaceBlock(false);
m_input->AddAAMAHeaderData();
if (m_version > DRW::AC1009)
{
@ -974,11 +980,11 @@ auto VDxfEngine::ExportToASTM(const QVector<VLayoutPiece> &details) -> bool
m_input->AddBlock(detailBlock.data());
QScopedPointer<DRW_Insert> insert(new DRW_Insert());
std::unique_ptr<DRW_Insert> insert(new DRW_Insert());
insert->name = blockName.toStdString();
insert->layer = *layer1;
m_input->AddEntity(insert.take());
m_input->AddEntity(insert.release());
deleteBlock = false; // lose ownership
}
@ -1125,10 +1131,17 @@ void VDxfEngine::ExportASTMDrill(const QSharedPointer<dx_ifaceBlock> &detailBloc
|| label.Type() == PlaceLabelType::Circle)
{
const QPointF center = detail.GetMatrix().map(label.Center());
detailBlock->ent.push_back(AAMAPoint(center, *layer13));
QLineF diameter = detail.GetMatrix().map(QLineF(label.Box().bottomLeft(), label.Box().topRight()));
std::unique_ptr<DRW_Point> point(new DRW_Point());
point->basePoint = DRW_Coord(FromPixel(center.x(), m_varInsunits),
FromPixel(GetSize().height() - center.y(), m_varInsunits),
FromPixel(diameter.length(), m_varInsunits));
point->layer = *layer13;
detailBlock->ent.push_back(point.release());
// TODO. Investigate drill category
// QPointF pos(center.x(), center.y() - ToPixel(AAMATextHeight, varInsunits));
// QPointF pos(center.x(), center.y() - ToPixel(AAMATextHeight, m_varInsunits));
// detailBlock->ent.push_back(AAMAText(pos, category, *layer13));
}
}
@ -1157,34 +1170,33 @@ void VDxfEngine::ExportASTMNotch(const QSharedPointer<dx_ifaceBlock> &detailBloc
notch->layer = *layer4;
}
else if (passmark.type == PassmarkLineType::VMark || passmark.type == PassmarkLineType::VMark2)
{
{ // V-Notch
QLineF boundaryLine(ConstFirst(passmark.lines).p2(), ConstLast(passmark.lines).p2());
notch->thickness = FromPixel(boundaryLine.length(), m_varInsunits); // width
notch->layer = *layer4;
}
else if (passmark.type == PassmarkLineType::TMark)
{
qreal width = FromPixel(ConstLast(passmark.lines).length(), m_varInsunits);
notch->thickness = FromPixel(width, m_varInsunits);
{ // T-Notch
notch->thickness = FromPixel(ConstLast(passmark.lines).length(), m_varInsunits); // width
notch->layer = *layer80;
}
else if (passmark.type == PassmarkLineType::BoxMark)
{
{ // Castle Notch
QPointF start = ConstFirst(passmark.lines).p1();
QPointF end = ConstLast(passmark.lines).p2();
notch->layer = *layer81;
notch->thickness = FromPixel(QLineF(start, end).length(), m_varInsunits);
notch->thickness = FromPixel(QLineF(start, end).length(), m_varInsunits); // width
}
else if (passmark.type == PassmarkLineType::UMark)
{
{ // U-Notch
QPointF start = ConstFirst(passmark.lines).p1();
QPointF end = ConstLast(passmark.lines).p2();
notch->thickness = FromPixel(QLineF(start, end).length(), m_varInsunits);
notch->thickness = FromPixel(QLineF(start, end).length(), m_varInsunits); // width
notch->layer = *layer83;
}

View file

@ -115,7 +115,7 @@ private:
QSize m_size{};
double m_resolution{PrintDPI};
QString m_fileName{};
DRW::Version m_version{DRW::AC1014};
DRW::Version m_version{DRW::AC1009};
bool m_binary{false};
QTransform m_matrix{};
QSharedPointer<dx_iface> m_input{};

View file

@ -170,8 +170,8 @@ bool WatermarkWindow::Open(QString path)
QFuture<VWatermarkConverter *> futureConverter = QtConcurrent::run([path]()
{
QScopedPointer<VWatermarkConverter> converter(new VWatermarkConverter(path));
return converter.take();
std::unique_ptr<VWatermarkConverter> converter(new VWatermarkConverter(path));
return converter.release();
});
//We have unsaved changes or load more then one file per time

View file

@ -1275,7 +1275,8 @@ auto VAbstractPiece::EkvPoint(QVector<VRawSAPoint> points, const VSAPoint &p1Lin
return true;
};
if (VGObject::IsPointOnLineSegment(p2Line1, p1Line1, p1Line2, ToPixel(0.5, Unit::Mm)) &&
IsOnLine(p2Line1, bigLine1.p2(), bigLine2.p1(), ToPixel(0.5, Unit::Mm)))
IsOnLine(p2Line1, bigLine1.p2(), bigLine2.p1(), ToPixel(0.5, Unit::Mm)) &&
p2Line1.GetAngleType() == PieceNodeAngle::ByLength)
{
points.append(VRawSAPoint(bigLine1.p2(), p2Line1.CurvePoint(), p2Line1.TurnPoint()));
points.append(VRawSAPoint(bigLine2.p1(), p2Line1.CurvePoint(), p2Line1.TurnPoint()));
@ -1777,14 +1778,44 @@ auto VAbstractPiece::GrainlinePoints(const VGrainlineData &geom, const VContaine
v << QPointF(pt1.x() + dArrowLen * qCos(rotation - dArrowAng),
pt1.y() - dArrowLen * qSin(rotation - dArrowAng));
v << pt1;
if (geom.GetArrowType() == GrainlineArrowDirection::atFourWay)
{ // second double arrow
QLineF line(pt2, pt1);
line.setLength(line.length() - dArrowLen - dArrowLen*0.5);
v << line.p2();
v << QPointF(line.p2().x() + dArrowLen * qCos(rotation + dArrowAng),
line.p2().y() - dArrowLen * qSin(rotation + dArrowAng));
v << QPointF(line.p2().x() + dArrowLen * qCos(rotation - dArrowAng),
line.p2().y() - dArrowLen * qSin(rotation - dArrowAng));
v << line.p2();
}
}
v << pt2;
if (geom.GetArrowType() != GrainlineArrowDirection::atFourWay)
{
v << pt2;
}
if (geom.GetArrowType() != GrainlineArrowDirection::atRear)
{
rotation += M_PI;
if (geom.GetArrowType() == GrainlineArrowDirection::atFourWay)
{ // first double arrow
QLineF line(pt1, pt2);
line.setLength(line.length() - dArrowLen - dArrowLen*0.5);
v << line.p2();
v << QPointF(line.p2().x() + dArrowLen * qCos(rotation + dArrowAng),
line.p2().y() - dArrowLen * qSin(rotation + dArrowAng));
v << QPointF(line.p2().x() + dArrowLen * qCos(rotation - dArrowAng),
line.p2().y() - dArrowLen * qSin(rotation - dArrowAng));
v << line.p2();
v << pt2;
}
v << QPointF(pt2.x() + dArrowLen * qCos(rotation + dArrowAng),
pt2.y() - dArrowLen * qSin(rotation + dArrowAng));
v << QPointF(pt2.x() + dArrowLen * qCos(rotation - dArrowAng),

View file

@ -588,7 +588,24 @@ void VPosition::FollowGrainline()
if (m_data.detail.GrainlineArrowType() == GrainlineArrowDirection::atBoth ||
m_data.detail.GrainlineArrowType() == GrainlineArrowDirection::atRear)
{
RotateOnAngle(angle+180);
RotateOnAngle(angle + 180);
}
if (stop->load())
{
return;
}
if (m_data.detail.GrainlineArrowType() == GrainlineArrowDirection::atFourWay)
{
RotateOnAngle(angle + 90);
if (stop->load())
{
return;
}
RotateOnAngle(angle - 90);
}
}

View file

@ -37,7 +37,8 @@ enum class GrainlineArrowDirection : qint8
{
atBoth,
atFront,
atRear
atRear,
atFourWay
};
#endif // FLOATITEMDEF_H

View file

@ -1051,7 +1051,7 @@ auto VTranslateVars::FormulaFromUser(const QString &formula, bool osSeparator) c
new qmu::QmuTokenParser(formula, osSeparator, true, GetTranslatedFunctions()));
QMap<vsizetype, QString> tokens = cal->GetTokens();// Tokens (variables, measurements)
QMap<vsizetype, QString> numbers = cal->GetNumbers();// All numbers in expression for changing decimal separator
delete cal.take();
cal.reset();
QString newFormula = formula;// Local copy for making changes

View file

@ -3383,6 +3383,7 @@ void DialogSeamAllowance::InitGrainlineTab()
uiTabGrainline->comboBoxArrow->addItem(tr("Both"));
uiTabGrainline->comboBoxArrow->addItem(tr("Just front"));
uiTabGrainline->comboBoxArrow->addItem(tr("Just rear"));
uiTabGrainline->comboBoxArrow->addItem(tr("Four way"));
m_iRotBaseHeight = uiTabGrainline->lineEditRotFormula->height();
m_iLenBaseHeight = uiTabGrainline->lineEditLenFormula->height();

View file

@ -2050,7 +2050,7 @@ void VToolSeamAllowance::InitSpecialPoints(const QVector<quint32> &points) const
//---------------------------------------------------------------------------------------------------------------------
void VToolSeamAllowance::DeleteToolWithConfirm(bool ask)
{
QScopedPointer<DeletePiece> delDet(new DeletePiece(doc, m_id, VAbstractTool::data, m_sceneDetails));
std::unique_ptr<DeletePiece> delDet(new DeletePiece(doc, m_id, VAbstractTool::data, m_sceneDetails));
if (ask)
{
if (ConfirmDeletion() == QMessageBox::No)
@ -2059,7 +2059,7 @@ void VToolSeamAllowance::DeleteToolWithConfirm(bool ask)
}
}
VAbstractApplication::VApp()->getUndoStack()->push(delDet.take());
VAbstractApplication::VApp()->getUndoStack()->push(delDet.release());
// Throw exception, this will help prevent case when we forget to immediately quit function.
VExceptionToolWasDeleted e(tr("Tool was used after deleting."));

View file

@ -393,22 +393,22 @@ quint32 AddNodePoint(const VPieceNode &node, const VToolUnionDetailsInitData &in
QVector<quint32> &children, const QString &drawName, qreal dx, qreal dy,
quint32 pRotate, qreal angle)
{
QScopedPointer<VPointF> point(new VPointF(*initData.data->GeometricObject<VPointF>(node.GetId())));
std::unique_ptr<VPointF> point(new VPointF(*initData.data->GeometricObject<VPointF>(node.GetId())));
point->setMode(Draw::Modeling);
if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != NULL_ID)
{
BiasRotatePoint(point.data(), dx, dy, static_cast<QPointF>(*initData.data->GeometricObject<VPointF>(pRotate)),
BiasRotatePoint(point.get(), dx, dy, static_cast<QPointF>(*initData.data->GeometricObject<VPointF>(pRotate)),
angle);
}
QScopedPointer<VPointF> point1(new VPointF(*point));
std::unique_ptr<VPointF> point1(new VPointF(*point));
const quint32 idObject = initData.data->AddGObject(point.take());
const quint32 idObject = initData.data->AddGObject(point.release());
children.append(idObject);
point1->setIdObject(idObject);
point1->setMode(Draw::Modeling);
const quint32 id = initData.data->AddGObject(point1.take());
const quint32 id = initData.data->AddGObject(point1.release());
VAbstractNodeInitData initNodeData;
initNodeData.id = id;
@ -429,21 +429,21 @@ quint32 AddNodePoint(const VPieceNode &node, const VToolUnionDetailsInitData &in
quint32 AddPin(quint32 id, const VToolUnionDetailsInitData &initData, QVector<quint32> &children,
const QString &drawName, qreal dx, qreal dy, quint32 pRotate, qreal angle)
{
QScopedPointer<VPointF> point(new VPointF(*initData.data->GeometricObject<VPointF>(id)));
std::unique_ptr<VPointF> point(new VPointF(*initData.data->GeometricObject<VPointF>(id)));
point->setMode(Draw::Modeling);
if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != NULL_ID)
{
BiasRotatePoint(point.data(), dx, dy, static_cast<QPointF>(*initData.data->GeometricObject<VPointF>(pRotate)),
BiasRotatePoint(point.get(), dx, dy, static_cast<QPointF>(*initData.data->GeometricObject<VPointF>(pRotate)),
angle);
}
QScopedPointer<VPointF> point1(new VPointF(*point));
std::unique_ptr<VPointF> point1(new VPointF(*point));
const quint32 idObject = initData.data->AddGObject(point.take());
const quint32 idObject = initData.data->AddGObject(point.release());
children.append(idObject);
point1->setMode(Draw::Modeling);
const quint32 idPin = initData.data->AddGObject(point1.take());
const quint32 idPin = initData.data->AddGObject(point1.release());
VToolPinInitData initNodeData;
initNodeData.id = idPin;
@ -464,11 +464,11 @@ quint32 AddPin(quint32 id, const VToolUnionDetailsInitData &initData, QVector<qu
quint32 AddPlaceLabel(quint32 id, const VToolUnionDetailsInitData &initData, QVector<quint32> &children,
const QString &drawName, qreal dx, qreal dy, quint32 pRotate, qreal angle)
{
QScopedPointer<VPlaceLabelItem> label(new VPlaceLabelItem(*initData.data->GeometricObject<VPlaceLabelItem>(id)));
std::unique_ptr<VPlaceLabelItem> label(new VPlaceLabelItem(*initData.data->GeometricObject<VPlaceLabelItem>(id)));
if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != NULL_ID)
{
BiasRotatePoint(label.data(), dx, dy, static_cast<QPointF>(*initData.data->GeometricObject<VPointF>(pRotate)),
BiasRotatePoint(label.get(), dx, dy, static_cast<QPointF>(*initData.data->GeometricObject<VPointF>(pRotate)),
angle);
}
@ -488,12 +488,12 @@ quint32 AddPlaceLabel(quint32 id, const VToolUnionDetailsInitData &initData, QVe
initNodeData.visibilityTrigger = label->GetVisibilityTrigger();
initNodeData.type = label->GetLabelType();
QScopedPointer<VPlaceLabelItem> label1(new VPlaceLabelItem(*label));
std::unique_ptr<VPlaceLabelItem> label1(new VPlaceLabelItem(*label));
initNodeData.centerPoint = initData.data->AddGObject(label.take());
initNodeData.centerPoint = initData.data->AddGObject(label.release());
children.append(initNodeData.centerPoint);
const quint32 idLabel = initData.data->AddGObject(label1.take());
const quint32 idLabel = initData.data->AddGObject(label1.release());
initNodeData.id = idLabel;
VToolPlaceLabel::Create(initNodeData);
@ -508,7 +508,7 @@ quint32 AddNodeArc(const VPieceNode &node, const VToolUnionDetailsInitData &init
const QSharedPointer<VArc> arc = initData.data->GeometricObject<VArc>(node.GetId());
VPointF p1 = VPointF(arc->GetP1(), "A", 0, 0);
VPointF p2 = VPointF(arc->GetP2(), "A", 0, 0);
QScopedPointer<VPointF> center(new VPointF(arc->GetCenter()));
std::unique_ptr<VPointF> center(new VPointF(arc->GetCenter()));
if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != NULL_ID)
{
@ -516,27 +516,27 @@ quint32 AddNodeArc(const VPieceNode &node, const VToolUnionDetailsInitData &init
BiasRotatePoint(&p1, dx, dy, p, angle);
BiasRotatePoint(&p2, dx, dy, p, angle);
BiasRotatePoint(center.data(), dx, dy, p, angle);
BiasRotatePoint(center.get(), dx, dy, p, angle);
}
QLineF l1(static_cast<QPointF>(*center), static_cast<QPointF>(p1));
QLineF l2(static_cast<QPointF>(*center), static_cast<QPointF>(p2));
center->setMode(Draw::Modeling);
VPointF *tmpCenter = center.take();
VPointF *tmpCenter = center.release();
const quint32 idCenter = initData.data->AddGObject(tmpCenter);
Q_UNUSED(idCenter)
QScopedPointer<VArc> arc1(new VArc(*tmpCenter, arc->GetRadius(), arc->GetFormulaRadius(), l1.angle(),
QString().setNum(l1.angle()), l2.angle(), QString().setNum(l2.angle())));
std::unique_ptr<VArc> arc1(new VArc(*tmpCenter, arc->GetRadius(), arc->GetFormulaRadius(), l1.angle(),
QString().setNum(l1.angle()), l2.angle(), QString().setNum(l2.angle())));
arc1->setMode(Draw::Modeling);
QScopedPointer<VArc>arc2(new VArc(*arc1));
std::unique_ptr<VArc>arc2(new VArc(*arc1));
const quint32 idObject = initData.data->AddGObject(arc1.take());
const quint32 idObject = initData.data->AddGObject(arc1.release());
children.append(idObject);
arc2->setIdObject(idObject);
arc2->setMode(Draw::Modeling);
const quint32 id = initData.data->AddGObject(arc2.take());
const quint32 id = initData.data->AddGObject(arc2.release());
VAbstractNodeInitData initNodeData;
initNodeData.id = id;
@ -560,7 +560,7 @@ quint32 AddNodeElArc(const VPieceNode &node, const VToolUnionDetailsInitData &in
const QSharedPointer<VEllipticalArc> arc = initData.data->GeometricObject<VEllipticalArc>(node.GetId());
VPointF p1 = VPointF(arc->GetP1(), "A", 0, 0);
VPointF p2 = VPointF(arc->GetP2(), "A", 0, 0);
QScopedPointer<VPointF> center(new VPointF(arc->GetCenter()));
std::unique_ptr<VPointF> center(new VPointF(arc->GetCenter()));
if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != NULL_ID)
{
@ -568,29 +568,29 @@ quint32 AddNodeElArc(const VPieceNode &node, const VToolUnionDetailsInitData &in
BiasRotatePoint(&p1, dx, dy, p, angle);
BiasRotatePoint(&p2, dx, dy, p, angle);
BiasRotatePoint(center.data(), dx, dy, p, angle);
BiasRotatePoint(center.get(), dx, dy, p, angle);
}
QLineF l1(static_cast<QPointF>(*center), static_cast<QPointF>(p1));
QLineF l2(static_cast<QPointF>(*center), static_cast<QPointF>(p2));
center->setMode(Draw::Modeling);
VPointF *tmpCenter = center.take();
VPointF *tmpCenter = center.release();
quint32 idCenter = initData.data->AddGObject(tmpCenter);
Q_UNUSED(idCenter)
QScopedPointer<VEllipticalArc> arc1(new VEllipticalArc (*tmpCenter, arc->GetRadius1(), arc->GetRadius2(),
arc->GetFormulaRadius1(), arc->GetFormulaRadius2(),
l1.angle(), QString().setNum(l1.angle()), l2.angle(),
QString().setNum(l2.angle()), 0, QChar('0')));
std::unique_ptr<VEllipticalArc> arc1(new VEllipticalArc (*tmpCenter, arc->GetRadius1(), arc->GetRadius2(),
arc->GetFormulaRadius1(), arc->GetFormulaRadius2(),
l1.angle(), QString().setNum(l1.angle()), l2.angle(),
QString().setNum(l2.angle()), 0, QChar('0')));
arc1->setMode(Draw::Modeling);
QScopedPointer<VEllipticalArc> arc2(new VEllipticalArc(*arc1));
std::unique_ptr<VEllipticalArc> arc2(new VEllipticalArc(*arc1));
const quint32 idObject = initData.data->AddGObject(arc1.take());
const quint32 idObject = initData.data->AddGObject(arc1.release());
children.append(idObject);
arc2->setIdObject(idObject);
arc2->setMode(Draw::Modeling);
const quint32 id = initData.data->AddGObject(arc2.take());
const quint32 id = initData.data->AddGObject(arc2.release());
VAbstractNodeInitData initNodeData;
initNodeData.id = id;
@ -657,7 +657,7 @@ quint32 AddNodeSplinePath(const VPieceNode &node, const VToolUnionDetailsInitDat
QVector<quint32> &children, const QString &drawName, qreal dx, qreal dy,
quint32 pRotate, qreal angle)
{
QScopedPointer<VSplinePath> path(new VSplinePath());
std::unique_ptr<VSplinePath> path(new VSplinePath());
path->setMode(Draw::Modeling);
const QSharedPointer<VAbstractCubicBezierPath> splinePath =
initData.data->GeometricObject<VAbstractCubicBezierPath>(node.GetId());
@ -703,14 +703,14 @@ quint32 AddNodeSplinePath(const VPieceNode &node, const VToolUnionDetailsInitDat
path->append(VSplinePoint(*p4, spl.GetEndAngle(), spl.GetEndAngleFormula(), angle2, angle2F,
spline.GetC2Length(), spline.GetC2LengthFormula(), pL2, pL2F));
}
QScopedPointer<VSplinePath> path1(new VSplinePath(*path));
std::unique_ptr<VSplinePath> path1(new VSplinePath(*path));
const quint32 idObject = initData.data->AddGObject(path.take());
const quint32 idObject = initData.data->AddGObject(path.release());
children.append(idObject);
path1->setIdObject(idObject);
path1->setMode(Draw::Modeling);
const quint32 id = initData.data->AddGObject(path1.take());
const quint32 id = initData.data->AddGObject(path1.release());
VAbstractNodeInitData initNodeData;
initNodeData.id = id;
@ -935,13 +935,13 @@ quint32 TakeNextId(QVector<quint32> &children)
void UpdateNodePoint(VContainer *data, const VPieceNode &node, QVector<quint32> &children, qreal dx, qreal dy,
quint32 pRotate, qreal angle)
{
QScopedPointer<VPointF> point(new VPointF(*data->GeometricObject<VPointF>(node.GetId())));
std::unique_ptr<VPointF> point(new VPointF(*data->GeometricObject<VPointF>(node.GetId())));
point->setMode(Draw::Modeling);
if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != NULL_ID)
{
BiasRotatePoint(point.data(), dx, dy, static_cast<QPointF>(*data->GeometricObject<VPointF>(pRotate)), angle);
BiasRotatePoint(point.get(), dx, dy, static_cast<QPointF>(*data->GeometricObject<VPointF>(pRotate)), angle);
}
data->UpdateGObject(TakeNextId(children), point.take());
data->UpdateGObject(TakeNextId(children), point.release());
}
//---------------------------------------------------------------------------------------------------------------------
@ -965,10 +965,10 @@ void UpdateNodeArc(VContainer *data, const VPieceNode &node, QVector<quint32> &c
QLineF l1(static_cast<QPointF>(*center), static_cast<QPointF>(p1));
QLineF l2(static_cast<QPointF>(*center), static_cast<QPointF>(p2));
QScopedPointer<VArc> arc1(new VArc(*center, arc->GetRadius(), arc->GetFormulaRadius(), l1.angle(),
QString().setNum(l1.angle()), l2.angle(), QString().setNum(l2.angle())));
std::unique_ptr<VArc> arc1(new VArc(*center, arc->GetRadius(), arc->GetFormulaRadius(), l1.angle(),
QString().setNum(l1.angle()), l2.angle(), QString().setNum(l2.angle())));
arc1->setMode(Draw::Modeling);
data->UpdateGObject(TakeNextId(children), arc1.take());
data->UpdateGObject(TakeNextId(children), arc1.release());
}
//---------------------------------------------------------------------------------------------------------------------
@ -992,12 +992,12 @@ void UpdateNodeElArc(VContainer *data, const VPieceNode &node, QVector<quint32>
QLineF l1(static_cast<QPointF>(*center), static_cast<QPointF>(p1));
QLineF l2(static_cast<QPointF>(*center), static_cast<QPointF>(p2));
QScopedPointer<VEllipticalArc> arc1(new VEllipticalArc (*center, arc->GetRadius1(), arc->GetRadius2(),
arc->GetFormulaRadius1(), arc->GetFormulaRadius2(),
l1.angle(), QString().setNum(l1.angle()), l2.angle(),
QString().setNum(l2.angle()), 0, QChar('0')));
std::unique_ptr<VEllipticalArc> arc1(new VEllipticalArc (*center, arc->GetRadius1(), arc->GetRadius2(),
arc->GetFormulaRadius1(), arc->GetFormulaRadius2(),
l1.angle(), QString().setNum(l1.angle()), l2.angle(),
QString().setNum(l2.angle()), 0, QChar('0')));
arc1->setMode(Draw::Modeling);
data->UpdateGObject(TakeNextId(children), arc1.take());
data->UpdateGObject(TakeNextId(children), arc1.release());
}
//---------------------------------------------------------------------------------------------------------------------
@ -1022,16 +1022,16 @@ void UpdateNodeSpline(VContainer *data, const VPieceNode &node, QVector<quint32>
BiasRotatePoint(p4.data(), dx, dy, p, angle);
}
QScopedPointer<VSpline> spl(new VSpline(*p1, static_cast<QPointF>(p2), static_cast<QPointF>(p3), *p4, 0,
Draw::Modeling));
data->UpdateGObject(TakeNextId(children), spl.take());
std::unique_ptr<VSpline> spl(new VSpline(*p1, static_cast<QPointF>(p2), static_cast<QPointF>(p3), *p4, 0,
Draw::Modeling));
data->UpdateGObject(TakeNextId(children), spl.release());
}
//---------------------------------------------------------------------------------------------------------------------
void UpdateNodeSplinePath(VContainer *data, const VPieceNode &node, QVector<quint32> &children, qreal dx, qreal dy,
quint32 pRotate, qreal angle)
{
QScopedPointer<VSplinePath> path(new VSplinePath());
std::unique_ptr<VSplinePath> path(new VSplinePath());
path->setMode(Draw::Modeling);
const QSharedPointer<VAbstractCubicBezierPath> splinePath =
data->GeometricObject<VAbstractCubicBezierPath>(node.GetId());
@ -1080,7 +1080,7 @@ void UpdateNodeSplinePath(VContainer *data, const VPieceNode &node, QVector<quin
path->append(VSplinePoint(*p4, spl.GetEndAngle(), spl.GetEndAngleFormula(), angle2, angle2F,
spline.GetC2Length(), spline.GetC2LengthFormula(), pL2, pL2F));
}
data->UpdateGObject(TakeNextId(children), path.take());
data->UpdateGObject(TakeNextId(children), path.release());
}
//---------------------------------------------------------------------------------------------------------------------
@ -1498,14 +1498,14 @@ void UpdateUnitedDetailPins(const VToolUnionDetailsInitData &initData, qreal dx,
for (auto record : records)
{
QScopedPointer<VPointF> point(new VPointF(*initData.data->GeometricObject<VPointF>(record)));
std::unique_ptr<VPointF> point(new VPointF(*initData.data->GeometricObject<VPointF>(record)));
point->setMode(Draw::Modeling);
if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != NULL_ID)
{
BiasRotatePoint(point.data(), dx, dy,
BiasRotatePoint(point.get(), dx, dy,
static_cast<QPointF>(*initData.data->GeometricObject<VPointF>(pRotate)), angle);
}
initData.data->UpdateGObject(TakeNextId(children), point.take());
initData.data->UpdateGObject(TakeNextId(children), point.release());
}
}
@ -1523,7 +1523,7 @@ void UpdateUnitedDetailPlaceLabels(const VToolUnionDetailsInitData &initData, qr
BiasRotatePoint(parentLabel.data(), dx, dy,
static_cast<QPointF>(*initData.data->GeometricObject<VPointF>(pRotate)), angle);
}
QScopedPointer<VPlaceLabelItem> label(new VPlaceLabelItem());
std::unique_ptr<VPlaceLabelItem> label(new VPlaceLabelItem());
label->setName(parentLabel->name());
label->setX(parentLabel->x());
label->setY(parentLabel->y());
@ -1531,7 +1531,7 @@ void UpdateUnitedDetailPlaceLabels(const VToolUnionDetailsInitData &initData, qr
label->setMy(parentLabel->my());
label->SetCorrectionAngle(parentLabel->GetCorrectionAngle()+angle);
initData.data->UpdateGObject(TakeNextId(children), label.take());
initData.data->UpdateGObject(TakeNextId(children), label.release());
}
}

View file

@ -122,12 +122,26 @@ void VGrainlineItem::paint(QPainter* pP, const QStyleOptionGraphicsItem* pOption
if (m_eArrowType != GrainlineArrowDirection::atRear)
{
// first arrow
pP->drawPolygon(FirstArrow(dArrLen));
pP->drawPolygon(FirstArrow(MainLine().p2(), dArrLen));
if (m_eArrowType == GrainlineArrowDirection::atFourWay)
{ // first double arrow
QLineF line = MainLine();
line.setLength(line.length() - dArrLen - dArrLen*0.5);
pP->drawPolygon(FirstArrow(line.p2(), dArrLen));
}
}
if (m_eArrowType != GrainlineArrowDirection::atFront)
{
// second arrow
pP->drawPolygon(SecondArrow(dArrLen));
pP->drawPolygon(SecondArrow(MainLine().p1(), dArrLen));
if (m_eArrowType == GrainlineArrowDirection::atFourWay)
{ // second double arrow
QLineF line(MainLine().p2(), MainLine().p1());
line.setLength(line.length() - dArrLen - dArrLen*0.5);
pP->drawPolygon(SecondArrow(line.p2(), dArrLen));
}
}
if (m_eMode != mNormal)
@ -636,28 +650,26 @@ QLineF VGrainlineItem::MainLine() const
}
//---------------------------------------------------------------------------------------------------------------------
QPolygonF VGrainlineItem::FirstArrow(qreal dArrLen) const
QPolygonF VGrainlineItem::FirstArrow(const QPointF &pt, qreal dArrLen) const
{
const QPointF pt2 = MainLine().p2();
QPolygonF poly;
poly << pt2;
poly << QPointF(pt2.x() + dArrLen*cos(M_PI + m_dRotation + ARROW_ANGLE),
pt2.y() - dArrLen*sin(M_PI + m_dRotation + ARROW_ANGLE));
poly << QPointF(pt2.x() + dArrLen*cos(M_PI + m_dRotation - ARROW_ANGLE),
pt2.y() - dArrLen*sin(M_PI + m_dRotation - ARROW_ANGLE));
poly << pt;
poly << QPointF(pt.x() + dArrLen*cos(M_PI + m_dRotation + ARROW_ANGLE),
pt.y() - dArrLen*sin(M_PI + m_dRotation + ARROW_ANGLE));
poly << QPointF(pt.x() + dArrLen*cos(M_PI + m_dRotation - ARROW_ANGLE),
pt.y() - dArrLen*sin(M_PI + m_dRotation - ARROW_ANGLE));
return poly;
}
//---------------------------------------------------------------------------------------------------------------------
QPolygonF VGrainlineItem::SecondArrow(qreal dArrLen) const
QPolygonF VGrainlineItem::SecondArrow(const QPointF &pt, qreal dArrLen) const
{
const QPointF pt1 = MainLine().p1();
QPolygonF poly;
poly << pt1;
poly << QPointF(pt1.x() + dArrLen*cos(m_dRotation + ARROW_ANGLE),
pt1.y() - dArrLen*sin(m_dRotation + ARROW_ANGLE));
poly << QPointF(pt1.x() + dArrLen*cos(m_dRotation - ARROW_ANGLE),
pt1.y() - dArrLen*sin(m_dRotation - ARROW_ANGLE));
poly << pt;
poly << QPointF(pt.x() + dArrLen*cos(m_dRotation + ARROW_ANGLE),
pt.y() - dArrLen*sin(m_dRotation + ARROW_ANGLE));
poly << QPointF(pt.x() + dArrLen*cos(m_dRotation - ARROW_ANGLE),
pt.y() - dArrLen*sin(m_dRotation - ARROW_ANGLE));
return poly;
}
@ -681,7 +693,15 @@ QPainterPath VGrainlineItem::MainShape() const
{
// first arrow
QPainterPath polyPath;
polyPath.addPolygon(FirstArrow(dArrLen));
polyPath.addPolygon(FirstArrow(MainLine().p2(), dArrLen));
if (m_eArrowType == GrainlineArrowDirection::atFourWay)
{ // first double arrow
QLineF line = MainLine();
line.setLength(line.length() - dArrLen - 0.5);
polyPath.addPolygon(FirstArrow(line.p2(), dArrLen));
}
path.addPath((stroker.createStroke(polyPath) + polyPath).simplified());
path.closeSubpath();
}
@ -690,7 +710,15 @@ QPainterPath VGrainlineItem::MainShape() const
{
// second arrow
QPainterPath polyPath;
polyPath.addPolygon(SecondArrow(dArrLen));
polyPath.addPolygon(SecondArrow(MainLine().p1(), dArrLen));
if (m_eArrowType == GrainlineArrowDirection::atFourWay)
{ // second double arrow
QLineF line(MainLine().p2(), MainLine().p1());
line.setLength(line.length() - dArrLen - 0.5);
polyPath.addPolygon(SecondArrow(line.p2(), dArrLen));
}
path.addPath((stroker.createStroke(polyPath) + polyPath).simplified());
path.closeSubpath();
}

View file

@ -84,12 +84,12 @@ private:
QPointF m_ptFinish;
QPointF m_ptCenter;
qreal m_dAngle;
GrainlineArrowDirection m_eArrowType;
GrainlineArrowDirection m_eArrowType;
double m_penWidth{1};
QLineF MainLine() const;
QPolygonF FirstArrow(qreal dArrLen) const;
QPolygonF SecondArrow(qreal dArrLen) const;
QPolygonF FirstArrow(const QPointF &pt, qreal dArrLen) const;
QPolygonF SecondArrow(const QPointF &pt, qreal dArrLen) const;
QPainterPath MainShape() const;

View file

@ -61,30 +61,30 @@ VHighlighter::VHighlighter(QTextDocument *document)
//---------------------------------------------------------------------------------------------------------------------
void VHighlighter::highlightBlock(const QString &text)
{
QScopedPointer<VTextBlockData> data(new VTextBlockData);
std::unique_ptr<VTextBlockData> data(new VTextBlockData);
vsizetype leftPos = text.indexOf('(');
while (leftPos != -1)
{
QScopedPointer<ParenthesisInfo> info(new ParenthesisInfo);
std::unique_ptr<ParenthesisInfo> info(new ParenthesisInfo);
info->character = '(';
info->position = leftPos;
data->insert(info.take());
data->insert(info.release());
leftPos = text.indexOf('(', leftPos + 1);
}
vsizetype rightPos = text.indexOf(')');
while (rightPos != -1)
{
QScopedPointer<ParenthesisInfo> info(new ParenthesisInfo);
std::unique_ptr<ParenthesisInfo> info(new ParenthesisInfo);
info->character = ')';
info->position = rightPos;
data->insert(info.take());
data->insert(info.release());
rightPos = text.indexOf(')', rightPos +1);
}
setCurrentBlockUserData(data.take());
setCurrentBlockUserData(data.release());
}

View file

@ -33,7 +33,7 @@
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -810.9147913912859,
"y": -9.118915311803084
"y": -9.118915311803082
},
{
"angle": 6,
@ -41,8 +41,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -773.697565712941,
"y": -13.057776517652679
"x": -773.6975657129408,
"y": -13.057776517652666
},
{
"angle": 6,
@ -50,8 +50,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -731.3693960390717,
"y": -19.56419323976961
"x": -731.3693960390715,
"y": -19.564193239769583
},
{
"angle": 6,
@ -59,8 +59,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -700.8138618525178,
"y": -25.693917945236084
"x": -700.8138618525176,
"y": -25.693917945236056
},
{
"angle": 6,
@ -68,8 +68,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -670.5392892845426,
"y": -33.532046871057645
"x": -670.5392892845424,
"y": -33.53204687105762
},
{
"angle": 6,
@ -77,8 +77,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -649.4254060248002,
"y": -40.69070943425645
"x": -649.4254060247999,
"y": -40.69070943425643
},
{
"angle": 6,
@ -86,7 +86,7 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -636.4972481739836,
"x": -636.4972481739833,
"y": -46.04184558720286
},
{
@ -95,7 +95,7 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -630.5509356263242,
"x": -630.5509356263238,
"y": -48.932226964906654
},
{
@ -104,7 +104,7 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -612.7709374645625,
"x": -612.7709374645622,
"y": -58.17881193899319
},
{

View file

@ -2,303 +2,283 @@
"vector": [
{
"type": "QPointF",
"x": -838.7026077978918,
"y": 360.52065549216434
"x": -814.7149606299213,
"y": 372.2542552635798
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": 331.31319685039375
"y": 330.5891727033602
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": 28.923105387765915
"y": 28.923105387766057
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": -46.674417477891
"y": -46.67441747789094
},
{
"type": "QPointF",
"x": -814.2667801920632,
"y": -46.77051665539527
"x": -814.2667801920694,
"y": -46.77051665539475
},
{
"type": "QPointF",
"x": -778.5602746831936,
"y": -50.54949176119353
"x": -778.5602746831969,
"y": -50.54949176119329
},
{
"type": "QPointF",
"x": -737.9608911970817,
"y": -56.79017047839188
"x": -737.9608911970803,
"y": -56.790170478392334
},
{
"type": "QPointF",
"x": -709.2737849361833,
"y": -62.54507114228375
"x": -709.2737849361882,
"y": -62.54507114228297
},
{
"type": "QPointF",
"x": -681.3583296765719,
"y": -69.77242131730468
"x": -681.3583296765614,
"y": -69.77242131730785
},
{
"type": "QPointF",
"x": -662.7349969797737,
"y": -76.08666265976586
"x": -662.7349969797801,
"y": -76.08666265976335
},
{
"type": "QPointF",
"x": -652.0000133582188,
"y": -80.53001488530833
"x": -652.0000133582183,
"y": -80.53001488530862
},
{
"type": "QPointF",
"x": -647.5347421078782,
"y": -82.70049226350477
"x": -647.5347421078806,
"y": -82.70049226350372
},
{
"type": "QPointF",
"x": -631.5852394687809,
"y": -90.99511806183605
"x": -631.5852394687715,
"y": -90.99511806184105
},
{
"type": "QPointF",
"x": -616.3280202339708,
"y": -100.59426715699189
"x": -616.3280202339932,
"y": -100.59426715697734
},
{
"type": "QPointF",
"x": -594.0963839106636,
"y": -115.9721553077516
"x": -594.0963839106644,
"y": -115.97215530775206
},
{
"type": "QPointF",
"x": -184.04865014874542,
"y": 76.19837439910728
"x": -184.04865014874576,
"y": 76.19837439910705
},
{
"type": "QPointF",
"x": -202.58871262669427,
"y": 128.53121708773386
"x": -202.58871262669433,
"y": 128.5312170877332
},
{
"type": "QPointF",
"x": -214.84435298014208,
"y": 166.70961534534916
"x": -214.84435298014535,
"y": 166.709615345359
},
{
"type": "QPointF",
"x": -224.9007219166651,
"y": 202.78670773496933
"x": -224.9007219166664,
"y": 202.7867077349721
},
{
"type": "QPointF",
"x": -232.93434714099388,
"y": 237.08085683490162
"x": -232.93434714099442,
"y": 237.0808568349011
},
{
"type": "QPointF",
"x": -239.0890371517,
"y": 269.81704595738483
"x": -239.08903715169467,
"y": 269.8170459573539
},
{
"type": "QPointF",
"x": -243.50661138639492,
"y": 301.2305028748772
"x": -243.50661138639543,
"y": 301.2305028748881
},
{
"type": "QPointF",
"x": -246.32424570745619,
"y": 331.5659013496832
"x": -246.32424570745593,
"y": 331.5659013496859
},
{
"type": "QPointF",
"x": -247.4259188169727,
"y": 355.684725526716
"x": -247.42591881697234,
"y": 355.68472552671597
},
{
"type": "QPointF",
"x": -274.1103616347323,
"y": 368.39650194198157
"x": -274.1103616347226,
"y": 368.3965019419771
},
{
"type": "QPointF",
"x": -280.43082717423164,
"y": 370.73899686729357
"x": -280.4308271742487,
"y": 370.73899686729897
},
{
"type": "QPointF",
"x": -285.6974576466219,
"y": 372.38739828360394
"x": -286.53994881447335,
"y": 372.65108939343145
},
{
"type": "QPointF",
"x": -295.7605238049826,
"y": 375.0706690235611
"x": -295.7605238049802,
"y": 375.07066902356064
},
{
"type": "QPointF",
"x": -308.3295870292442,
"y": 377.6522566136316
"x": -309.1086607001497,
"y": 377.8122722714953
},
{
"type": "QPointF",
"x": -323.20961073643133,
"y": 380.0950323212031
"x": -323.7918413406422,
"y": 380.189287868496
},
{
"type": "QPointF",
"x": -339.2933747725014,
"y": 382.20466538395215
"x": -339.7464924132723,
"y": 382.2635758852316
},
{
"type": "QPointF",
"x": -356.571621703457,
"y": 384.0385765592796
"x": -356.9362622181957,
"y": 384.07704503986554
},
{
"type": "QPointF",
"x": -374.97963878344376,
"y": 385.6272715746786
"x": -375.2815276936278,
"y": 385.65320885961137
},
{
"type": "QPointF",
"x": -394.4224543531813,
"y": 386.9889713429367
"x": -394.4224543531805,
"y": 386.98897134293713
},
{
"type": "QPointF",
"x": -414.7876067251059,
"y": 388.13579550460213
"x": -414.7876067251065,
"y": 388.13579550460133
},
{
"type": "QPointF",
"x": -435.9520270040894,
"y": 389.07661798449516
"x": -435.9520270040898,
"y": 389.07661798449567
},
{
"type": "QPointF",
"x": -457.7859582653625,
"y": 389.818484035946
"x": -457.785958265363,
"y": 389.8184840359457
},
{
"type": "QPointF",
"x": -480.15529936788164,
"y": 390.3673559353522
"x": -480.1552993678824,
"y": 390.36735593535275
},
{
"type": "QPointF",
"x": -502.9230721502445,
"y": 390.728524359008
"x": -502.9230721502437,
"y": 390.7285243590086
},
{
"type": "QPointF",
"x": -525.9503830211974,
"y": 390.90684349642925
"x": -525.950383021198,
"y": 390.9068434964294
},
{
"type": "QPointF",
"x": -549.0970864147907,
"y": 390.9068680348474
"x": -549.0970864147915,
"y": 390.90686803484715
},
{
"type": "QPointF",
"x": -572.2222728858704,
"y": 390.7329321107656
"x": -572.2222728858721,
"y": 390.7329321107654
},
{
"type": "QPointF",
"x": -595.1846601171007,
"y": 390.3891909827686
"x": -595.1846601170994,
"y": 390.3891909827694
},
{
"type": "QPointF",
"x": -617.8429427582322,
"y": 389.87963542037477
"x": -617.8429427582319,
"y": 389.8796354203741
},
{
"type": "QPointF",
"x": -640.0561486385066,
"y": 389.208081776043
"x": -640.0561486385068,
"y": 389.2080817760433
},
{
"type": "QPointF",
"x": -661.6840517509004,
"y": 388.3781346110808
"x": -661.6840517509002,
"y": 388.3781346110811
},
{
"type": "QPointF",
"x": -682.5877079123347,
"y": 387.3931112039713
"x": -682.5877079123363,
"y": 387.3931112039708
},
{
"type": "QPointF",
"x": -702.630213618707,
"y": 386.255904969502
"x": -702.6302136187057,
"y": 386.2559049695029
},
{
"type": "QPointF",
"x": -721.6778577696439,
"y": 384.9687413227849
"x": -721.6778577696422,
"y": 384.9687413227853
},
{
"type": "QPointF",
"x": -739.6019742862287,
"y": 383.5327301728105
"x": -739.6019742862303,
"y": 383.5327301728113
},
{
"type": "QPointF",
"x": -756.2820913691256,
"y": 381.94700726179155
"x": -756.6283706367624,
"y": 381.91399989149096
},
{
"type": "QPointF",
"x": -771.6116072858362,
"y": 380.2069813195123
"x": -772.0557074133295,
"y": 380.1563856315983
},
{
"type": "QPointF",
"x": -785.5087261025127,
"y": 378.3004611599152
"x": -786.1074176186619,
"y": 378.2178680808823
},
{
"type": "QPointF",
"x": -797.9392812498397,
"y": 376.198189302873
"x": -798.8005062137145,
"y": 376.0511796823399
},
{
"type": "QPointF",
"x": -810.1810632465665,
"y": 373.5624561175904
"x": -810.1810632465617,
"y": 373.5624561175911
},
{
"type": "QPointF",
"x": -818.0929557813755,
"y": 371.2795759163598
},
{
"type": "QPointF",
"x": -823.6929755287612,
"y": 369.27180555079025
},
{
"type": "QPointF",
"x": -829.5753368833404,
"y": 366.62694879394627
},
{
"type": "QPointF",
"x": -835.8151397150936,
"y": 362.8920896668543
},
{
"type": "QPointF",
"x": -838.7026077978918,
"y": 360.52065549216434
"x": -814.7149606299213,
"y": 372.2542552635798
}
]
}

View file

@ -33,7 +33,7 @@
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -810.9147913912859,
"y": -9.118915311803084
"y": -9.118915311803082
},
{
"angle": 6,
@ -41,8 +41,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -773.697565712941,
"y": -13.057776517652679
"x": -773.6975657129408,
"y": -13.057776517652666
},
{
"angle": 6,
@ -50,8 +50,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -731.3693960390717,
"y": -19.56419323976961
"x": -731.3693960390715,
"y": -19.564193239769583
},
{
"angle": 6,
@ -59,8 +59,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -700.8138618525178,
"y": -25.693917945236084
"x": -700.8138618525176,
"y": -25.693917945236056
},
{
"angle": 6,
@ -68,8 +68,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -670.5392892845426,
"y": -33.532046871057645
"x": -670.5392892845424,
"y": -33.53204687105762
},
{
"angle": 6,
@ -77,8 +77,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -649.4254060248002,
"y": -40.69070943425645
"x": -649.4254060247999,
"y": -40.69070943425643
},
{
"angle": 6,
@ -86,7 +86,7 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -636.4972481739836,
"x": -636.4972481739833,
"y": -46.04184558720286
},
{
@ -95,7 +95,7 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -630.5509356263242,
"x": -630.5509356263238,
"y": -48.932226964906654
},
{
@ -104,7 +104,7 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -612.7709374645625,
"x": -612.7709374645622,
"y": -58.17881193899319
},
{

View file

@ -2,303 +2,303 @@
"vector": [
{
"type": "QPointF",
"x": -838.7026077978918,
"y": 360.52065549216434
"x": -863.5718297690097,
"y": 340.0959369535931
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": 331.31319685039375
"y": 330.58917270335996
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": 28.923105387765915
"y": 28.923105387766057
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": -46.674417477891
"y": -46.67441747789094
},
{
"type": "QPointF",
"x": -814.2667801920632,
"y": -46.77051665539527
"x": -814.2667801920694,
"y": -46.77051665539475
},
{
"type": "QPointF",
"x": -778.5602746831936,
"y": -50.54949176119353
"x": -778.5602746831969,
"y": -50.54949176119329
},
{
"type": "QPointF",
"x": -737.9608911970817,
"y": -56.79017047839188
"x": -737.9608911970803,
"y": -56.790170478392334
},
{
"type": "QPointF",
"x": -709.2737849361833,
"y": -62.54507114228375
"x": -709.2737849361882,
"y": -62.54507114228297
},
{
"type": "QPointF",
"x": -681.3583296765719,
"y": -69.77242131730468
"x": -681.3583296765614,
"y": -69.77242131730785
},
{
"type": "QPointF",
"x": -662.7349969797737,
"y": -76.08666265976586
"x": -662.7349969797801,
"y": -76.08666265976335
},
{
"type": "QPointF",
"x": -652.0000133582188,
"y": -80.53001488530833
"x": -652.0000133582183,
"y": -80.53001488530862
},
{
"type": "QPointF",
"x": -647.5347421078782,
"y": -82.70049226350477
"x": -647.5347421078806,
"y": -82.70049226350372
},
{
"type": "QPointF",
"x": -631.5852394687809,
"y": -90.99511806183605
"x": -631.5852394687715,
"y": -90.99511806184105
},
{
"type": "QPointF",
"x": -616.3280202339708,
"y": -100.59426715699189
"x": -616.3280202339932,
"y": -100.59426715697734
},
{
"type": "QPointF",
"x": -594.0963839106636,
"y": -115.9721553077516
"x": -594.0963839106644,
"y": -115.97215530775206
},
{
"type": "QPointF",
"x": -184.04865014874542,
"y": 76.19837439910728
"x": -184.04865014874576,
"y": 76.19837439910705
},
{
"type": "QPointF",
"x": -202.58871262669427,
"y": 128.53121708773386
"x": -202.58871262669433,
"y": 128.5312170877332
},
{
"type": "QPointF",
"x": -214.84435298014208,
"y": 166.70961534534916
"x": -214.84435298014535,
"y": 166.709615345359
},
{
"type": "QPointF",
"x": -224.9007219166651,
"y": 202.78670773496933
"x": -224.9007219166664,
"y": 202.7867077349721
},
{
"type": "QPointF",
"x": -232.93434714099388,
"y": 237.08085683490162
"x": -232.93434714099442,
"y": 237.0808568349011
},
{
"type": "QPointF",
"x": -239.0890371517,
"y": 269.81704595738483
"x": -239.08903715169467,
"y": 269.8170459573539
},
{
"type": "QPointF",
"x": -243.50661138639492,
"y": 301.2305028748772
"x": -243.50661138639543,
"y": 301.2305028748881
},
{
"type": "QPointF",
"x": -246.32424570745619,
"y": 331.5659013496832
"x": -246.32424570745593,
"y": 331.5659013496859
},
{
"type": "QPointF",
"x": -247.4259188169727,
"y": 355.684725526716
"x": -247.42591881697234,
"y": 355.68472552671597
},
{
"type": "QPointF",
"x": -274.1103616347323,
"y": 368.39650194198157
"x": -274.1103616347226,
"y": 368.3965019419771
},
{
"type": "QPointF",
"x": -280.43082717423164,
"y": 370.73899686729357
"x": -280.4308271742487,
"y": 370.73899686729897
},
{
"type": "QPointF",
"x": -285.6974576466219,
"y": 372.38739828360394
"x": -286.53994881447335,
"y": 372.65108939343145
},
{
"type": "QPointF",
"x": -295.7605238049826,
"y": 375.0706690235611
"x": -295.7605238049802,
"y": 375.07066902356064
},
{
"type": "QPointF",
"x": -308.3295870292442,
"y": 377.6522566136316
"x": -309.1086607001497,
"y": 377.8122722714953
},
{
"type": "QPointF",
"x": -323.20961073643133,
"y": 380.0950323212031
"x": -323.7918413406422,
"y": 380.189287868496
},
{
"type": "QPointF",
"x": -339.2933747725014,
"y": 382.20466538395215
"x": -339.7464924132723,
"y": 382.2635758852316
},
{
"type": "QPointF",
"x": -356.571621703457,
"y": 384.0385765592796
"x": -356.9362622181957,
"y": 384.07704503986554
},
{
"type": "QPointF",
"x": -374.97963878344376,
"y": 385.6272715746786
"x": -375.2815276936278,
"y": 385.65320885961137
},
{
"type": "QPointF",
"x": -394.4224543531813,
"y": 386.9889713429367
"x": -394.4224543531805,
"y": 386.98897134293713
},
{
"type": "QPointF",
"x": -414.7876067251059,
"y": 388.13579550460213
"x": -414.7876067251065,
"y": 388.13579550460133
},
{
"type": "QPointF",
"x": -435.9520270040894,
"y": 389.07661798449516
"x": -435.9520270040898,
"y": 389.07661798449567
},
{
"type": "QPointF",
"x": -457.7859582653625,
"y": 389.818484035946
"x": -457.785958265363,
"y": 389.8184840359457
},
{
"type": "QPointF",
"x": -480.15529936788164,
"y": 390.3673559353522
"x": -480.1552993678824,
"y": 390.36735593535275
},
{
"type": "QPointF",
"x": -502.9230721502445,
"y": 390.728524359008
"x": -502.9230721502437,
"y": 390.7285243590086
},
{
"type": "QPointF",
"x": -525.9503830211974,
"y": 390.90684349642925
"x": -525.950383021198,
"y": 390.9068434964294
},
{
"type": "QPointF",
"x": -549.0970864147907,
"y": 390.9068680348474
"x": -549.0970864147915,
"y": 390.90686803484715
},
{
"type": "QPointF",
"x": -572.2222728858704,
"y": 390.7329321107656
"x": -572.2222728858721,
"y": 390.7329321107654
},
{
"type": "QPointF",
"x": -595.1846601171007,
"y": 390.3891909827686
"x": -595.1846601170994,
"y": 390.3891909827694
},
{
"type": "QPointF",
"x": -617.8429427582322,
"y": 389.87963542037477
"x": -617.8429427582319,
"y": 389.8796354203741
},
{
"type": "QPointF",
"x": -640.0561486385066,
"y": 389.208081776043
"x": -640.0561486385068,
"y": 389.2080817760433
},
{
"type": "QPointF",
"x": -661.6840517509004,
"y": 388.3781346110808
"x": -661.6840517509002,
"y": 388.3781346110811
},
{
"type": "QPointF",
"x": -682.5877079123347,
"y": 387.3931112039713
"x": -682.5877079123363,
"y": 387.3931112039708
},
{
"type": "QPointF",
"x": -702.630213618707,
"y": 386.255904969502
"x": -702.6302136187057,
"y": 386.2559049695029
},
{
"type": "QPointF",
"x": -721.6778577696439,
"y": 384.9687413227849
"x": -721.6778577696422,
"y": 384.9687413227853
},
{
"type": "QPointF",
"x": -739.6019742862287,
"y": 383.5327301728105
"x": -739.6019742862303,
"y": 383.5327301728113
},
{
"type": "QPointF",
"x": -756.2820913691256,
"y": 381.94700726179155
"x": -756.6283706367624,
"y": 381.91399989149096
},
{
"type": "QPointF",
"x": -771.6116072858362,
"y": 380.2069813195123
"x": -772.0557074133295,
"y": 380.1563856315983
},
{
"type": "QPointF",
"x": -785.5087261025127,
"y": 378.3004611599152
"x": -786.1074176186619,
"y": 378.2178680808823
},
{
"type": "QPointF",
"x": -797.9392812498397,
"y": 376.198189302873
"x": -798.8005062137145,
"y": 376.0511796823399
},
{
"type": "QPointF",
"x": -810.1810632465665,
"y": 373.5624561175904
"x": -810.1810632465617,
"y": 373.5624561175911
},
{
"type": "QPointF",
"x": -818.0929557813755,
"y": 371.2795759163598
"x": -818.0929557813661,
"y": 371.27957591636186
},
{
"type": "QPointF",
"x": -823.6929755287612,
"y": 369.27180555079025
"x": -823.6929755287717,
"y": 369.27180555078513
},
{
"type": "QPointF",
"x": -829.5753368833404,
"y": 366.62694879394627
"x": -829.5753368833371,
"y": 366.62694879394735
},
{
"type": "QPointF",
"x": -835.8151397150936,
"y": 362.8920896668543
"x": -835.8151397150926,
"y": 362.8920896668538
},
{
"type": "QPointF",
"x": -838.7026077978918,
"y": 360.52065549216434
"x": -863.5718297690097,
"y": 340.0959369535931
}
]
}

View file

@ -33,7 +33,7 @@
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -810.9147913912859,
"y": -9.118915311803084
"y": -9.118915311803082
},
{
"angle": 6,
@ -41,8 +41,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -773.697565712941,
"y": -13.057776517652679
"x": -773.6975657129408,
"y": -13.057776517652666
},
{
"angle": 6,
@ -50,8 +50,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -731.3693960390717,
"y": -19.56419323976961
"x": -731.3693960390715,
"y": -19.564193239769583
},
{
"angle": 6,
@ -59,8 +59,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -700.8138618525178,
"y": -25.693917945236084
"x": -700.8138618525176,
"y": -25.693917945236056
},
{
"angle": 6,
@ -68,8 +68,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -670.5392892845426,
"y": -33.532046871057645
"x": -670.5392892845424,
"y": -33.53204687105762
},
{
"angle": 6,
@ -77,8 +77,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -649.4254060248002,
"y": -40.69070943425645
"x": -649.4254060247999,
"y": -40.69070943425643
},
{
"angle": 6,
@ -86,7 +86,7 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -636.4972481739836,
"x": -636.4972481739833,
"y": -46.04184558720286
},
{
@ -95,7 +95,7 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -630.5509356263242,
"x": -630.5509356263238,
"y": -48.932226964906654
},
{
@ -104,7 +104,7 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -612.7709374645625,
"x": -612.7709374645622,
"y": -58.17881193899319
},
{

View file

@ -2,303 +2,283 @@
"vector": [
{
"type": "QPointF",
"x": -838.7026077978918,
"y": 360.52065549216434
"x": -815.5965354330709,
"y": 28.923105387766057
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": 331.31319685039375
"y": -46.67441747789094
},
{
"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": -647.5347421078806,
"y": -82.70049226350372
},
{
"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": -394.4224543531805,
"y": 386.98897134293713
},
{
"type": "QPointF",
"x": -414.7876067251065,
"y": 388.13579550460133
},
{
"type": "QPointF",
"x": -435.9520270040898,
"y": 389.07661798449567
},
{
"type": "QPointF",
"x": -457.785958265363,
"y": 389.8184840359457
},
{
"type": "QPointF",
"x": -480.1552993678824,
"y": 390.36735593535275
},
{
"type": "QPointF",
"x": -502.9230721502437,
"y": 390.7285243590086
},
{
"type": "QPointF",
"x": -525.950383021198,
"y": 390.9068434964294
},
{
"type": "QPointF",
"x": -549.0970864147915,
"y": 390.90686803484715
},
{
"type": "QPointF",
"x": -572.2222728858721,
"y": 390.7329321107654
},
{
"type": "QPointF",
"x": -595.1846601170994,
"y": 390.3891909827694
},
{
"type": "QPointF",
"x": -617.8429427582319,
"y": 389.8796354203741
},
{
"type": "QPointF",
"x": -640.0561486385068,
"y": 389.2080817760433
},
{
"type": "QPointF",
"x": -661.6840517509002,
"y": 388.3781346110811
},
{
"type": "QPointF",
"x": -682.5877079123363,
"y": 387.3931112039708
},
{
"type": "QPointF",
"x": -702.6302136187057,
"y": 386.2559049695029
},
{
"type": "QPointF",
"x": -721.6778577696422,
"y": 384.9687413227853
},
{
"type": "QPointF",
"x": -739.6019742862303,
"y": 383.5327301728113
},
{
"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": -814.7149606299213,
"y": 372.2542552635798
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": 28.923105387765915
"y": 372.2542552635798
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": -46.674417477891
},
{
"type": "QPointF",
"x": -814.2667801920632,
"y": -46.77051665539527
},
{
"type": "QPointF",
"x": -778.5602746831936,
"y": -50.54949176119353
},
{
"type": "QPointF",
"x": -737.9608911970817,
"y": -56.79017047839188
},
{
"type": "QPointF",
"x": -709.2737849361833,
"y": -62.54507114228375
},
{
"type": "QPointF",
"x": -681.3583296765719,
"y": -69.77242131730468
},
{
"type": "QPointF",
"x": -662.7349969797737,
"y": -76.08666265976586
},
{
"type": "QPointF",
"x": -652.0000133582188,
"y": -80.53001488530833
},
{
"type": "QPointF",
"x": -647.5347421078782,
"y": -82.70049226350477
},
{
"type": "QPointF",
"x": -631.5852394687809,
"y": -90.99511806183605
},
{
"type": "QPointF",
"x": -616.3280202339708,
"y": -100.59426715699189
},
{
"type": "QPointF",
"x": -594.0963839106636,
"y": -115.9721553077516
},
{
"type": "QPointF",
"x": -184.04865014874542,
"y": 76.19837439910728
},
{
"type": "QPointF",
"x": -202.58871262669427,
"y": 128.53121708773386
},
{
"type": "QPointF",
"x": -214.84435298014208,
"y": 166.70961534534916
},
{
"type": "QPointF",
"x": -224.9007219166651,
"y": 202.78670773496933
},
{
"type": "QPointF",
"x": -232.93434714099388,
"y": 237.08085683490162
},
{
"type": "QPointF",
"x": -239.0890371517,
"y": 269.81704595738483
},
{
"type": "QPointF",
"x": -243.50661138639492,
"y": 301.2305028748772
},
{
"type": "QPointF",
"x": -246.32424570745619,
"y": 331.5659013496832
},
{
"type": "QPointF",
"x": -247.4259188169727,
"y": 355.684725526716
},
{
"type": "QPointF",
"x": -274.1103616347323,
"y": 368.39650194198157
},
{
"type": "QPointF",
"x": -280.43082717423164,
"y": 370.73899686729357
},
{
"type": "QPointF",
"x": -285.6974576466219,
"y": 372.38739828360394
},
{
"type": "QPointF",
"x": -295.7605238049826,
"y": 375.0706690235611
},
{
"type": "QPointF",
"x": -308.3295870292442,
"y": 377.6522566136316
},
{
"type": "QPointF",
"x": -323.20961073643133,
"y": 380.0950323212031
},
{
"type": "QPointF",
"x": -339.2933747725014,
"y": 382.20466538395215
},
{
"type": "QPointF",
"x": -356.571621703457,
"y": 384.0385765592796
},
{
"type": "QPointF",
"x": -374.97963878344376,
"y": 385.6272715746786
},
{
"type": "QPointF",
"x": -394.4224543531813,
"y": 386.9889713429367
},
{
"type": "QPointF",
"x": -414.7876067251059,
"y": 388.13579550460213
},
{
"type": "QPointF",
"x": -435.9520270040894,
"y": 389.07661798449516
},
{
"type": "QPointF",
"x": -457.7859582653625,
"y": 389.818484035946
},
{
"type": "QPointF",
"x": -480.15529936788164,
"y": 390.3673559353522
},
{
"type": "QPointF",
"x": -502.9230721502445,
"y": 390.728524359008
},
{
"type": "QPointF",
"x": -525.9503830211974,
"y": 390.90684349642925
},
{
"type": "QPointF",
"x": -549.0970864147907,
"y": 390.9068680348474
},
{
"type": "QPointF",
"x": -572.2222728858704,
"y": 390.7329321107656
},
{
"type": "QPointF",
"x": -595.1846601171007,
"y": 390.3891909827686
},
{
"type": "QPointF",
"x": -617.8429427582322,
"y": 389.87963542037477
},
{
"type": "QPointF",
"x": -640.0561486385066,
"y": 389.208081776043
},
{
"type": "QPointF",
"x": -661.6840517509004,
"y": 388.3781346110808
},
{
"type": "QPointF",
"x": -682.5877079123347,
"y": 387.3931112039713
},
{
"type": "QPointF",
"x": -702.630213618707,
"y": 386.255904969502
},
{
"type": "QPointF",
"x": -721.6778577696439,
"y": 384.9687413227849
},
{
"type": "QPointF",
"x": -739.6019742862287,
"y": 383.5327301728105
},
{
"type": "QPointF",
"x": -756.2820913691256,
"y": 381.94700726179155
},
{
"type": "QPointF",
"x": -771.6116072858362,
"y": 380.2069813195123
},
{
"type": "QPointF",
"x": -785.5087261025127,
"y": 378.3004611599152
},
{
"type": "QPointF",
"x": -797.9392812498397,
"y": 376.198189302873
},
{
"type": "QPointF",
"x": -810.1810632465665,
"y": 373.5624561175904
},
{
"type": "QPointF",
"x": -818.0929557813755,
"y": 371.2795759163598
},
{
"type": "QPointF",
"x": -823.6929755287612,
"y": 369.27180555079025
},
{
"type": "QPointF",
"x": -829.5753368833404,
"y": 366.62694879394627
},
{
"type": "QPointF",
"x": -835.8151397150936,
"y": 362.8920896668543
},
{
"type": "QPointF",
"x": -838.7026077978918,
"y": 360.52065549216434
"y": 28.923105387766057
}
]
}

View file

@ -451,7 +451,7 @@
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -810.9147913912859,
"y": -9.118915311803084
"y": -9.118915311803082
},
{
"angle": 6,
@ -459,8 +459,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -773.697565712941,
"y": -13.057776517652679
"x": -773.6975657129408,
"y": -13.057776517652666
},
{
"angle": 6,
@ -468,8 +468,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -731.3693960390717,
"y": -19.56419323976961
"x": -731.3693960390715,
"y": -19.564193239769583
},
{
"angle": 6,
@ -477,8 +477,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -700.8138618525178,
"y": -25.693917945236084
"x": -700.8138618525176,
"y": -25.693917945236056
},
{
"angle": 6,
@ -486,8 +486,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -670.5392892845426,
"y": -33.532046871057645
"x": -670.5392892845424,
"y": -33.53204687105762
},
{
"angle": 6,
@ -495,8 +495,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -649.4254060248002,
"y": -40.69070943425645
"x": -649.4254060247999,
"y": -40.69070943425643
},
{
"angle": 6,
@ -504,7 +504,7 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -636.4972481739836,
"x": -636.4972481739833,
"y": -46.04184558720286
},
{
@ -513,7 +513,7 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -630.5509356263242,
"x": -630.5509356263238,
"y": -48.932226964906654
},
{
@ -522,7 +522,7 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -612.7709374645625,
"x": -612.7709374645622,
"y": -58.17881193899319
},
{

View file

@ -2,313 +2,288 @@
"vector": [
{
"type": "QPointF",
"x": -218.4362476442146,
"y": 60.082487681666066
"x": -218.43624764421457,
"y": 60.082487681666
},
{
"type": "QPointF",
"x": -196.73040945651604,
"y": 111.99504529263494
"x": -196.73040945651616,
"y": 111.99504529263479
},
{
"type": "QPointF",
"x": -196.73040945651593,
"y": 111.995045292635
"x": -202.58871262669425,
"y": 128.53121708773293
},
{
"type": "QPointF",
"x": -202.58871262669427,
"y": 128.53121708773386
"x": -214.84435298014535,
"y": 166.709615345359
},
{
"type": "QPointF",
"x": -214.84435298014208,
"y": 166.70961534534916
"x": -224.9007219166664,
"y": 202.7867077349721
},
{
"type": "QPointF",
"x": -224.9007219166651,
"y": 202.78670773496933
"x": -232.93434714099442,
"y": 237.0808568349011
},
{
"type": "QPointF",
"x": -232.93434714099388,
"y": 237.08085683490162
"x": -239.08903715169467,
"y": 269.8170459573539
},
{
"type": "QPointF",
"x": -239.0890371517,
"y": 269.81704595738483
"x": -243.50661138639543,
"y": 301.2305028748881
},
{
"type": "QPointF",
"x": -243.50661138639492,
"y": 301.2305028748772
"x": -246.32424570745593,
"y": 331.5659013496859
},
{
"type": "QPointF",
"x": -246.32424570745619,
"y": 331.5659013496832
"x": -247.42591881697234,
"y": 355.68472552671597
},
{
"type": "QPointF",
"x": -247.4259188169727,
"y": 355.684725526716
"x": -274.1103616347226,
"y": 368.3965019419771
},
{
"type": "QPointF",
"x": -274.1103616347323,
"y": 368.39650194198157
"x": -280.4308271742487,
"y": 370.73899686729897
},
{
"type": "QPointF",
"x": -280.43082717423164,
"y": 370.73899686729357
"x": -286.53994881447335,
"y": 372.65108939343145
},
{
"type": "QPointF",
"x": -285.6974576466219,
"y": 372.38739828360394
"x": -295.7605238049802,
"y": 375.07066902356064
},
{
"type": "QPointF",
"x": -295.7605238049826,
"y": 375.0706690235611
"x": -309.1086607001497,
"y": 377.8122722714953
},
{
"type": "QPointF",
"x": -308.3295870292442,
"y": 377.6522566136316
"x": -323.7918413406422,
"y": 380.189287868496
},
{
"type": "QPointF",
"x": -323.20961073643133,
"y": 380.0950323212031
"x": -339.7464924132723,
"y": 382.2635758852316
},
{
"type": "QPointF",
"x": -339.2933747725014,
"y": 382.20466538395215
"x": -356.9362622181957,
"y": 384.07704503986554
},
{
"type": "QPointF",
"x": -356.571621703457,
"y": 384.0385765592796
"x": -375.2815276936278,
"y": 385.65320885961137
},
{
"type": "QPointF",
"x": -374.97963878344376,
"y": 385.6272715746786
"x": -394.4224543531805,
"y": 386.98897134293713
},
{
"type": "QPointF",
"x": -394.4224543531813,
"y": 386.9889713429367
"x": -414.7876067251065,
"y": 388.13579550460133
},
{
"type": "QPointF",
"x": -414.7876067251059,
"y": 388.13579550460213
"x": -435.9520270040898,
"y": 389.07661798449567
},
{
"type": "QPointF",
"x": -435.9520270040894,
"y": 389.07661798449516
"x": -457.785958265363,
"y": 389.8184840359457
},
{
"type": "QPointF",
"x": -457.7859582653625,
"y": 389.818484035946
"x": -480.1552993678824,
"y": 390.36735593535275
},
{
"type": "QPointF",
"x": -480.15529936788164,
"y": 390.3673559353522
"x": -502.9230721502437,
"y": 390.7285243590086
},
{
"type": "QPointF",
"x": -502.9230721502445,
"y": 390.728524359008
"x": -525.950383021198,
"y": 390.9068434964294
},
{
"type": "QPointF",
"x": -525.9503830211974,
"y": 390.90684349642925
"x": -549.0970864147915,
"y": 390.90686803484715
},
{
"type": "QPointF",
"x": -549.0970864147907,
"y": 390.9068680348474
"x": -572.2222728858721,
"y": 390.7329321107654
},
{
"type": "QPointF",
"x": -572.2222728858704,
"y": 390.7329321107656
"x": -595.1846601170994,
"y": 390.3891909827694
},
{
"type": "QPointF",
"x": -595.1846601171007,
"y": 390.3891909827686
"x": -617.8429427582319,
"y": 389.8796354203741
},
{
"type": "QPointF",
"x": -617.8429427582322,
"y": 389.87963542037477
"x": -640.0561486385068,
"y": 389.2080817760433
},
{
"type": "QPointF",
"x": -640.0561486385066,
"y": 389.208081776043
"x": -661.6840517509002,
"y": 388.3781346110811
},
{
"type": "QPointF",
"x": -661.6840517509004,
"y": 388.3781346110808
"x": -682.5877079123363,
"y": 387.3931112039708
},
{
"type": "QPointF",
"x": -682.5877079123347,
"y": 387.3931112039713
"x": -702.6302136187057,
"y": 386.2559049695029
},
{
"type": "QPointF",
"x": -702.630213618707,
"y": 386.255904969502
"x": -721.6778577696422,
"y": 384.9687413227853
},
{
"type": "QPointF",
"x": -721.6778577696439,
"y": 384.9687413227849
"x": -739.6019742862303,
"y": 383.5327301728113
},
{
"type": "QPointF",
"x": -739.6019742862287,
"y": 383.5327301728105
"x": -756.6283706367624,
"y": 381.91399989149096
},
{
"type": "QPointF",
"x": -756.2820913691256,
"y": 381.94700726179155
"x": -772.0557074133295,
"y": 380.1563856315983
},
{
"type": "QPointF",
"x": -771.6116072858362,
"y": 380.2069813195123
"x": -786.1074176186619,
"y": 378.2178680808823
},
{
"type": "QPointF",
"x": -785.5087261025127,
"y": 378.3004611599152
"x": -798.8005062137145,
"y": 376.0511796823399
},
{
"type": "QPointF",
"x": -797.9392812498397,
"y": 376.198189302873
"x": -810.1810632465617,
"y": 373.5624561175911
},
{
"type": "QPointF",
"x": -810.1810632465665,
"y": 373.5624561175904
},
{
"type": "QPointF",
"x": -818.0929557813755,
"y": 371.2795759163598
},
{
"type": "QPointF",
"x": -823.6929755287612,
"y": 369.27180555079025
},
{
"type": "QPointF",
"x": -829.5753368833404,
"y": 366.62694879394627
},
{
"type": "QPointF",
"x": -835.8151397150936,
"y": 362.8920896668543
},
{
"type": "QPointF",
"x": -838.7026077978918,
"y": 360.52065549216434
"x": -814.7149606299213,
"y": 372.2542552635798
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": 331.31319685039375
"y": 330.5891727033602
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": 28.923105387766014
"y": 28.923105387766057
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": -46.674417477891
"y": -46.67441747789091
},
{
"type": "QPointF",
"x": -814.2667801920633,
"y": -46.770516655395255
"x": -814.2667801920695,
"y": -46.77051665539474
},
{
"type": "QPointF",
"x": -778.5602746831936,
"y": -50.54949176119353
"x": -778.5602746831969,
"y": -50.54949176119329
},
{
"type": "QPointF",
"x": -737.9608911970817,
"y": -56.79017047839188
"x": -737.9608911970803,
"y": -56.790170478392334
},
{
"type": "QPointF",
"x": -709.2737849361833,
"y": -62.54507114228375
"x": -709.2737849361882,
"y": -62.54507114228297
},
{
"type": "QPointF",
"x": -681.3583296765719,
"y": -69.77242131730468
"x": -681.3583296765614,
"y": -69.77242131730785
},
{
"type": "QPointF",
"x": -662.7349969797737,
"y": -76.08666265976586
"x": -662.7349969797801,
"y": -76.08666265976335
},
{
"type": "QPointF",
"x": -652.0000133582188,
"y": -80.53001488530833
"x": -652.0000133582183,
"y": -80.53001488530862
},
{
"type": "QPointF",
"x": -647.5347421078782,
"y": -82.70049226350477
"x": -647.5347421078806,
"y": -82.70049226350372
},
{
"type": "QPointF",
"x": -631.5852394687809,
"y": -90.99511806183605
"x": -631.5852394687715,
"y": -90.99511806184105
},
{
"type": "QPointF",
"x": -616.3280202339708,
"y": -100.59426715699185
"x": -616.3280202339934,
"y": -100.59426715697732
},
{
"type": "QPointF",
"x": -594.0963839106636,
"y": -115.97215530775165
"x": -594.0963839106644,
"y": -115.97215530775212
},
{
"type": "QPointF",
"x": -218.4362476442146,
"y": 60.082487681666066
"x": -218.43624764421457,
"y": 60.082487681666
}
]
}

View file

@ -457,7 +457,7 @@
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -810.9147913912859,
"y": -9.118915311803084
"y": -9.118915311803082
},
{
"angle": 6,
@ -465,8 +465,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -773.697565712941,
"y": -13.057776517652679
"x": -773.6975657129408,
"y": -13.057776517652666
},
{
"angle": 6,
@ -474,8 +474,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -731.3693960390717,
"y": -19.56419323976961
"x": -731.3693960390715,
"y": -19.564193239769583
},
{
"angle": 6,
@ -483,8 +483,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -700.8138618525178,
"y": -25.693917945236084
"x": -700.8138618525176,
"y": -25.693917945236056
},
{
"angle": 6,
@ -492,8 +492,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -670.5392892845426,
"y": -33.532046871057645
"x": -670.5392892845424,
"y": -33.53204687105762
},
{
"angle": 6,
@ -501,8 +501,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -649.4254060248002,
"y": -40.69070943425645
"x": -649.4254060247999,
"y": -40.69070943425643
},
{
"angle": 6,
@ -510,7 +510,7 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -636.4972481739836,
"x": -636.4972481739833,
"y": -46.04184558720286
},
{
@ -519,7 +519,7 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -630.5509356263242,
"x": -630.5509356263238,
"y": -48.932226964906654
},
{
@ -528,7 +528,7 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -612.7709374645625,
"x": -612.7709374645622,
"y": -58.17881193899319
},
{

View file

@ -2,313 +2,288 @@
"vector": [
{
"type": "QPointF",
"x": -594.0963839106636,
"y": -115.97215530775165
"x": -594.0963839106644,
"y": -115.97215530775212
},
{
"type": "QPointF",
"x": -218.4362476442146,
"y": 60.082487681666066
"x": -218.43624764421457,
"y": 60.082487681666
},
{
"type": "QPointF",
"x": -196.73040945651604,
"y": 111.99504529263494
"x": -196.73040945651616,
"y": 111.99504529263479
},
{
"type": "QPointF",
"x": -196.73040945651593,
"y": 111.995045292635
"x": -202.58871262669425,
"y": 128.53121708773293
},
{
"type": "QPointF",
"x": -202.58871262669427,
"y": 128.53121708773386
"x": -214.84435298014535,
"y": 166.709615345359
},
{
"type": "QPointF",
"x": -214.84435298014208,
"y": 166.70961534534916
"x": -224.9007219166664,
"y": 202.7867077349721
},
{
"type": "QPointF",
"x": -224.9007219166651,
"y": 202.78670773496933
"x": -232.93434714099442,
"y": 237.0808568349011
},
{
"type": "QPointF",
"x": -232.93434714099388,
"y": 237.08085683490162
"x": -239.08903715169467,
"y": 269.8170459573539
},
{
"type": "QPointF",
"x": -239.0890371517,
"y": 269.81704595738483
"x": -243.50661138639543,
"y": 301.2305028748881
},
{
"type": "QPointF",
"x": -243.50661138639492,
"y": 301.2305028748772
"x": -246.32424570745593,
"y": 331.5659013496859
},
{
"type": "QPointF",
"x": -246.32424570745619,
"y": 331.5659013496832
"x": -247.42591881697234,
"y": 355.68472552671597
},
{
"type": "QPointF",
"x": -247.4259188169727,
"y": 355.684725526716
"x": -274.1103616347226,
"y": 368.3965019419771
},
{
"type": "QPointF",
"x": -274.1103616347323,
"y": 368.39650194198157
"x": -280.4308271742487,
"y": 370.73899686729897
},
{
"type": "QPointF",
"x": -280.43082717423164,
"y": 370.73899686729357
"x": -286.53994881447335,
"y": 372.65108939343145
},
{
"type": "QPointF",
"x": -285.6974576466219,
"y": 372.38739828360394
"x": -295.7605238049802,
"y": 375.07066902356064
},
{
"type": "QPointF",
"x": -295.7605238049826,
"y": 375.0706690235611
"x": -309.1086607001497,
"y": 377.8122722714953
},
{
"type": "QPointF",
"x": -308.3295870292442,
"y": 377.6522566136316
"x": -323.7918413406422,
"y": 380.189287868496
},
{
"type": "QPointF",
"x": -323.20961073643133,
"y": 380.0950323212031
"x": -339.7464924132723,
"y": 382.2635758852316
},
{
"type": "QPointF",
"x": -339.2933747725014,
"y": 382.20466538395215
"x": -356.9362622181957,
"y": 384.07704503986554
},
{
"type": "QPointF",
"x": -356.571621703457,
"y": 384.0385765592796
"x": -375.2815276936278,
"y": 385.65320885961137
},
{
"type": "QPointF",
"x": -374.97963878344376,
"y": 385.6272715746786
"x": -394.4224543531805,
"y": 386.98897134293713
},
{
"type": "QPointF",
"x": -394.4224543531813,
"y": 386.9889713429367
"x": -414.7876067251065,
"y": 388.13579550460133
},
{
"type": "QPointF",
"x": -414.7876067251059,
"y": 388.13579550460213
"x": -435.9520270040898,
"y": 389.07661798449567
},
{
"type": "QPointF",
"x": -435.9520270040894,
"y": 389.07661798449516
"x": -457.785958265363,
"y": 389.8184840359457
},
{
"type": "QPointF",
"x": -457.7859582653625,
"y": 389.818484035946
"x": -480.1552993678824,
"y": 390.36735593535275
},
{
"type": "QPointF",
"x": -480.15529936788164,
"y": 390.3673559353522
"x": -502.9230721502437,
"y": 390.7285243590086
},
{
"type": "QPointF",
"x": -502.9230721502445,
"y": 390.728524359008
"x": -525.950383021198,
"y": 390.9068434964294
},
{
"type": "QPointF",
"x": -525.9503830211974,
"y": 390.90684349642925
"x": -549.0970864147915,
"y": 390.90686803484715
},
{
"type": "QPointF",
"x": -549.0970864147907,
"y": 390.9068680348474
"x": -572.2222728858721,
"y": 390.7329321107654
},
{
"type": "QPointF",
"x": -572.2222728858704,
"y": 390.7329321107656
"x": -595.1846601170994,
"y": 390.3891909827694
},
{
"type": "QPointF",
"x": -595.1846601171007,
"y": 390.3891909827686
"x": -617.8429427582319,
"y": 389.8796354203741
},
{
"type": "QPointF",
"x": -617.8429427582322,
"y": 389.87963542037477
"x": -640.0561486385068,
"y": 389.2080817760433
},
{
"type": "QPointF",
"x": -640.0561486385066,
"y": 389.208081776043
"x": -661.6840517509002,
"y": 388.3781346110811
},
{
"type": "QPointF",
"x": -661.6840517509004,
"y": 388.3781346110808
"x": -682.5877079123363,
"y": 387.3931112039708
},
{
"type": "QPointF",
"x": -682.5877079123347,
"y": 387.3931112039713
"x": -702.6302136187057,
"y": 386.2559049695029
},
{
"type": "QPointF",
"x": -702.630213618707,
"y": 386.255904969502
"x": -721.6778577696422,
"y": 384.9687413227853
},
{
"type": "QPointF",
"x": -721.6778577696439,
"y": 384.9687413227849
"x": -739.6019742862303,
"y": 383.5327301728113
},
{
"type": "QPointF",
"x": -739.6019742862287,
"y": 383.5327301728105
"x": -756.6283706367624,
"y": 381.91399989149096
},
{
"type": "QPointF",
"x": -756.2820913691256,
"y": 381.94700726179155
"x": -772.0557074133295,
"y": 380.1563856315983
},
{
"type": "QPointF",
"x": -771.6116072858362,
"y": 380.2069813195123
"x": -786.1074176186619,
"y": 378.2178680808823
},
{
"type": "QPointF",
"x": -785.5087261025127,
"y": 378.3004611599152
"x": -798.8005062137145,
"y": 376.0511796823399
},
{
"type": "QPointF",
"x": -797.9392812498397,
"y": 376.198189302873
"x": -810.1810632465617,
"y": 373.5624561175911
},
{
"type": "QPointF",
"x": -810.1810632465665,
"y": 373.5624561175904
},
{
"type": "QPointF",
"x": -818.0929557813755,
"y": 371.2795759163598
},
{
"type": "QPointF",
"x": -823.6929755287612,
"y": 369.27180555079025
},
{
"type": "QPointF",
"x": -829.5753368833404,
"y": 366.62694879394627
},
{
"type": "QPointF",
"x": -835.8151397150936,
"y": 362.8920896668543
},
{
"type": "QPointF",
"x": -838.7026077978918,
"y": 360.52065549216434
"x": -814.7149606299213,
"y": 372.2542552635798
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": 331.31319685039375
"y": 330.5891727033602
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": 28.923105387766014
"y": 28.923105387766057
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": -46.674417477891
"y": -46.67441747789091
},
{
"type": "QPointF",
"x": -814.2667801920633,
"y": -46.770516655395255
"x": -814.2667801920695,
"y": -46.77051665539474
},
{
"type": "QPointF",
"x": -778.5602746831936,
"y": -50.54949176119353
"x": -778.5602746831969,
"y": -50.54949176119329
},
{
"type": "QPointF",
"x": -737.9608911970817,
"y": -56.79017047839188
"x": -737.9608911970803,
"y": -56.790170478392334
},
{
"type": "QPointF",
"x": -709.2737849361833,
"y": -62.54507114228375
"x": -709.2737849361882,
"y": -62.54507114228297
},
{
"type": "QPointF",
"x": -681.3583296765719,
"y": -69.77242131730468
"x": -681.3583296765614,
"y": -69.77242131730785
},
{
"type": "QPointF",
"x": -662.7349969797737,
"y": -76.08666265976586
"x": -662.7349969797801,
"y": -76.08666265976335
},
{
"type": "QPointF",
"x": -652.0000133582188,
"y": -80.53001488530833
"x": -652.0000133582183,
"y": -80.53001488530862
},
{
"type": "QPointF",
"x": -647.5347421078782,
"y": -82.70049226350477
"x": -647.5347421078806,
"y": -82.70049226350372
},
{
"type": "QPointF",
"x": -631.5852394687809,
"y": -90.99511806183605
"x": -631.5852394687715,
"y": -90.99511806184105
},
{
"type": "QPointF",
"x": -616.3280202339708,
"y": -100.59426715699185
"x": -616.3280202339934,
"y": -100.59426715697732
},
{
"type": "QPointF",
"x": -594.0963839106636,
"y": -115.97215530775165
"x": -594.0963839106644,
"y": -115.97215530775212
}
]
}

View file

@ -16,7 +16,7 @@
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -810.9147913912859,
"y": -9.118915311803084
"y": -9.118915311803082
},
{
"angle": 6,
@ -24,8 +24,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -773.697565712941,
"y": -13.057776517652679
"x": -773.6975657129408,
"y": -13.057776517652666
},
{
"angle": 6,
@ -33,8 +33,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -731.3693960390717,
"y": -19.56419323976961
"x": -731.3693960390715,
"y": -19.564193239769583
},
{
"angle": 6,
@ -42,8 +42,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -700.8138618525178,
"y": -25.693917945236084
"x": -700.8138618525176,
"y": -25.693917945236056
},
{
"angle": 6,
@ -51,8 +51,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -670.5392892845426,
"y": -33.532046871057645
"x": -670.5392892845424,
"y": -33.53204687105762
},
{
"angle": 6,
@ -60,8 +60,8 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -649.4254060248002,
"y": -40.69070943425645
"x": -649.4254060247999,
"y": -40.69070943425643
},
{
"angle": 6,
@ -69,7 +69,7 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -636.4972481739836,
"x": -636.4972481739833,
"y": -46.04184558720286
},
{
@ -78,7 +78,7 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -630.5509356263242,
"x": -630.5509356263238,
"y": -48.932226964906654
},
{
@ -87,7 +87,7 @@
"saAfter": 37.795275590551185,
"saBefore": 37.795275590551185,
"type": "VSAPoint",
"x": -612.7709374645625,
"x": -612.7709374645622,
"y": -58.17881193899319
},
{

View file

@ -3,312 +3,287 @@
{
"type": "QPointF",
"x": -815.5965354330709,
"y": 28.864326962967652
"y": 28.864326962967752
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": -46.74789050888896
"y": -46.747890508888815
},
{
"type": "QPointF",
"x": -814.7887347652259,
"y": -46.8308714614612
"x": -814.7887347652247,
"y": -46.83087146146117
},
{
"type": "QPointF",
"x": -778.5027796006967,
"y": -50.55832953918108
"x": -778.5027796007051,
"y": -50.55832953918005
},
{
"type": "QPointF",
"x": -737.9608911970817,
"y": -56.79017047839188
"x": -737.9608911970803,
"y": -56.790170478392334
},
{
"type": "QPointF",
"x": -709.2737849361833,
"y": -62.54507114228375
"x": -709.2737849361882,
"y": -62.54507114228297
},
{
"type": "QPointF",
"x": -681.3583296765719,
"y": -69.77242131730468
"x": -681.3583296765614,
"y": -69.77242131730785
},
{
"type": "QPointF",
"x": -662.7349969797737,
"y": -76.08666265976586
"x": -662.7349969797801,
"y": -76.08666265976335
},
{
"type": "QPointF",
"x": -652.0000133582188,
"y": -80.53001488530833
"x": -652.0000133582183,
"y": -80.53001488530862
},
{
"type": "QPointF",
"x": -647.5347421078782,
"y": -82.70049226350477
"x": -647.5347421078806,
"y": -82.70049226350372
},
{
"type": "QPointF",
"x": -631.5852394687809,
"y": -90.99511806183605
"x": -631.5852394687715,
"y": -90.99511806184105
},
{
"type": "QPointF",
"x": -616.3280202339708,
"y": -100.59426715699185
"x": -616.3280202339934,
"y": -100.59426715697732
},
{
"type": "QPointF",
"x": -594.0963839106636,
"y": -115.97215530775165
"x": -594.0963839106644,
"y": -115.97215530775212
},
{
"type": "QPointF",
"x": -218.4362476442146,
"y": 60.082487681666066
"x": -218.43624764421457,
"y": 60.082487681666
},
{
"type": "QPointF",
"x": -196.73040945651604,
"y": 111.99504529263494
"x": -196.73040945651616,
"y": 111.99504529263479
},
{
"type": "QPointF",
"x": -196.73040945651593,
"y": 111.995045292635
"x": -202.58871262669425,
"y": 128.53121708773293
},
{
"type": "QPointF",
"x": -202.58871262669427,
"y": 128.53121708773386
"x": -214.84435298014535,
"y": 166.709615345359
},
{
"type": "QPointF",
"x": -214.84435298014208,
"y": 166.70961534534916
"x": -224.9007219166664,
"y": 202.7867077349721
},
{
"type": "QPointF",
"x": -224.9007219166651,
"y": 202.78670773496933
"x": -232.93434714099442,
"y": 237.0808568349011
},
{
"type": "QPointF",
"x": -232.93434714099388,
"y": 237.08085683490162
"x": -239.08903715169467,
"y": 269.8170459573539
},
{
"type": "QPointF",
"x": -239.0890371517,
"y": 269.81704595738483
"x": -243.50661138639543,
"y": 301.2305028748881
},
{
"type": "QPointF",
"x": -243.50661138639492,
"y": 301.2305028748772
"x": -246.32424570745593,
"y": 331.5659013496859
},
{
"type": "QPointF",
"x": -246.32424570745619,
"y": 331.5659013496832
"x": -247.42591881697234,
"y": 355.68472552671597
},
{
"type": "QPointF",
"x": -247.4259188169727,
"y": 355.684725526716
"x": -274.1103616347226,
"y": 368.3965019419771
},
{
"type": "QPointF",
"x": -274.1103616347323,
"y": 368.39650194198157
"x": -280.4308271742487,
"y": 370.73899686729897
},
{
"type": "QPointF",
"x": -280.43082717423164,
"y": 370.73899686729357
"x": -286.53994881447335,
"y": 372.65108939343145
},
{
"type": "QPointF",
"x": -285.6974576466219,
"y": 372.38739828360394
"x": -295.7605238049802,
"y": 375.07066902356064
},
{
"type": "QPointF",
"x": -295.7605238049826,
"y": 375.0706690235611
"x": -309.1086607001497,
"y": 377.8122722714953
},
{
"type": "QPointF",
"x": -308.3295870292442,
"y": 377.6522566136316
"x": -323.7918413406422,
"y": 380.189287868496
},
{
"type": "QPointF",
"x": -323.20961073643133,
"y": 380.0950323212031
"x": -339.7464924132723,
"y": 382.2635758852316
},
{
"type": "QPointF",
"x": -339.2933747725014,
"y": 382.20466538395215
"x": -356.9362622181957,
"y": 384.07704503986554
},
{
"type": "QPointF",
"x": -356.571621703457,
"y": 384.0385765592796
"x": -375.2815276936278,
"y": 385.65320885961137
},
{
"type": "QPointF",
"x": -374.97963878344376,
"y": 385.6272715746786
"x": -394.4224543531805,
"y": 386.98897134293713
},
{
"type": "QPointF",
"x": -394.4224543531813,
"y": 386.9889713429367
"x": -414.7876067251065,
"y": 388.13579550460133
},
{
"type": "QPointF",
"x": -414.7876067251059,
"y": 388.13579550460213
"x": -435.9520270040898,
"y": 389.07661798449567
},
{
"type": "QPointF",
"x": -435.9520270040894,
"y": 389.07661798449516
"x": -457.785958265363,
"y": 389.8184840359457
},
{
"type": "QPointF",
"x": -457.7859582653625,
"y": 389.818484035946
"x": -480.1552993678824,
"y": 390.36735593535275
},
{
"type": "QPointF",
"x": -480.15529936788164,
"y": 390.3673559353522
"x": -502.9230721502437,
"y": 390.7285243590086
},
{
"type": "QPointF",
"x": -502.9230721502445,
"y": 390.728524359008
"x": -525.950383021198,
"y": 390.9068434964294
},
{
"type": "QPointF",
"x": -525.9503830211974,
"y": 390.90684349642925
"x": -549.0970864147915,
"y": 390.90686803484715
},
{
"type": "QPointF",
"x": -549.0970864147907,
"y": 390.9068680348474
"x": -572.2222728858721,
"y": 390.7329321107654
},
{
"type": "QPointF",
"x": -572.2222728858704,
"y": 390.7329321107656
"x": -595.1846601170994,
"y": 390.3891909827694
},
{
"type": "QPointF",
"x": -595.1846601171007,
"y": 390.3891909827686
"x": -617.8429427582319,
"y": 389.8796354203741
},
{
"type": "QPointF",
"x": -617.8429427582322,
"y": 389.87963542037477
"x": -640.0561486385068,
"y": 389.2080817760433
},
{
"type": "QPointF",
"x": -640.0561486385066,
"y": 389.208081776043
"x": -661.6840517509002,
"y": 388.3781346110811
},
{
"type": "QPointF",
"x": -661.6840517509004,
"y": 388.3781346110808
"x": -682.5877079123363,
"y": 387.3931112039708
},
{
"type": "QPointF",
"x": -682.5877079123347,
"y": 387.3931112039713
"x": -702.6302136187057,
"y": 386.2559049695029
},
{
"type": "QPointF",
"x": -702.630213618707,
"y": 386.255904969502
"x": -721.6778577696422,
"y": 384.9687413227853
},
{
"type": "QPointF",
"x": -721.6778577696439,
"y": 384.9687413227849
"x": -739.6019742862303,
"y": 383.5327301728113
},
{
"type": "QPointF",
"x": -739.6019742862287,
"y": 383.5327301728105
"x": -756.6283706367624,
"y": 381.91399989149096
},
{
"type": "QPointF",
"x": -756.2820913691256,
"y": 381.94700726179155
"x": -772.0557074133295,
"y": 380.1563856315983
},
{
"type": "QPointF",
"x": -771.6116072858362,
"y": 380.2069813195123
"x": -786.1074176186619,
"y": 378.2178680808823
},
{
"type": "QPointF",
"x": -785.5087261025127,
"y": 378.3004611599152
"x": -798.8005062137145,
"y": 376.0511796823399
},
{
"type": "QPointF",
"x": -797.9392812498397,
"y": 376.198189302873
"x": -810.1810632465617,
"y": 373.5624561175911
},
{
"type": "QPointF",
"x": -810.1810632465665,
"y": 373.5624561175904
},
{
"type": "QPointF",
"x": -818.0929557813755,
"y": 371.2795759163598
},
{
"type": "QPointF",
"x": -823.6929755287612,
"y": 369.27180555079025
},
{
"type": "QPointF",
"x": -829.5753368833404,
"y": 366.62694879394627
},
{
"type": "QPointF",
"x": -835.8151397150936,
"y": 362.8920896668543
},
{
"type": "QPointF",
"x": -838.7026077978918,
"y": 360.52065549216434
"x": -814.7149606299213,
"y": 372.2542552635798
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": 331.31319685039375
"y": 330.5891727033602
},
{
"type": "QPointF",
"x": -815.5965354330709,
"y": 28.864326962967652
"y": 28.864326962967752
}
]
}

View file

@ -0,0 +1,626 @@
{
"vector": [
{
"angle": 1,
"saBefore": 0,
"turnPoint": true,
"type": "VSAPoint",
"x": 29.999999999999943,
"y": 361.25971653543314
},
{
"angle": 1,
"curvePoint": true,
"saBefore": 0,
"turnPoint": true,
"type": "VSAPoint",
"x": 29.999999999999943,
"y": 361.25971653543314
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 31.73396290699989,
"y": 354.45851017139887
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 41.25493119356215,
"y": 316.26845068079757
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 53.21939514673762,
"y": 275.12569164692474
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 63.17801030657803,
"y": 245.33022656552694
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 74.79698588969273,
"y": 215.28054296635247
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 88.04014693829234,
"y": 186.63293747986256
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 95.32490579737316,
"y": 173.5144451866591
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 102.15423147111207,
"y": 162.06333466959018
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 117.87361973531404,
"y": 138.88507040105114
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 135.55721109055781,
"y": 116.18046604379055
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 154.63980419348007,
"y": 94.84386803398598
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 174.5561977007173,
"y": 75.76962280781511
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 189.69581722752943,
"y": 63.60622127567666
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 199.74948802498102,
"y": 56.60431303423299
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 209.6936831678694,
"y": 50.671062859047666
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 219.45775248827417,
"y": 45.91826405464286
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 228.97104581827483,
"y": 42.45770992554081
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 238.162912989951,
"y": 40.401193776263696
},
{
"curvePoint": true,
"turnPoint": true,
"type": "VSAPoint",
"x": 242.5984251968504,
"y": 39.99987401574802
},
{
"turnPoint": true,
"type": "VSAPoint",
"x": 242.5984251968504,
"y": 39.99987401574802
},
{
"curvePoint": true,
"turnPoint": true,
"type": "VSAPoint",
"x": 242.5984251968504,
"y": 39.99987401574802
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 247.0339374037498,
"y": 40.401193776263696
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 256.22580457542597,
"y": 42.45770992554081
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 265.73909790542666,
"y": 45.91826405464286
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 275.5031672258314,
"y": 50.671062859047666
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 285.44736236871984,
"y": 56.60431303423299
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 295.50103316617134,
"y": 63.606221275676646
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 310.6406526929835,
"y": 75.76962280781508
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 330.5570462002207,
"y": 94.84386803398598
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 349.63963930314287,
"y": 116.18046604379055
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 367.32323065838676,
"y": 138.88507040105114
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 383.04261892258876,
"y": 162.06333466959018
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 389.87194459632764,
"y": 173.5144451866591
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 397.15670345540843,
"y": 186.63293747986256
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 410.39986450400806,
"y": 215.28054296635247
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 422.0188400871228,
"y": 245.33022656552694
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 431.97745524696313,
"y": 275.12569164692474
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 443.94191920013867,
"y": 316.26845068079757
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 453.46288748670094,
"y": 354.45851017139887
},
{
"curvePoint": true,
"turnPoint": true,
"type": "VSAPoint",
"x": 455.19685039370086,
"y": 361.25971653543314
},
{
"turnPoint": true,
"type": "VSAPoint",
"x": 455.19685039370086,
"y": 361.25971653543314
},
{
"curvePoint": true,
"turnPoint": true,
"type": "VSAPoint",
"x": 455.19685039370086,
"y": 361.25971653543314
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 456.9308133007008,
"y": 354.45851017139887
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 466.45178158726304,
"y": 316.26845068079757
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 478.41624554043847,
"y": 275.12569164692474
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 488.37486070027893,
"y": 245.3302265655269
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 499.99383628339353,
"y": 215.28054296635247
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 513.2369973319932,
"y": 186.63293747986256
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 520.521756191074,
"y": 173.5144451866591
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 527.351081864813,
"y": 162.06333466959015
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 543.0704701290149,
"y": 138.8850704010511
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 560.7540614842587,
"y": 116.18046604379052
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 579.8366545871809,
"y": 94.84386803398596
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 599.7530480944181,
"y": 75.76962280781505
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 614.8926676212302,
"y": 63.60622127567662
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 624.9463384186819,
"y": 56.60431303423296
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 634.8905335615702,
"y": 50.67106285904764
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 644.654602881975,
"y": 45.91826405464284
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 654.1678962119756,
"y": 42.4577099255408
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 663.3597633836519,
"y": 40.40119377626369
},
{
"curvePoint": true,
"turnPoint": true,
"type": "VSAPoint",
"x": 667.7952755905513,
"y": 39.99987401574802
},
{
"turnPoint": true,
"type": "VSAPoint",
"x": 667.7952755905512,
"y": 39.999874015748
},
{
"curvePoint": true,
"turnPoint": true,
"type": "VSAPoint",
"x": 667.7952755905511,
"y": 39.99987401574802
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 672.2307877974506,
"y": 40.40119377626369
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 681.4226549691268,
"y": 42.4577099255408
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 690.9359482991274,
"y": 45.91826405464284
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 700.7000176195322,
"y": 50.67106285904762
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 710.6442127624206,
"y": 56.60431303423295
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 720.6978835598723,
"y": 63.60622127567662
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 735.8375030866844,
"y": 75.76962280781505
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 755.7538965939216,
"y": 94.84386803398593
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 774.8364896968437,
"y": 116.18046604379049
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 792.5200810520876,
"y": 138.8850704010511
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 808.2394693162895,
"y": 162.06333466959015
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 815.0687949900284,
"y": 173.5144451866591
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 822.3535538491093,
"y": 186.63293747986256
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 835.5967148977088,
"y": 215.28054296635247
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 847.2156904808235,
"y": 245.33022656552694
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 857.174305640664,
"y": 275.1256916469248
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 869.1387695938392,
"y": 316.26845068079757
},
{
"angle": 6,
"curvePoint": true,
"type": "VSAPoint",
"x": 878.6597378804015,
"y": 354.45851017139887
},
{
"curvePoint": true,
"turnPoint": true,
"type": "VSAPoint",
"x": 880.3937007874016,
"y": 361.25971653543314
},
{
"turnPoint": true,
"type": "VSAPoint",
"x": 880.3937007874015,
"y": 361.25971653543314
},
{
"turnPoint": true,
"type": "VSAPoint",
"x": 880.3937007874015,
"y": 928.1888503937009
},
{
"turnPoint": true,
"type": "VSAPoint",
"x": 880.3937007874014,
"y": 1136.0628661417325
},
{
"angle": 1,
"saAfter": 0,
"turnPoint": true,
"type": "VSAPoint",
"x": 29.999999999999808,
"y": 1136.0628661417325
},
{
"saAfter": 0,
"saBefore": 0,
"turnPoint": true,
"type": "VSAPoint",
"x": 29.999999999999844,
"y": 928.1888503937009
}
]
}

View file

@ -0,0 +1,359 @@
{
"vector": [
{
"type": "QPointF",
"x": 29.118425196850335,
"y": 364.7175599168278
},
{
"type": "QPointF",
"x": 29.94307799754262,
"y": 261.30591867833493
},
{
"type": "QPointF",
"x": 38.28034110598727,
"y": 236.36142309988847
},
{
"type": "QPointF",
"x": 50.42641664350457,
"y": 204.9485223442931
},
{
"type": "QPointF",
"x": 64.43563647205879,
"y": 174.64377853357186
},
{
"type": "QPointF",
"x": 72.39329255299187,
"y": 160.31352382108352
},
{
"type": "QPointF",
"x": 79.82602319478619,
"y": 147.85065060505283
},
{
"type": "QPointF",
"x": 96.46605143628082,
"y": 123.31490115126226
},
{
"type": "QPointF",
"x": 115.23721379286627,
"y": 99.21392493718594
},
{
"type": "QPointF",
"x": 135.60152983653606,
"y": 76.44420895441118
},
{
"type": "QPointF",
"x": 157.08834979360478,
"y": 55.86594146623459
},
{
"type": "QPointF",
"x": 173.83199157479038,
"y": 42.413843959149226
},
{
"type": "QPointF",
"x": 185.3936560720791,
"y": 34.361689123435625
},
{
"type": "QPointF",
"x": 197.10339835582204,
"y": 27.375017054145104
},
{
"type": "QPointF",
"x": 209.11808343103752,
"y": 21.526699207665782
},
{
"type": "QPointF",
"x": 221.5299864367533,
"y": 17.011747265524747
},
{
"type": "QPointF",
"x": 235.2394443108585,
"y": 13.944500862877867
},
{
"type": "QPointF",
"x": 249.9574060828423,
"y": 13.944500862877867
},
{
"type": "QPointF",
"x": 263.6668639569475,
"y": 17.01174726552474
},
{
"type": "QPointF",
"x": 276.07876696266345,
"y": 21.526699207665832
},
{
"type": "QPointF",
"x": 288.09345203787865,
"y": 27.37501705414501
},
{
"type": "QPointF",
"x": 299.8031943216219,
"y": 34.3616891234357
},
{
"type": "QPointF",
"x": 311.3648588189105,
"y": 42.4138439591493
},
{
"type": "QPointF",
"x": 328.1085006000962,
"y": 55.865941466234666
},
{
"type": "QPointF",
"x": 349.5953205571646,
"y": 76.44420895441102
},
{
"type": "QPointF",
"x": 369.95963660083424,
"y": 99.21392493718575
},
{
"type": "QPointF",
"x": 388.73079895742006,
"y": 123.31490115126236
},
{
"type": "QPointF",
"x": 405.37082719891447,
"y": 147.85065060505255
},
{
"type": "QPointF",
"x": 412.8035578407087,
"y": 160.3135238210832
},
{
"type": "QPointF",
"x": 420.761213921642,
"y": 174.64377853357206
},
{
"type": "QPointF",
"x": 434.7704337501962,
"y": 204.9485223442931
},
{
"type": "QPointF",
"x": 446.9165092877135,
"y": 236.36142309988838
},
{
"type": "QPointF",
"x": 455.1968503937008,
"y": 261.1356121136812
},
{
"type": "QPointF",
"x": 463.47719149968816,
"y": 236.3614230998884
},
{
"type": "QPointF",
"x": 475.6232670372052,
"y": 204.94852234429345
},
{
"type": "QPointF",
"x": 489.4457291590669,
"y": 175.04777279772534
},
{
"type": "QPointF",
"x": 497.41525548705096,
"y": 159.48566964361396
},
{
"type": "QPointF",
"x": 505.91960858174565,
"y": 147.49378076706674
},
{
"type": "QPointF",
"x": 521.5037972468683,
"y": 123.51918129653623
},
{
"type": "QPointF",
"x": 540.4340641865671,
"y": 99.21392493718614
},
{
"type": "QPointF",
"x": 560.7983802302371,
"y": 76.44420895441104
},
{
"type": "QPointF",
"x": 582.2852001873056,
"y": 55.86594146623453
},
{
"type": "QPointF",
"x": 599.0288419684916,
"y": 42.413843959148835
},
{
"type": "QPointF",
"x": 610.5905064657796,
"y": 34.36168912343576
},
{
"type": "QPointF",
"x": 622.3002487495228,
"y": 27.3750170541451
},
{
"type": "QPointF",
"x": 634.3149338247384,
"y": 21.526699207665764
},
{
"type": "QPointF",
"x": 646.7268368304541,
"y": 17.011747265524743
},
{
"type": "QPointF",
"x": 660.4362947045594,
"y": 13.94450086287786
},
{
"type": "QPointF",
"x": 675.1542564765431,
"y": 13.94450086287786
},
{
"type": "QPointF",
"x": 688.8637143506484,
"y": 17.011747265524743
},
{
"type": "QPointF",
"x": 701.275617356364,
"y": 21.526699207665743
},
{
"type": "QPointF",
"x": 713.2903024315797,
"y": 27.375017054145108
},
{
"type": "QPointF",
"x": 725.0000447153227,
"y": 34.36168912343571
},
{
"type": "QPointF",
"x": 736.5617092126108,
"y": 42.413843959148785
},
{
"type": "QPointF",
"x": 753.305350993797,
"y": 55.86594146623462
},
{
"type": "QPointF",
"x": 774.7921709508654,
"y": 76.44420895441098
},
{
"type": "QPointF",
"x": 795.156486994535,
"y": 99.21392493718571
},
{
"type": "QPointF",
"x": 813.9276493511209,
"y": 123.31490115126243
},
{
"type": "QPointF",
"x": 830.5676775926153,
"y": 147.85065060505264
},
{
"type": "QPointF",
"x": 838.0004082344087,
"y": 160.31352382108162
},
{
"type": "QPointF",
"x": 845.9580643153425,
"y": 174.64377853357124
},
{
"type": "QPointF",
"x": 859.9672841438971,
"y": 204.94852234429356
},
{
"type": "QPointF",
"x": 872.1133596814137,
"y": 236.36142309988713
},
{
"type": "QPointF",
"x": 882.4324649928317,
"y": 267.23544896017984
},
{
"type": "QPointF",
"x": 894.685954055627,
"y": 309.3720920900203
},
{
"type": "QPointF",
"x": 904.3306932614294,
"y": 348.05861566144995
},
{
"type": "QPointF",
"x": 906.8503937007875,
"y": 357.94025014347284
},
{
"type": "QPointF",
"x": 906.8503937007872,
"y": 1162.5195590551182
},
{
"type": "QPointF",
"x": 29.999999999999805,
"y": 1162.5195590551182
},
{
"type": "QPointF",
"x": 29.11842519685024,
"y": 1136.0628661417325
},
{
"type": "QPointF",
"x": 29.118425196850335,
"y": 364.7175599168278
}
]
}

View file

@ -161,5 +161,7 @@
<file>custom_seam_allwance_exclude_p1/output.json</file>
<file>custom_seam_allwance_exclude_p2/input.json</file>
<file>custom_seam_allwance_exclude_p2/output.json</file>
<file>hat/input.json</file>
<file>hat/output.json</file>
</qresource>
</RCC>

View file

@ -1140,6 +1140,12 @@ void TST_VAbstractPiece::EquidistantAngleType_data()
QStringLiteral("://smart_pattern_#133/input.json"),
QStringLiteral("://smart_pattern_#133/output.json"),
26.45669291338583 /*seam allowance width*/);
// See file valentina_private_collection/bugs/hat/hat.val
ASSERT_TEST_CASE("hat",
QStringLiteral("://hat/input.json"),
QStringLiteral("://hat/output.json"),
26.45669291338583 /*seam allowance width*/);
}
//---------------------------------------------------------------------------------------------------------------------