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:
PaddleStroke
2025-10-20 17:45:18 +02:00
committed by GitHub
parent 5ba4feac59
commit 06c46bd352
4 changed files with 56 additions and 104 deletions

View File

@@ -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

View File

@@ -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);