diff --git a/src/Mod/PartDesign/App/FeatureHelix.cpp b/src/Mod/PartDesign/App/FeatureHelix.cpp index 85144d2324..db2d3b673a 100644 --- a/src/Mod/PartDesign/App/FeatureHelix.cpp +++ b/src/Mod/PartDesign/App/FeatureHelix.cpp @@ -377,7 +377,8 @@ TopoDS_Shape Helix::generateHelixPath(double breakAtTurn) bool turned = axisOffset < 0; // since the factor does not only change the radius but also the path position, we must shift its offset back // using the square of the factor - double startOffset = 10000.0 * std::fabs(baseVector * axisVector); + double noAngle = angle == 0. ? 1. : 0.; // alternative to the legacy use of an auxiliary path + double startOffset = 10000.0 * std::fabs(noAngle * (profileCenter * axisVector) - baseVector * axisVector); if (radius < Precision::Confusion()) { // in this case ensure that axis is not in the sketch plane diff --git a/src/Mod/PartDesign/PartDesignTests/TestTopologicalNamingProblem.py b/src/Mod/PartDesign/PartDesignTests/TestTopologicalNamingProblem.py index 8705e07290..c1a0f34328 100644 --- a/src/Mod/PartDesign/PartDesignTests/TestTopologicalNamingProblem.py +++ b/src/Mod/PartDesign/PartDesignTests/TestTopologicalNamingProblem.py @@ -914,6 +914,7 @@ class TestTopologicalNamingProblem(unittest.TestCase): helix = self.Doc.addObject("PartDesign::SubtractiveHelix", "SubHelix") helix.Profile = sketch helix.ReferenceAxis = (self.Doc.getObject("Sketch"), ["V_Axis"]) + helix.Reversed = True body.addObject(sketch) body.addObject(helix) self.Doc.recompute()