Incorrect work with curves. Closes #170
This commit is contained in:
parent
e013ce234a
commit
8b0b5c89aa
|
@ -3,6 +3,7 @@
|
||||||
- Fix issue with Custom template.
|
- Fix issue with Custom template.
|
||||||
- Fix issue with tile font size.
|
- Fix issue with tile font size.
|
||||||
- [smart-pattern/valentina#171] System identifies two of the same curve.
|
- [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
|
# Valentina 0.7.50 February 14, 2022
|
||||||
- Fix regression. Minimal seam allowance width is less than the point accuracy values.
|
- Fix regression. Minimal seam allowance width is less than the point accuracy values.
|
||||||
|
|
|
@ -204,7 +204,8 @@ VSplineData::~VSplineData()
|
||||||
qreal VSplineData::GetL(const QPointF &p1, const QPointF &p4, qreal kCurve)
|
qreal VSplineData::GetL(const QPointF &p1, const QPointF &p4, qreal kCurve)
|
||||||
{
|
{
|
||||||
static const qreal angle = 90;
|
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 );
|
return kCurve * radius * 4 / 3 * qTan( angle * M_PI_4 / 180.0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -207,11 +207,6 @@ VSplinePath::~VSplinePath()
|
||||||
*/
|
*/
|
||||||
void VSplinePath::append(const VSplinePoint &point)
|
void VSplinePath::append(const VSplinePoint &point)
|
||||||
{
|
{
|
||||||
if (d->path.size() > 0 && static_cast<QPointF>(ConstLast(d->path).P()) == static_cast<QPointF>(point.P())) //-V807
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
d->path.append(point);
|
d->path.append(point);
|
||||||
CreateName();
|
CreateName();
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,6 +234,7 @@ void VToolEndLine::SetVisualization()
|
||||||
visual->SetAngle(VAbstractApplication::VApp()->TrVars()
|
visual->SetAngle(VAbstractApplication::VApp()->TrVars()
|
||||||
->FormulaToUser(formulaAngle, VAbstractApplication::VApp()->Settings()->GetOsSeparator()));
|
->FormulaToUser(formulaAngle, VAbstractApplication::VApp()->Settings()->GetOsSeparator()));
|
||||||
visual->setLineStyle(LineStyleToPenStyle(m_lineType));
|
visual->setLineStyle(LineStyleToPenStyle(m_lineType));
|
||||||
|
visual->SetMode(Mode::Show);
|
||||||
visual->RefreshGeometry();
|
visual->RefreshGeometry();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,9 +75,11 @@ VToolLinePoint::VToolLinePoint(VAbstractPattern *doc, VContainer *data, const qu
|
||||||
Q_ASSERT_X(basePointId != 0, Q_FUNC_INFO, "basePointId == 0"); //-V654 //-V712
|
Q_ASSERT_X(basePointId != 0, Q_FUNC_INFO, "basePointId == 0"); //-V654 //-V712
|
||||||
QPointF point1 = static_cast<QPointF>(*data->GeometricObject<VPointF>(basePointId));
|
QPointF point1 = static_cast<QPointF>(*data->GeometricObject<VPointF>(basePointId));
|
||||||
QPointF point2 = static_cast<QPointF>(*data->GeometricObject<VPointF>(id));
|
QPointF point2 = static_cast<QPointF>(*data->GeometricObject<VPointF>(id));
|
||||||
mainLine = new VScaledLine(QLineF(point1 - point2, QPointF()), this);
|
QLineF line(point1 - point2, QPointF());
|
||||||
|
mainLine = new VScaledLine(line, this);
|
||||||
mainLine->SetBoldLine(false);
|
mainLine->SetBoldLine(false);
|
||||||
mainLine->setFlag(QGraphicsItem::ItemStacksBehindParent, true);
|
mainLine->setFlag(QGraphicsItem::ItemStacksBehindParent, true);
|
||||||
|
mainLine->setVisible(not line.isNull());
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -107,7 +109,9 @@ void VToolLinePoint::RefreshGeometry()
|
||||||
VToolSinglePoint::RefreshPointGeometry(*VDrawTool::data.GeometricObject<VPointF>(m_id));
|
VToolSinglePoint::RefreshPointGeometry(*VDrawTool::data.GeometricObject<VPointF>(m_id));
|
||||||
QPointF point = static_cast<QPointF>(*VDrawTool::data.GeometricObject<VPointF>(m_id));
|
QPointF point = static_cast<QPointF>(*VDrawTool::data.GeometricObject<VPointF>(m_id));
|
||||||
QPointF basePoint = static_cast<QPointF>(*VDrawTool::data.GeometricObject<VPointF>(basePointId));
|
QPointF basePoint = static_cast<QPointF>(*VDrawTool::data.GeometricObject<VPointF>(basePointId));
|
||||||
mainLine->setLine(QLineF(basePoint - point, QPointF()));
|
QLineF line(basePoint - point, QPointF());
|
||||||
|
mainLine->setLine(line);
|
||||||
|
mainLine->setVisible(not line.isNull());
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -62,6 +62,8 @@ void VisToolEndLine::RefreshGeometry()
|
||||||
const QSharedPointer<VPointF> first = Visualization::data->GeometricObject<VPointF>(object1Id);
|
const QSharedPointer<VPointF> first = Visualization::data->GeometricObject<VPointF>(object1Id);
|
||||||
QLineF line;
|
QLineF line;
|
||||||
if (qFuzzyIsNull(length))
|
if (qFuzzyIsNull(length))
|
||||||
|
{
|
||||||
|
if (mode == Mode::Creation)
|
||||||
{
|
{
|
||||||
if (QGuiApplication::keyboardModifiers() == Qt::ShiftModifier)
|
if (QGuiApplication::keyboardModifiers() == Qt::ShiftModifier)
|
||||||
{
|
{
|
||||||
|
@ -74,6 +76,11 @@ void VisToolEndLine::RefreshGeometry()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
DrawPoint(point, static_cast<QPointF>(*first), mainColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
line = VGObject::BuildLine(static_cast<QPointF>(*first), length, angle);
|
line = VGObject::BuildLine(static_cast<QPointF>(*first), length, angle);
|
||||||
DrawPoint(point, line.p2(), mainColor);
|
DrawPoint(point, line.p2(), mainColor);
|
||||||
|
|
|
@ -251,15 +251,13 @@ void Visualization::DrawLine(VScaledLine *lineItem, const QLineF &line, const QC
|
||||||
|
|
||||||
QPen visPen = lineItem->pen();
|
QPen visPen = lineItem->pen();
|
||||||
visPen.setColor(color);
|
visPen.setColor(color);
|
||||||
visPen.setStyle(style);
|
visPen.setStyle(not line.isNull() ? style : Qt::NoPen);
|
||||||
|
|
||||||
lineItem->setPen(visPen);
|
lineItem->setPen(visPen);
|
||||||
if (not line.isNull())
|
if (not line.isNull())
|
||||||
{
|
{
|
||||||
lineItem->setLine(line);
|
lineItem->setLine(line);
|
||||||
}
|
}
|
||||||
|
|
||||||
lineItem->setVisible(not line.isNull());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue
Block a user