diff --git a/ChangeLog.txt b/ChangeLog.txt index e97b8944a..0a2737930 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -3,6 +3,7 @@ - Fix issue with Custom template. - Fix issue with tile font size. - [smart-pattern/valentina#171] System identifies two of the same curve. +- [smart-pattern/valentina#170] Incorrect work with curves. # Valentina 0.7.50 February 14, 2022 - Fix regression. Minimal seam allowance width is less than the point accuracy values. diff --git a/src/libs/vgeometry/vspline_p.h b/src/libs/vgeometry/vspline_p.h index 3c73ffb0e..dee666f75 100644 --- a/src/libs/vgeometry/vspline_p.h +++ b/src/libs/vgeometry/vspline_p.h @@ -204,7 +204,8 @@ VSplineData::~VSplineData() qreal VSplineData::GetL(const QPointF &p1, const QPointF &p4, qreal kCurve) { static const qreal angle = 90; - const qreal radius = QLineF(p1, p4).length()/M_SQRT2; + qreal length = VFuzzyComparePoints(p1, p4) ? accuracyPointOnLine*2 : QLineF(p1, p4).length(); + const qreal radius = length/M_SQRT2; return kCurve * radius * 4 / 3 * qTan( angle * M_PI_4 / 180.0 ); } diff --git a/src/libs/vgeometry/vsplinepath.cpp b/src/libs/vgeometry/vsplinepath.cpp index cbd8a2735..cbc19e7b1 100644 --- a/src/libs/vgeometry/vsplinepath.cpp +++ b/src/libs/vgeometry/vsplinepath.cpp @@ -207,11 +207,6 @@ VSplinePath::~VSplinePath() */ void VSplinePath::append(const VSplinePoint &point) { - if (d->path.size() > 0 && static_cast(ConstLast(d->path).P()) == static_cast(point.P())) //-V807 - { - return; - } - d->path.append(point); CreateName(); } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp index fd3a98030..1193e3b44 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp @@ -234,6 +234,7 @@ void VToolEndLine::SetVisualization() visual->SetAngle(VAbstractApplication::VApp()->TrVars() ->FormulaToUser(formulaAngle, VAbstractApplication::VApp()->Settings()->GetOsSeparator())); visual->setLineStyle(LineStyleToPenStyle(m_lineType)); + visual->SetMode(Mode::Show); visual->RefreshGeometry(); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp index 26ba4d215..6e1440658 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp @@ -75,9 +75,11 @@ VToolLinePoint::VToolLinePoint(VAbstractPattern *doc, VContainer *data, const qu Q_ASSERT_X(basePointId != 0, Q_FUNC_INFO, "basePointId == 0"); //-V654 //-V712 QPointF point1 = static_cast(*data->GeometricObject(basePointId)); QPointF point2 = static_cast(*data->GeometricObject(id)); - mainLine = new VScaledLine(QLineF(point1 - point2, QPointF()), this); + QLineF line(point1 - point2, QPointF()); + mainLine = new VScaledLine(line, this); mainLine->SetBoldLine(false); mainLine->setFlag(QGraphicsItem::ItemStacksBehindParent, true); + mainLine->setVisible(not line.isNull()); } //--------------------------------------------------------------------------------------------------------------------- @@ -107,7 +109,9 @@ void VToolLinePoint::RefreshGeometry() VToolSinglePoint::RefreshPointGeometry(*VDrawTool::data.GeometricObject(m_id)); QPointF point = static_cast(*VDrawTool::data.GeometricObject(m_id)); QPointF basePoint = static_cast(*VDrawTool::data.GeometricObject(basePointId)); - mainLine->setLine(QLineF(basePoint - point, QPointF())); + QLineF line(basePoint - point, QPointF()); + mainLine->setLine(line); + mainLine->setVisible(not line.isNull()); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/visualization/line/vistoolendline.cpp b/src/libs/vtools/visualization/line/vistoolendline.cpp index 959b36ef1..476e028ec 100644 --- a/src/libs/vtools/visualization/line/vistoolendline.cpp +++ b/src/libs/vtools/visualization/line/vistoolendline.cpp @@ -63,14 +63,21 @@ void VisToolEndLine::RefreshGeometry() QLineF line; if (qFuzzyIsNull(length)) { - if (QGuiApplication::keyboardModifiers() == Qt::ShiftModifier) + if (mode == Mode::Creation) { - line = QLineF(static_cast(*first), Visualization::scenePos); - line.setAngle(CorrectAngle(line.angle())); + if (QGuiApplication::keyboardModifiers() == Qt::ShiftModifier) + { + line = QLineF(static_cast(*first), Visualization::scenePos); + line.setAngle(CorrectAngle(line.angle())); + } + else + { + line = QLineF(static_cast(*first), Visualization::scenePos); + } } else { - line = QLineF(static_cast(*first), Visualization::scenePos); + DrawPoint(point, static_cast(*first), mainColor); } } else diff --git a/src/libs/vtools/visualization/visualization.cpp b/src/libs/vtools/visualization/visualization.cpp index ce5ae0c3e..8af0d6fb4 100644 --- a/src/libs/vtools/visualization/visualization.cpp +++ b/src/libs/vtools/visualization/visualization.cpp @@ -251,15 +251,13 @@ void Visualization::DrawLine(VScaledLine *lineItem, const QLineF &line, const QC QPen visPen = lineItem->pen(); visPen.setColor(color); - visPen.setStyle(style); + visPen.setStyle(not line.isNull() ? style : Qt::NoPen); lineItem->setPen(visPen); if (not line.isNull()) { lineItem->setLine(line); } - - lineItem->setVisible(not line.isNull()); } //---------------------------------------------------------------------------------------------------------------------