File indexing completed on 2026-10-01 08:59:55
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #ifndef _BinTools_ShapeSet_HeaderFile
0017 #define _BinTools_ShapeSet_HeaderFile
0018
0019 #include <BinTools_ShapeSetBase.hxx>
0020
0021 #include <TopTools_ShapeMapHasher.hxx>
0022 #include <NCollection_IndexedMap.hxx>
0023 #include <BinTools_LocationSet.hxx>
0024 #include <BRep_Builder.hxx>
0025 #include <BinTools_SurfaceSet.hxx>
0026 #include <BinTools_CurveSet.hxx>
0027 #include <BinTools_Curve2dSet.hxx>
0028 #include <Standard_Transient.hxx>
0029 #include <Standard_OStream.hxx>
0030 #include <Standard_IStream.hxx>
0031
0032
0033 class BinTools_ShapeSet : public BinTools_ShapeSetBase
0034 {
0035 public:
0036 DEFINE_STANDARD_ALLOC
0037
0038
0039
0040 Standard_EXPORT BinTools_ShapeSet();
0041
0042 Standard_EXPORT ~BinTools_ShapeSet() override;
0043
0044
0045 Standard_EXPORT void Clear() override;
0046
0047
0048
0049 Standard_EXPORT int Add(const TopoDS_Shape& S);
0050
0051
0052 Standard_EXPORT const TopoDS_Shape& Shape(const int I);
0053
0054
0055 Standard_EXPORT int Index(const TopoDS_Shape& S) const;
0056
0057 Standard_EXPORT const BinTools_LocationSet& Locations() const;
0058
0059 Standard_EXPORT BinTools_LocationSet& ChangeLocations();
0060
0061
0062 Standard_EXPORT int NbShapes() const;
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076 Standard_EXPORT void Write(
0077 Standard_OStream& OS,
0078 const Message_ProgressRange& theRange = Message_ProgressRange()) override;
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092 Standard_EXPORT void Read(
0093 Standard_IStream& IS,
0094 const Message_ProgressRange& theRange = Message_ProgressRange()) override;
0095
0096
0097
0098
0099 Standard_EXPORT void Write(const TopoDS_Shape& S, Standard_OStream& OS) override;
0100
0101
0102
0103 Standard_EXPORT virtual void WriteGeometry(
0104 Standard_OStream& OS,
0105 const Message_ProgressRange& theRange = Message_ProgressRange()) const;
0106
0107
0108 Standard_EXPORT virtual void ReadGeometry(
0109 Standard_IStream& IS,
0110 const Message_ProgressRange& theRange = Message_ProgressRange());
0111
0112
0113 Standard_EXPORT virtual void ReadFlagsAndSubs(TopoDS_Shape& S,
0114 const TopAbs_ShapeEnum T,
0115 Standard_IStream& IS,
0116 const int NbShapes);
0117
0118
0119
0120 Standard_EXPORT virtual void ReadSubs(TopoDS_Shape& S, Standard_IStream& IS, const int NbShapes);
0121
0122
0123 Standard_EXPORT void Read(Standard_IStream& , TopoDS_Shape& ) override {
0124 };
0125
0126
0127
0128 Standard_EXPORT virtual void WriteShape(const TopoDS_Shape& S, Standard_OStream& OS) const;
0129
0130
0131 Standard_EXPORT virtual void ReadShape(const TopAbs_ShapeEnum T,
0132 Standard_IStream& IS,
0133 TopoDS_Shape& S);
0134
0135
0136 Standard_EXPORT virtual void AddShape(const TopoDS_Shape& S);
0137
0138
0139 Standard_EXPORT virtual void AddShapes(TopoDS_Shape& S1, const TopoDS_Shape& S2);
0140
0141
0142
0143 Standard_EXPORT void ReadPolygon3D(
0144 Standard_IStream& IS,
0145 const Message_ProgressRange& theRange = Message_ProgressRange());
0146
0147
0148
0149
0150 Standard_EXPORT void WritePolygon3D(
0151 Standard_OStream& OS,
0152 const Message_ProgressRange& theRange = Message_ProgressRange()) const;
0153
0154
0155
0156 Standard_EXPORT void ReadTriangulation(
0157 Standard_IStream& IS,
0158 const Message_ProgressRange& theRange = Message_ProgressRange());
0159
0160
0161
0162
0163 Standard_EXPORT void WriteTriangulation(
0164 Standard_OStream& OS,
0165 const Message_ProgressRange& theRange = Message_ProgressRange()) const;
0166
0167
0168
0169 Standard_EXPORT void ReadPolygonOnTriangulation(
0170 Standard_IStream& IS,
0171 const Message_ProgressRange& theRange = Message_ProgressRange());
0172
0173
0174
0175
0176 Standard_EXPORT void WritePolygonOnTriangulation(
0177 Standard_OStream& OS,
0178 const Message_ProgressRange& theRange = Message_ProgressRange()) const;
0179
0180 private:
0181 NCollection_IndexedMap<TopoDS_Shape, TopTools_ShapeMapHasher>
0182 myShapes;
0183 BinTools_LocationSet myLocations;
0184 BRep_Builder myBuilder;
0185 BinTools_SurfaceSet mySurfaces;
0186 BinTools_CurveSet myCurves;
0187 BinTools_Curve2dSet myCurves2d;
0188 NCollection_IndexedMap<occ::handle<Poly_Polygon2D>> myPolygons2D;
0189 NCollection_IndexedMap<occ::handle<Poly_Polygon3D>> myPolygons3D;
0190 NCollection_IndexedDataMap<occ::handle<Poly_Triangulation>,
0191
0192 bool> myTriangulations;
0193
0194
0195 NCollection_IndexedMap<occ::handle<Poly_PolygonOnTriangulation>> myNodes;
0196 };
0197
0198 #endif