0031587: Modeling Data - add BRepTools::RemoveInternals() removing internal sub-shape...
[occt.git] / src / BRepTools / BRepTools.hxx
index b5113a9..cbc23eb 100644 (file)
@@ -150,19 +150,32 @@ public:
   //! edge on the face.
   Standard_EXPORT static void UpdateFaceUVPoints (const TopoDS_Face& theF);
   
-  //! Removes all the triangulations of the faces of <S>
-  //! and removes all polygons on triangulations of the
-  //! edges.
+  //! Removes all cashed polygonal representation of the shape,
+  //! i.e. the triangulations of the faces of <S> and polygons on
+  //! triangulations and polygons 3d of the edges.
+  //! In case polygonal representation is the only available representation
+  //! for the shape (shape does not have geometry) it is not removed.
   Standard_EXPORT static void Clean (const TopoDS_Shape& S);
   
+  //! Removes geometry (curves and surfaces) from all edges and faces of the shape
+  Standard_EXPORT static void CleanGeometry(const TopoDS_Shape& theShape);
+
   //! Removes all the pcurves of the edges of <S> that
   //! refer to surfaces not belonging to any face of <S>
   Standard_EXPORT static void RemoveUnusedPCurves (const TopoDS_Shape& S);
   
-  //! verifies that each face from the shape <S> has got
-  //! a triangulation  with a  deflection <= deflec  and
-  //! the edges a discretisation on  this triangulation.
-  Standard_EXPORT static Standard_Boolean Triangulation (const TopoDS_Shape& S, const Standard_Real deflec);
+  //! Verifies that each Face from the shape has got a triangulation with a deflection smaller or equal to specified one
+  //! and the Edges a discretization on this triangulation.
+  //! @param theShape   [in] shape to verify
+  //! @param theLinDefl [in] maximum allowed linear deflection
+  //! @param theToCheckFreeEdges [in] if TRUE, then free Edges are required to have 3D polygon
+  //! @return FALSE if input Shape contains Faces without triangulation,
+  //!               or that triangulation has worse (greater) deflection than specified one,
+  //!               or Edges in Shape lack polygons on triangulation
+  //!               or free Edges in Shape lack 3D polygons
+  Standard_EXPORT static Standard_Boolean Triangulation (const TopoDS_Shape& theShape,
+                                                         const Standard_Real theLinDefl,
+                                                         const Standard_Boolean theToCheckFreeEdges = Standard_False);
   
   //! Returns  True if  the    distance between the  two
   //! vertices is lower than their tolerance.
@@ -220,6 +233,20 @@ public:
                                                         const Standard_Real theF,
                                                         const Standard_Real theL);
 
+  //! returns the cumul  of the orientation  of <Edge>
+  //! and thc containing wire in <Face>
+  Standard_EXPORT static TopAbs_Orientation OriEdgeInFace(const TopoDS_Edge& theEdge, 
+                                                          const TopoDS_Face& theFace);
+
+  //! Removes internal sub-shapes from the shape.
+  //! The check on internal status is based on orientation of sub-shapes,
+  //! classification is not performed.
+  //! Before removal of internal sub-shapes the algorithm checks if such
+  //! removal is not going to break topological connectivity between sub-shapes.
+  //! The flag <theForce> if set to true disables the connectivity check and clears
+  //! the given shape from all sub-shapes with internal orientation.
+  Standard_EXPORT static void RemoveInternals (TopoDS_Shape& theS,
+                                               const Standard_Boolean theForce = Standard_False);
 
 
 protected: