From 60640fa4415548ebfa19c1f929ea2da7e4980fe7 Mon Sep 17 00:00:00 2001 From: bgbsww Date: Sat, 17 Aug 2024 18:13:13 -0400 Subject: [PATCH] Horrible hack to work around bug in OCCT7.7.2 --- src/Mod/Part/App/PrimitiveFeature.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Mod/Part/App/PrimitiveFeature.cpp b/src/Mod/Part/App/PrimitiveFeature.cpp index 773e5da1fe..15c04121c8 100644 --- a/src/Mod/Part/App/PrimitiveFeature.cpp +++ b/src/Mod/Part/App/PrimitiveFeature.cpp @@ -652,6 +652,13 @@ App::DocumentObjectExecReturn *Cone::execute() return new App::DocumentObjectExecReturn("Radius of cone too small"); if (Height.getValue() < Precision::Confusion()) return new App::DocumentObjectExecReturn("Height of cone too small"); + double angle = Angle.getValue(); +#if OCC_VERSION_HEX == 0x070702 + // OCCT 7.7.2 will not model a cone with an angle of exactly 360, so we cheat: + if ( angle == 360.0) { + angle = 359.99; + } +#endif try { TopoDS_Shape ResultShape; if (std::abs(Radius1.getValue() - Radius2.getValue()) < Precision::Confusion()){ @@ -665,7 +672,7 @@ App::DocumentObjectExecReturn *Cone::execute() BRepPrimAPI_MakeCone mkCone(Radius1.getValue(), Radius2.getValue(), Height.getValue(), - Angle.getValue()/180.0f*M_PI); + angle/180.0f*M_PI); ResultShape = mkCone.Shape(); } this->Shape.setValue(ResultShape);