0031587: Modeling Data - add BRepTools::RemoveInternals() removing internal sub-shape...
[occt.git] / src / BRepTools / BRepTools.hxx
index cc49cc1..cbc23eb 100644 (file)
@@ -73,10 +73,8 @@ class Geom_Surface;
 //! *  Update : Methods  to call when   a topology has
 //! been created to compute all missing data.
 //!
-//! * UpdateFaceUVPoints  :  Method to  update  the UV
-//! points stored   with  the edges   on a face.  This
-//! method ensure that connected  edges  have the same
-//! UV point on their common extremity.
+//! * UpdateFaceUVPoints: Method to update the UV points
+//! stored with the edges on a face.
 //!
 //! * Compare : Method to compare two vertices.
 //!
@@ -147,24 +145,37 @@ public:
   //! Update a shape, call the corect update.
   Standard_EXPORT static void Update (const TopoDS_Shape& S);
   
-  //! For  all the edges  of the face  <F> reset  the UV
-  //! points to  ensure that  connected  faces  have the
-  //! same point at there common extremity.
-  Standard_EXPORT static void UpdateFaceUVPoints (const TopoDS_Face& F);
+  //! For each edge of the face <F> reset the UV points
+  //! to the bounding points of the parametric curve of the
+  //! 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.
@@ -186,6 +197,11 @@ public:
   //! the face <F> before calling BRep_Tool::IsClosed.
   Standard_EXPORT static Standard_Boolean IsReallyClosed (const TopoDS_Edge& E, const TopoDS_Face& F);
   
+  //! Detect closedness of face in U and V directions
+  Standard_EXPORT static void DetectClosedness (const TopoDS_Face& theFace,
+                                                Standard_Boolean&  theUclosed,
+                                                Standard_Boolean&  theVclosed);
+  
   //! Dumps the topological structure and the geometry
   //! of <Sh> on the stream <S>.
   Standard_EXPORT static void Dump (const TopoDS_Shape& Sh, Standard_OStream& S);
@@ -217,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: