// Created on: 1993-06-17 // Created by: Jean Yves LEBEY // Copyright (c) 1993-1999 Matra Datavision // Copyright (c) 1999-2014 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // // This library is free software; you can redistribute it and/or modify it under // the terms of the GNU Lesser General Public License version 2.1 as published // by the Free Software Foundation, with special exception defined in the file // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT // distribution for complete text of the license and disclaimer of any warranty. // // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. #ifndef _TopOpeBRepTool_HeaderFile #define _TopOpeBRepTool_HeaderFile #include #include #include #include #include #include #include #include #include #include class TopoDS_Face; class TopoDS_Solid; class TopOpeBRepTool_GeomTool; class TopOpeBRepTool_AncestorsTool; class TopOpeBRepTool_C2DF; class TopOpeBRepTool_SolidClassifier; class TopOpeBRepTool_CurveTool; class TopOpeBRepTool_HBoxTool; class TopOpeBRepTool_BoxSort; class TopOpeBRepTool_ShapeExplorer; class TopOpeBRepTool_ShapeTool; class TopOpeBRepTool_ShapeClassifier; class TopOpeBRepTool_connexity; class TopOpeBRepTool_face; class TopOpeBRepTool_CLASSI; class TopOpeBRepTool_TOOL; class TopOpeBRepTool_CORRISO; class TopOpeBRepTool_REGUW; class TopOpeBRepTool_REGUS; class TopOpeBRepTool_makeTransition; class TopOpeBRepTool_mkTondgE; class TopOpeBRepTool_PurgeInternalEdges; class TopOpeBRepTool_FuseEdges; //! This package provides services used by the TopOpeBRep //! package performing topological operations on the BRep //! data structure. class TopOpeBRepTool { public: DEFINE_STANDARD_ALLOC //! Fuse edges (in a wire) of a shape where we have //! useless vertex. //! In case face is built on UV-non-connexed wires //! (with the two closing edges FORWARD and REVERSED, in //! spite of one only), we find out the faulty edge, add //! the faulty shapes (edge,wire,face) to . //! is a face descendant of . //! (wire) = 1 if wire is wire of //! 0 wire results from 's wire splitted. //! returns false if purge fails Standard_EXPORT static Standard_Boolean PurgeClosingEdges (const TopoDS_Face& F, const TopoDS_Face& FF, const TopTools_DataMapOfShapeInteger& MWisOld, TopTools_IndexedMapOfOrientedShape& MshNOK); Standard_EXPORT static Standard_Boolean PurgeClosingEdges (const TopoDS_Face& F, const TopTools_ListOfShape& LOF, const TopTools_DataMapOfShapeInteger& MWisOld, TopTools_IndexedMapOfOrientedShape& MshNOK); Standard_EXPORT static Standard_Boolean CorrectONUVISO (const TopoDS_Face& F, TopoDS_Face& Fsp); //! Builds up the correct list of faces from , using //! faulty shapes from map . //! is the list of 's descendant faces. //! returns false if building fails Standard_EXPORT static Standard_Boolean MakeFaces (const TopoDS_Face& F, const TopTools_ListOfShape& LOF, const TopTools_IndexedMapOfOrientedShape& MshNOK, TopTools_ListOfShape& LOFF); //! Returns if the face is valid (the UV //! representation of the face is a set of pcurves //! connexed by points with connexity 2). //! Else, splits in order to return a list of valid //! faces. Standard_EXPORT static Standard_Boolean Regularize (const TopoDS_Face& aFace, TopTools_ListOfShape& aListOfFaces, TopTools_DataMapOfShapeListOfShape& ESplits); //! Returns if the face is valid (the UV //! representation of the face is a set of pcurves //! connexed by points with connexity 2). //! Else, splits wires of the face, these are boundaries of the //! new faces to build up; describes (wire, //! splits of wire); describes (edge, edge's splits) Standard_EXPORT static Standard_Boolean RegularizeWires (const TopoDS_Face& aFace, TopTools_DataMapOfShapeListOfShape& OldWiresNewWires, TopTools_DataMapOfShapeListOfShape& ESplits); //! Classify wire's splits of map in order to //! compute , the splits of . Standard_EXPORT static Standard_Boolean RegularizeFace (const TopoDS_Face& aFace, const TopTools_DataMapOfShapeListOfShape& OldWiresnewWires, TopTools_ListOfShape& aListOfFaces); //! Returns if the shell is valid (the solid is a set //! of faces connexed by edges with connexity 2). //! Else, splits faces of the shell; describes //! (face, splits of face). Standard_EXPORT static Standard_Boolean RegularizeShells (const TopoDS_Solid& aSolid, TopTools_DataMapOfShapeListOfShape& OldSheNewShe, TopTools_DataMapOfShapeListOfShape& FSplits); //! Prints as string on stream ; returns . Standard_EXPORT static Standard_OStream& Print (const TopOpeBRepTool_OutCurveType OCT, Standard_OStream& S); protected: private: friend class TopOpeBRepTool_GeomTool; friend class TopOpeBRepTool_AncestorsTool; friend class TopOpeBRepTool_C2DF; friend class TopOpeBRepTool_SolidClassifier; friend class TopOpeBRepTool_CurveTool; friend class TopOpeBRepTool_HBoxTool; friend class TopOpeBRepTool_BoxSort; friend class TopOpeBRepTool_ShapeExplorer; friend class TopOpeBRepTool_ShapeTool; friend class TopOpeBRepTool_ShapeClassifier; friend class TopOpeBRepTool_connexity; friend class TopOpeBRepTool_face; friend class TopOpeBRepTool_CLASSI; friend class TopOpeBRepTool_TOOL; friend class TopOpeBRepTool_CORRISO; friend class TopOpeBRepTool_REGUW; friend class TopOpeBRepTool_REGUS; friend class TopOpeBRepTool_makeTransition; friend class TopOpeBRepTool_mkTondgE; friend class TopOpeBRepTool_PurgeInternalEdges; friend class TopOpeBRepTool_FuseEdges; }; #endif // _TopOpeBRepTool_HeaderFile