Horrible hack to work around bug in OCCT7.7.2

This commit is contained in:
bgbsww
2024-08-17 18:13:13 -04:00
committed by Yorik van Havre
parent 4981dbbe2c
commit 60640fa441

View File

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