Enable Approximation scale option for Elliptical arc.
This commit is contained in:
parent
1e344d6df0
commit
83e9a4c8f0
|
@ -21,6 +21,7 @@
|
|||
- Fix export tiled pdf on Mac OS.
|
||||
- Improve visualization for tools.
|
||||
- Fix calculating an elliptical arc.
|
||||
- Enable Approximation scale option for Elliptical arc.
|
||||
|
||||
# Valentina 0.7.51 April 18, 2022
|
||||
- Z value change for a layout piece.
|
||||
|
|
|
@ -2668,6 +2668,9 @@ void VToolOptionsPropertyBrowser::ChangeDataToolEllipticalArc(VPE::VProperty *pr
|
|||
case 59: // AttrPenStyle
|
||||
SetPenStyle<VToolEllipticalArc>(property);
|
||||
break;
|
||||
case 60: // AttrAScale
|
||||
SetApproximationScale<VToolEllipticalArc>(property);
|
||||
break;
|
||||
case 61: // AttrNotes
|
||||
SetNotes<VToolEllipticalArc>(property);
|
||||
break;
|
||||
|
@ -3301,6 +3304,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolEllipticalArc(QGraphicsItem *it
|
|||
AddPropertyFormula(tr("Rotation angle:"), i->GetFormulaRotationAngle(), AttrRotationAngle);
|
||||
AddPropertyAlias(i, tr("Alias:"));
|
||||
AddPropertyLineColor(i, tr("Color:"), VAbstractTool::ColorsList(), AttrColor);
|
||||
AddPropertyApproximationScale(tr("Approximation scale:"), i->GetApproximationScale());
|
||||
AddPropertyText(tr("Notes:"), i->GetNotes(), AttrNotes);
|
||||
}
|
||||
|
||||
|
@ -4267,6 +4271,10 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolEllipticalArc()
|
|||
valueCenterPoint.setValue(i->CenterPointName());
|
||||
m_idToProperty[AttrCenter]->setValue(valueCenterPoint);
|
||||
|
||||
QVariant valueApproximationScale;
|
||||
valueApproximationScale.setValue(i->GetApproximationScale());
|
||||
m_idToProperty[AttrAScale]->setValue(valueApproximationScale);
|
||||
|
||||
m_idToProperty[AttrNotes]->setValue(i->GetNotes());
|
||||
|
||||
m_idToProperty[AttrAlias]->setValue(i->GetAliasSuffix());
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
|
||||
namespace
|
||||
{
|
||||
constexpr qreal tolerance = accuracyPointOnLine/32;
|
||||
constexpr qreal tolerance = accuracyPointOnLine/8;
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
auto VLen(fpm::fixed_16_16 x, fpm::fixed_16_16 y) -> fpm::fixed_16_16
|
||||
{
|
||||
|
|
|
@ -374,6 +374,22 @@ void DialogEllipticalArc::SetColor(const QString &value)
|
|||
ChangeCurrentData(ui->comboBoxColor, value);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
qreal DialogEllipticalArc::GetApproximationScale() const
|
||||
{
|
||||
return ui->doubleSpinBoxApproximationScale->value();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogEllipticalArc::SetApproximationScale(qreal value)
|
||||
{
|
||||
ui->doubleSpinBoxApproximationScale->setValue(value);
|
||||
|
||||
auto *path = qobject_cast<VisToolEllipticalArc *>(vis);
|
||||
SCASSERT(path != nullptr)
|
||||
path->SetApproximationScale(value);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief EvalRadiuses calculate value of radiuses
|
||||
|
@ -682,6 +698,7 @@ void DialogEllipticalArc::SaveData()
|
|||
path->SetF1(m_f1);
|
||||
path->SetF2(m_f2);
|
||||
path->SetRotationAngle(m_rotationAngle);
|
||||
path->SetApproximationScale(ui->doubleSpinBoxApproximationScale->value());
|
||||
path->RefreshGeometry();
|
||||
}
|
||||
|
||||
|
|
|
@ -74,6 +74,9 @@ public:
|
|||
auto GetColor() const -> QString;
|
||||
void SetColor(const QString &value);
|
||||
|
||||
auto GetApproximationScale() const -> qreal;
|
||||
void SetApproximationScale(qreal value);
|
||||
|
||||
void SetNotes(const QString ¬es);
|
||||
auto GetNotes() const -> QString;
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>396</width>
|
||||
<height>595</height>
|
||||
<height>633</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
|
@ -1026,16 +1026,39 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="labelAlias">
|
||||
<property name="text">
|
||||
<string>Alias:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<item row="4" column="1">
|
||||
<widget class="QLineEdit" name="lineEditAlias"/>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_13">
|
||||
<property name="text">
|
||||
<string>Approximation scale:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QDoubleSpinBox" name="doubleSpinBoxApproximationScale">
|
||||
<property name="toolTip">
|
||||
<string>Set approximation scale for this curve, 0 - use global value</string>
|
||||
</property>
|
||||
<property name="decimals">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>10.000000000000000</double>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<double>0.100000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
|
|
|
@ -125,6 +125,7 @@ VToolEllipticalArc* VToolEllipticalArc::Create(const QPointer<DialogTool> &dialo
|
|||
initData.data = data;
|
||||
initData.parse = Document::FullParse;
|
||||
initData.typeCreation = Source::FromGui;
|
||||
initData.approximationScale = dialogTool->GetApproximationScale();
|
||||
initData.notes = dialogTool->GetNotes();
|
||||
initData.aliasSuffix = dialogTool->GetAliasSuffix();
|
||||
//initData.approximationScale = dialogTool->GetApproximationScale(); // For future use
|
||||
|
@ -333,6 +334,24 @@ void VToolEllipticalArc::SetFormulaRotationAngle(const VFormula &value)
|
|||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
qreal VToolEllipticalArc::GetApproximationScale() const
|
||||
{
|
||||
QSharedPointer<VEllipticalArc> arc = VAbstractTool::data.GeometricObject<VEllipticalArc>(m_id);
|
||||
SCASSERT(arc.isNull() == false)
|
||||
|
||||
return arc->GetApproximationScale();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolEllipticalArc::SetApproximationScale(qreal value)
|
||||
{
|
||||
QSharedPointer<VGObject> obj = VAbstractTool::data.GetGObject(m_id);
|
||||
QSharedPointer<VEllipticalArc> arc = qSharedPointerDynamicCast<VEllipticalArc>(obj);
|
||||
arc->SetApproximationScale(value);
|
||||
SaveOption(obj);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolEllipticalArc::ShowVisualization(bool show)
|
||||
{
|
||||
|
@ -388,6 +407,7 @@ void VToolEllipticalArc::SaveDialog(QDomElement &domElement, QList<quint32> &old
|
|||
doc->SetAttribute(domElement, AttrRotationAngle, dialogTool->GetRotationAngle());
|
||||
doc->SetAttribute(domElement, AttrColor, dialogTool->GetColor());
|
||||
doc->SetAttribute(domElement, AttrPenStyle, dialogTool->GetPenStyle());
|
||||
doc->SetAttribute(domElement, AttrAScale, dialogTool->GetApproximationScale());
|
||||
doc->SetAttributeOrRemoveIf<QString>(domElement, AttrAlias, dialogTool->GetAliasSuffix(),
|
||||
[](const QString &suffix) noexcept {return suffix.isEmpty();});
|
||||
doc->SetAttributeOrRemoveIf<QString>(domElement, AttrNotes, dialogTool->GetNotes(),
|
||||
|
@ -430,6 +450,7 @@ void VToolEllipticalArc::SetVisualization()
|
|||
visual->SetF2(trVars->FormulaToUser(elArc->GetFormulaF2(), osSeparator));
|
||||
visual->SetRotationAngle(trVars->FormulaToUser(elArc->GetFormulaRotationAngle(), osSeparator));
|
||||
visual->SetLineStyle(LineStyleToPenStyle(elArc->GetPenStyle()));
|
||||
visual->SetApproximationScale(elArc->GetApproximationScale());
|
||||
visual->SetMode(Mode::Show);
|
||||
visual->RefreshGeometry();
|
||||
}
|
||||
|
|
|
@ -94,6 +94,9 @@ public:
|
|||
VFormula GetFormulaRotationAngle() const;
|
||||
void SetFormulaRotationAngle(const VFormula &value);
|
||||
|
||||
qreal GetApproximationScale() const;
|
||||
void SetApproximationScale(qreal value);
|
||||
|
||||
virtual void ShowVisualization(bool show) override;
|
||||
protected slots:
|
||||
virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) override;
|
||||
|
|
|
@ -236,6 +236,7 @@ auto VisToolEllipticalArc::DrawElArc(const VPointF ¢er, qreal radius1, qreal
|
|||
qreal rotationAngle) -> VEllipticalArc
|
||||
{
|
||||
VEllipticalArc elArc(center, radius1, radius2, f1, f2, rotationAngle);
|
||||
elArc.SetApproximationScale(ApproximationScale());
|
||||
DrawPath(this, elArc.GetPath(), elArc.DirectionArrows(), Color(VColor::MainColor), LineStyle(), Qt::RoundCap);
|
||||
|
||||
return elArc;
|
||||
|
|
Loading…
Reference in New Issue
Block a user