// Created on: 1993-07-19 // Created by: Remi LEQUETTE // 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 _BRepTools_ShapeSet_HeaderFile #define _BRepTools_ShapeSet_HeaderFile #include #include #include #include #include #include #include #include #include #include #include #include #include class BRep_Builder; class TopoDS_Shape; //! Contains a Shape and all its subshapes, locations //! and geometries. //! //! The topology is inherited from TopTools. class BRepTools_ShapeSet : public TopTools_ShapeSet { public: DEFINE_STANDARD_ALLOC //! Builds an empty ShapeSet. //! Parameter is added for XML Persistence Standard_EXPORT BRepTools_ShapeSet (const Standard_Boolean isWithTriangles = Standard_True); //! Builds an empty ShapeSet. //! Parameter is added for XML Persistence Standard_EXPORT BRepTools_ShapeSet (const BRep_Builder& B, const Standard_Boolean isWithTriangles = Standard_True); //! Clears the content of the set. Standard_EXPORT virtual void Clear() Standard_OVERRIDE; //! Stores the goemetry of . Standard_EXPORT virtual void AddGeometry (const TopoDS_Shape& S) Standard_OVERRIDE; //! Dumps the geometry of me on the stream . Standard_EXPORT virtual void DumpGeometry (Standard_OStream& OS) const Standard_OVERRIDE; //! Writes the geometry of me on the stream in a //! format that can be read back by Read. Standard_EXPORT virtual void WriteGeometry (Standard_OStream& OS, const Message_ProgressRange& theProgress = Message_ProgressRange()) Standard_OVERRIDE; //! Reads the geometry of me from the stream . Standard_EXPORT virtual void ReadGeometry (Standard_IStream& IS, const Message_ProgressRange& theProgress = Message_ProgressRange()) Standard_OVERRIDE; //! Dumps the geometry of on the stream . Standard_EXPORT virtual void DumpGeometry (const TopoDS_Shape& S, Standard_OStream& OS) const Standard_OVERRIDE; //! Writes the geometry of on the stream in a //! format that can be read back by Read. Standard_EXPORT virtual void WriteGeometry (const TopoDS_Shape& S, Standard_OStream& OS) const Standard_OVERRIDE; //! Reads the geometry of a shape of type from the //! stream and returns it in . Standard_EXPORT virtual void ReadGeometry (const TopAbs_ShapeEnum T, Standard_IStream& IS, TopoDS_Shape& S) Standard_OVERRIDE; //! Inserts the shape in the shape . This //! method must be redefined to use the correct //! builder. Standard_EXPORT virtual void AddShapes (TopoDS_Shape& S1, const TopoDS_Shape& S2) Standard_OVERRIDE; Standard_EXPORT virtual void Check (const TopAbs_ShapeEnum T, TopoDS_Shape& S) Standard_OVERRIDE; //! Reads the 3d polygons of me //! from the stream . Standard_EXPORT void ReadPolygon3D (Standard_IStream& IS, const Message_ProgressRange& theProgress = Message_ProgressRange()); //! Writes the 3d polygons //! on the stream in a format that can //! be read back by Read. Standard_EXPORT void WritePolygon3D (Standard_OStream& OS, const Standard_Boolean Compact = Standard_True, const Message_ProgressRange& theProgress = Message_ProgressRange()) const; //! Dumps the 3d polygons //! on the stream . Standard_EXPORT void DumpPolygon3D (Standard_OStream& OS) const; //! Reads the triangulation of me //! from the stream . Standard_EXPORT void ReadTriangulation (Standard_IStream& IS, const Message_ProgressRange& theProgress = Message_ProgressRange()); //! Writes the triangulation //! on the stream in a format that can //! be read back by Read. Standard_EXPORT void WriteTriangulation (Standard_OStream& OS, const Standard_Boolean Compact = Standard_True, const Message_ProgressRange& theProgress = Message_ProgressRange()) const; //! Dumps the triangulation //! on the stream . Standard_EXPORT void DumpTriangulation (Standard_OStream& OS) const; //! Reads the polygons on triangulation of me //! from the stream . Standard_EXPORT void ReadPolygonOnTriangulation (Standard_IStream& IS, const Message_ProgressRange& theProgress = Message_ProgressRange()); //! Writes the polygons on triangulation //! on the stream in a format that can //! be read back by Read. Standard_EXPORT void WritePolygonOnTriangulation (Standard_OStream& OS, const Standard_Boolean Compact = Standard_True, const Message_ProgressRange& theProgress = Message_ProgressRange()) const; //! Dumps the polygons on triangulation //! on the stream . Standard_EXPORT void DumpPolygonOnTriangulation (Standard_OStream& OS) const; protected: private: BRep_Builder myBuilder; GeomTools_SurfaceSet mySurfaces; GeomTools_CurveSet myCurves; GeomTools_Curve2dSet myCurves2d; TColStd_IndexedMapOfTransient myPolygons2D; TColStd_IndexedMapOfTransient myPolygons3D; TColStd_IndexedMapOfTransient myTriangulations; TColStd_IndexedMapOfTransient myNodes; Standard_Boolean myWithTriangles; }; #endif // _BRepTools_ShapeSet_HeaderFile