Sketcher: Fix issue of reversed arcs input for polar pattern (#24351)
* Sketcher: Fix issue of reversed arcs input for polar pattern * DrawSketchHandlerRotate: remove getRotatedPoint that is no longer needed * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update Geometry.cpp --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
@@ -2231,6 +2231,16 @@ bool GeomConic::isReversed() const
|
||||
return conic->Axis().Direction().Z() < 0;
|
||||
}
|
||||
|
||||
bool GeomConic::reverseIfReversed()
|
||||
{
|
||||
Handle(Geom_Conic) hConic = Handle(Geom_Conic)::DownCast(handle());
|
||||
if (isReversed()) {
|
||||
hConic->Reverse();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
GeomBSplineCurve* GeomConic::toNurbs(double first, double last) const
|
||||
{
|
||||
Handle(Geom_Conic) conic = Handle(Geom_Conic)::DownCast(handle());
|
||||
@@ -2501,6 +2511,18 @@ bool GeomArcOfConic::isReversed() const
|
||||
return conic->Axis().Direction().Z() < 0;
|
||||
}
|
||||
|
||||
bool GeomArcOfConic::reverseIfReversed()
|
||||
{
|
||||
Handle(Geom_TrimmedCurve) tCurve = Handle(Geom_TrimmedCurve)::DownCast(handle());
|
||||
if (tCurve) {
|
||||
if (isReversed()) {
|
||||
tCurve->Reverse();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief GeomArcOfConic::getAngleXU
|
||||
* \return The angle between ellipse's major axis (in direction to focus1) and
|
||||
@@ -7075,3 +7097,4 @@ std::unique_ptr<GeomCurve> makeFromCurveAdaptor(const Adaptor3d_Curve& adapt, bo
|
||||
|
||||
} // namespace Part
|
||||
|
||||
|
||||
|
||||
@@ -129,6 +129,11 @@ public:
|
||||
void transform(const Base::Matrix4D& mat) const;
|
||||
void translate(const Base::Vector3d& vec) const;
|
||||
|
||||
virtual bool reverseIfReversed()
|
||||
{
|
||||
return false;
|
||||
};
|
||||
|
||||
protected:
|
||||
/// create a new tag for the geometry object
|
||||
void createNewTag();
|
||||
@@ -420,6 +425,7 @@ public:
|
||||
double getAngleXU() const;
|
||||
void setAngleXU(double angle);
|
||||
bool isReversed() const;
|
||||
bool reverseIfReversed() override;
|
||||
|
||||
Base::Vector3d getAxisDirection() const;
|
||||
|
||||
@@ -505,6 +511,7 @@ public:
|
||||
inline void setRange(double u, double v) override { setRange(u,v,false);}
|
||||
|
||||
bool isReversed() const;
|
||||
bool reverseIfReversed() override;
|
||||
double getAngleXU() const;
|
||||
void setAngleXU(double angle);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user