diff --git a/src/Mod/PartDesign/App/FeatureHelix.cpp b/src/Mod/PartDesign/App/FeatureHelix.cpp index 11bb0bc2b6..dee2162a93 100644 --- a/src/Mod/PartDesign/App/FeatureHelix.cpp +++ b/src/Mod/PartDesign/App/FeatureHelix.cpp @@ -36,6 +36,7 @@ # include # include # include +# include # include # include # include @@ -259,6 +260,13 @@ App::DocumentObjectExecReturn* Helix::execute() fix.LimitTolerance(result, Precision::Confusion() * size * Tolerance.getValue() ); // significant precision reduction due to helical approximation - needed to allow fusion to succeed + // try to auto-fix possible invalid result + ShapeFix_Solid fixer; + fixer.Init(TopoDS::Solid(result)); + if (fixer.Perform()) { + result = fixer.Solid(); + } + AddSubShape.setValue(result); if (base.isNull()) {