]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
0021546: EDF 2129 GEOM: Different behavior btw circle and exploded base edge of a...
authoreap <eap@opencascade.com>
Wed, 6 Jun 2012 13:00:33 +0000 (13:00 +0000)
committereap <eap@opencascade.com>
Wed, 6 Jun 2012 13:00:33 +0000 (13:00 +0000)
    the base face must be planar for BRepFeat_MakeDPrism

src/GEOMImpl/GEOMImpl_PrismDriver.cxx

index 5a21f3b0696a28f86356732651fa5064c18caab5..87b18275d80f0f610ff203fd5ef1200aa91ebd18 100644 (file)
@@ -450,10 +450,11 @@ TopoDS_Shape GEOMImpl_PrismDriver::MakeDraftPrism ( const TopoDS_Shape& theInitS
     if (!aWire.Closed())
       Standard_ConstructionError::Raise("The input profile is not closed");
     
-    // Construction of the face if the wire hasn't any support face
-    TopoDS_Face aFaceBase = BRepBuilderAPI_MakeFace(aWire);
+    // Construction of the face if the wire hasn't any support face;
+    // the face must be planar for BRepFeat_MakeDPrism
+    TopoDS_Face aFaceBase = BRepBuilderAPI_MakeFace(aWire, /*OnlyPlane=*/true);
 
-    if(!theSupport.IsNull() && theSupport.ShapeType() == TopAbs_FACE)      // If the wire has a support
+    if(!theSupport.IsNull() && theSupport.ShapeType() == TopAbs_FACE) // If the wire has a support
     {
       Handle(Geom_Surface) aSurf = BRep_Tool::Surface(TopoDS::Face(theSupport));
       TopoDS_Face aTempFace = BRepBuilderAPI_MakeFace(aSurf, aWire);
@@ -481,8 +482,8 @@ TopoDS_Shape GEOMImpl_PrismDriver::MakeDraftPrism ( const TopoDS_Shape& theInitS
       aHeight  = -theHeight;
     }
     
-    BRepFeat_MakeDPrism aPrism(theInitShape, aFaceBase, TopoDS_Face(),
-                              anAngle*M_PI/180., isProtrusion, Standard_True); 
+    BRepFeat_MakeDPrism aPrism(theInitShape, aFaceBase, aFaceBase,
+                               anAngle*M_PI/180., isProtrusion, Standard_True); 
     
     aPrism.Perform(aHeight);
     aPrism.Check();          // Raises NotDone if done is false