File indexing completed on 2026-10-02 09:13:46
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #ifndef _ShapePersistent_BRep_HeaderFile
0015 #define _ShapePersistent_BRep_HeaderFile
0016
0017 #include <ShapePersistent_TopoDS.hxx>
0018 #include <ShapePersistent_Geom2d.hxx>
0019 #include <ShapePersistent_Poly.hxx>
0020 #include <NCollection_DataMap.hxx>
0021 #include <StdObject_Location.hxx>
0022 #include <StdObject_gp_Vectors.hxx>
0023
0024 #include <BRep_PointRepresentation.hxx>
0025 #include <NCollection_List.hxx>
0026 #include <BRep_CurveRepresentation.hxx>
0027
0028 #include <gp_Pnt.hxx>
0029 #include <gp_Pnt2d.hxx>
0030 class Standard_Transient;
0031 class StdObjMgt_Persistent;
0032
0033 class BRep_PointRepresentation;
0034 class BRep_CurveRepresentation;
0035 class TopoDS_Vertex;
0036 class TopoDS_Edge;
0037 class TopoDS_Face;
0038
0039 class ShapePersistent_BRep : public ShapePersistent_TopoDS
0040 {
0041 public:
0042 class PointRepresentation : public StdObjMgt_Persistent
0043 {
0044 friend class ShapePersistent_BRep;
0045
0046 public:
0047
0048 PointRepresentation()
0049 : myParameter(0.0)
0050 {
0051 }
0052
0053
0054 Standard_EXPORT void Read(StdObjMgt_ReadData& theReadData) override;
0055
0056 Standard_EXPORT void Write(StdObjMgt_WriteData& theWriteData) const override;
0057
0058 void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const override;
0059
0060
0061 const char* PName() const override { return "PBRep_PointRepresentation"; }
0062
0063
0064 Standard_EXPORT void Import(
0065 NCollection_List<occ::handle<BRep_PointRepresentation>>& thePoints) const;
0066
0067 protected:
0068 virtual occ::handle<BRep_PointRepresentation> import() const;
0069
0070 protected:
0071 StdObject_Location myLocation;
0072 double myParameter;
0073
0074 private:
0075 occ::handle<PointRepresentation> myNext;
0076 };
0077
0078 class PointOnCurve : public PointRepresentation
0079 {
0080 friend class ShapePersistent_BRep;
0081
0082 public:
0083 void Read(StdObjMgt_ReadData& theReadData) override;
0084 void Write(StdObjMgt_WriteData& theWriteData) const override;
0085 void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const override;
0086
0087 const char* PName() const override { return "PBRep_PointOnCurve"; }
0088
0089 occ::handle<BRep_PointRepresentation> import() const override;
0090
0091 private:
0092 Handle(ShapePersistent_Geom::Curve) myCurve;
0093 };
0094
0095 class PointsOnSurface : public PointRepresentation
0096 {
0097 friend class ShapePersistent_BRep;
0098
0099 public:
0100 void Read(StdObjMgt_ReadData& theReadData) override;
0101 void Write(StdObjMgt_WriteData& theWriteData) const override;
0102 void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const override;
0103
0104 const char* PName() const override { return "PBRep_PointsOnSurface"; }
0105
0106 protected:
0107 Handle(ShapePersistent_Geom::Surface) mySurface;
0108 };
0109
0110 class PointOnCurveOnSurface : public PointsOnSurface
0111 {
0112 friend class ShapePersistent_BRep;
0113
0114 public:
0115 void Read(StdObjMgt_ReadData& theReadData) override;
0116 void Write(StdObjMgt_WriteData& theWriteData) const override;
0117 void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const override;
0118
0119 const char* PName() const override { return "PBRep_PointOnCurveOnSurface"; }
0120
0121 occ::handle<BRep_PointRepresentation> import() const override;
0122
0123 private:
0124 Handle(ShapePersistent_Geom2d::Curve) myPCurve;
0125 };
0126
0127 class PointOnSurface : public PointsOnSurface
0128 {
0129 friend class ShapePersistent_BRep;
0130
0131 public:
0132 PointOnSurface()
0133 : myParameter2(0.0)
0134 {
0135 }
0136
0137 void Read(StdObjMgt_ReadData& theReadData) override;
0138 void Write(StdObjMgt_WriteData& theWriteData) const override;
0139
0140 const char* PName() const override { return "PBRep_PointOnSurface"; }
0141
0142 occ::handle<BRep_PointRepresentation> import() const override;
0143
0144 private:
0145 double myParameter2;
0146 };
0147
0148 class CurveRepresentation : public StdObjMgt_Persistent
0149 {
0150 friend class ShapePersistent_BRep;
0151
0152 public:
0153
0154 Standard_EXPORT void Read(StdObjMgt_ReadData& theReadData) override;
0155
0156 Standard_EXPORT void Write(StdObjMgt_WriteData& theWriteData) const override;
0157
0158 void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const override;
0159
0160
0161 const char* PName() const override { return "PBRep_CurveRepresentation"; }
0162
0163
0164 Standard_EXPORT void Import(
0165 NCollection_List<occ::handle<BRep_CurveRepresentation>>& theCurves) const;
0166
0167 protected:
0168 virtual occ::handle<BRep_CurveRepresentation> import() const;
0169
0170 protected:
0171 StdObject_Location myLocation;
0172
0173 private:
0174 occ::handle<CurveRepresentation> myNext;
0175 };
0176
0177 class GCurve : public CurveRepresentation
0178 {
0179 friend class ShapePersistent_BRep;
0180
0181 public:
0182 GCurve()
0183 : myFirst(0.0),
0184 myLast(0.0)
0185 {
0186 }
0187
0188 void Read(StdObjMgt_ReadData& theReadData) override;
0189 void Write(StdObjMgt_WriteData& theWriteData) const override;
0190
0191 const char* PName() const override { return "PBRep_GCurve"; }
0192
0193 protected:
0194 double myFirst;
0195 double myLast;
0196 };
0197
0198 class Curve3D : public GCurve
0199 {
0200 friend class ShapePersistent_BRep;
0201
0202 public:
0203 void Read(StdObjMgt_ReadData& theReadData) override;
0204 void Write(StdObjMgt_WriteData& theWriteData) const override;
0205 void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const override;
0206
0207 const char* PName() const override { return "PBRep_Curve3D"; }
0208
0209 occ::handle<BRep_CurveRepresentation> import() const override;
0210
0211 private:
0212 Handle(ShapePersistent_Geom::Curve) myCurve3D;
0213 };
0214
0215 class CurveOnSurface : public GCurve
0216 {
0217 friend class ShapePersistent_BRep;
0218
0219 public:
0220 void Read(StdObjMgt_ReadData& theReadData) override;
0221 void Write(StdObjMgt_WriteData& theWriteData) const override;
0222 void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const override;
0223
0224 const char* PName() const override { return "PBRep_CurveOnSurface"; }
0225
0226 occ::handle<BRep_CurveRepresentation> import() const override;
0227
0228 protected:
0229 Handle(ShapePersistent_Geom2d::Curve) myPCurve;
0230 Handle(ShapePersistent_Geom::Surface) mySurface;
0231 gp_Pnt2d myUV1;
0232 gp_Pnt2d myUV2;
0233 };
0234
0235 class CurveOnClosedSurface : public CurveOnSurface
0236 {
0237 friend class ShapePersistent_BRep;
0238
0239 public:
0240 CurveOnClosedSurface()
0241 : myContinuity(0)
0242 {
0243 }
0244
0245 void Read(StdObjMgt_ReadData& theReadData) override;
0246 void Write(StdObjMgt_WriteData& theWriteData) const override;
0247 void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const override;
0248
0249 const char* PName() const override { return "PBRep_CurveOnClosedSurface"; }
0250
0251 occ::handle<BRep_CurveRepresentation> import() const override;
0252
0253 private:
0254 Handle(ShapePersistent_Geom2d::Curve) myPCurve2;
0255 int myContinuity;
0256 gp_Pnt2d myUV21;
0257 gp_Pnt2d myUV22;
0258 };
0259
0260 class Polygon3D : public CurveRepresentation
0261 {
0262 friend class ShapePersistent_BRep;
0263
0264 public:
0265 void Read(StdObjMgt_ReadData& theReadData) override;
0266 void Write(StdObjMgt_WriteData& theWriteData) const override;
0267 void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const override;
0268
0269 const char* PName() const override { return "PBRep_Polygon3D"; }
0270
0271 occ::handle<BRep_CurveRepresentation> import() const override;
0272
0273 private:
0274 Handle(ShapePersistent_Poly::Polygon3D) myPolygon3D;
0275 };
0276
0277 class PolygonOnTriangulation : public CurveRepresentation
0278 {
0279 friend class ShapePersistent_BRep;
0280
0281 public:
0282 void Read(StdObjMgt_ReadData& theReadData) override;
0283 void Write(StdObjMgt_WriteData& theWriteData) const override;
0284 void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const override;
0285
0286 const char* PName() const override { return "PBRep_PolygonOnTriangulation"; }
0287
0288 occ::handle<BRep_CurveRepresentation> import() const override;
0289
0290 protected:
0291 Handle(ShapePersistent_Poly::PolygonOnTriangulation) myPolygon;
0292 Handle(ShapePersistent_Poly::Triangulation) myTriangulation;
0293 };
0294
0295 class PolygonOnClosedTriangulation : public PolygonOnTriangulation
0296 {
0297 friend class ShapePersistent_BRep;
0298
0299 public:
0300 void Read(StdObjMgt_ReadData& theReadData) override;
0301 void Write(StdObjMgt_WriteData& theWriteData) const override;
0302 void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const override;
0303
0304 const char* PName() const override { return "PBRep_PolygonOnClosedTriangulation"; }
0305
0306 occ::handle<BRep_CurveRepresentation> import() const override;
0307
0308 private:
0309 Handle(ShapePersistent_Poly::PolygonOnTriangulation) myPolygon2;
0310 };
0311
0312 class PolygonOnSurface : public CurveRepresentation
0313 {
0314 friend class ShapePersistent_BRep;
0315
0316 public:
0317 void Read(StdObjMgt_ReadData& theReadData) override;
0318 void Write(StdObjMgt_WriteData& theWriteData) const override;
0319 void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const override;
0320
0321 const char* PName() const override { return "PBRep_PolygonOnSurface"; }
0322
0323 occ::handle<BRep_CurveRepresentation> import() const override;
0324
0325 protected:
0326 Handle(ShapePersistent_Poly::Polygon2D) myPolygon2D;
0327 Handle(ShapePersistent_Geom::Surface) mySurface;
0328 };
0329
0330 class PolygonOnClosedSurface : public PolygonOnSurface
0331 {
0332 friend class ShapePersistent_BRep;
0333
0334 public:
0335 void Read(StdObjMgt_ReadData& theReadData) override;
0336 void Write(StdObjMgt_WriteData& theWriteData) const override;
0337 void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const override;
0338
0339 const char* PName() const override { return "PBRep_PolygonOnClosedSurface"; }
0340
0341 occ::handle<BRep_CurveRepresentation> import() const override;
0342
0343 private:
0344 Handle(ShapePersistent_Poly::Polygon2D) myPolygon2;
0345 };
0346
0347 class CurveOn2Surfaces : public CurveRepresentation
0348 {
0349 friend class ShapePersistent_BRep;
0350
0351 public:
0352 CurveOn2Surfaces()
0353 : myContinuity(0)
0354 {
0355 }
0356
0357 void Read(StdObjMgt_ReadData& theReadData) override;
0358 void Write(StdObjMgt_WriteData& theWriteData) const override;
0359 void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const override;
0360
0361 const char* PName() const override { return "PBRep_CurveOn2Surfaces"; }
0362
0363 occ::handle<BRep_CurveRepresentation> import() const override;
0364
0365 private:
0366 Handle(ShapePersistent_Geom::Surface) mySurface;
0367 Handle(ShapePersistent_Geom::Surface) mySurface2;
0368 StdObject_Location myLocation2;
0369 int myContinuity;
0370 };
0371
0372 private:
0373 class pTVertex : public pTBase
0374 {
0375 friend class ShapePersistent_BRep;
0376
0377 public:
0378 pTVertex()
0379 : myTolerance(0.0)
0380 {
0381 }
0382
0383 inline void Read(StdObjMgt_ReadData& theReadData)
0384 {
0385 pTBase::Read(theReadData);
0386 theReadData >> myTolerance >> myPnt >> myPoints;
0387 }
0388
0389 inline void Write(StdObjMgt_WriteData& theWriteData) const
0390 {
0391 pTBase::Write(theWriteData);
0392 theWriteData << myTolerance << myPnt << myPoints;
0393 }
0394
0395 inline void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const
0396 {
0397 pTBase::PChildren(theChildren);
0398 theChildren.Append(myPoints);
0399 }
0400
0401 inline const char* PName() const { return "PBRep_TVertex"; }
0402
0403 private:
0404 occ::handle<TopoDS_TShape> createTShape() const override;
0405
0406 private:
0407 double myTolerance;
0408 gp_Pnt myPnt;
0409 occ::handle<PointRepresentation> myPoints;
0410 };
0411
0412 class pTEdge : public pTBase
0413 {
0414 friend class ShapePersistent_BRep;
0415
0416 public:
0417 pTEdge()
0418 : myTolerance(0.0),
0419 myFlags(0)
0420 {
0421 }
0422
0423 inline void Read(StdObjMgt_ReadData& theReadData)
0424 {
0425 pTBase::Read(theReadData);
0426 theReadData >> myTolerance >> myFlags >> myCurves;
0427 }
0428
0429 inline void Write(StdObjMgt_WriteData& theWriteData) const
0430 {
0431 pTBase::Write(theWriteData);
0432 theWriteData << myTolerance << myFlags << myCurves;
0433 }
0434
0435 inline void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const
0436 {
0437 pTBase::PChildren(theChildren);
0438 theChildren.Append(myCurves);
0439 }
0440
0441 inline const char* PName() const { return "PBRep_TEdge"; }
0442
0443 private:
0444 occ::handle<TopoDS_TShape> createTShape() const override;
0445
0446 private:
0447 double myTolerance;
0448 int myFlags;
0449 occ::handle<CurveRepresentation> myCurves;
0450 };
0451
0452 class pTFace : public pTBase
0453 {
0454 friend class ShapePersistent_BRep;
0455
0456 public:
0457 pTFace()
0458 : myTolerance(0.0),
0459 myNaturalRestriction(false)
0460 {
0461 }
0462
0463 inline void Read(StdObjMgt_ReadData& theReadData)
0464 {
0465 pTBase::Read(theReadData);
0466 theReadData >> mySurface >> myTriangulation >> myLocation;
0467 theReadData >> myTolerance >> myNaturalRestriction;
0468 }
0469
0470 inline void Write(StdObjMgt_WriteData& theWriteData) const
0471 {
0472 pTBase::Write(theWriteData);
0473 theWriteData << mySurface << myTriangulation << myLocation;
0474 theWriteData << myTolerance << myNaturalRestriction;
0475 }
0476
0477 inline void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const
0478 {
0479 pTBase::PChildren(theChildren);
0480 theChildren.Append(mySurface);
0481 theChildren.Append(myTriangulation);
0482 myLocation.PChildren(theChildren);
0483 }
0484
0485 inline const char* PName() const { return "PBRep_TFace"; }
0486
0487 private:
0488 occ::handle<TopoDS_TShape> createTShape() const override;
0489
0490 private:
0491 Handle(ShapePersistent_Geom::Surface) mySurface;
0492 Handle(ShapePersistent_Poly::Triangulation) myTriangulation;
0493 StdObject_Location myLocation;
0494 double myTolerance;
0495 bool myNaturalRestriction;
0496 };
0497
0498 public:
0499 typedef tObject<pTVertex> TVertex;
0500 typedef tObject<pTEdge> TEdge;
0501 typedef tObject<pTFace> TFace;
0502
0503 typedef tObject1<pTVertex> TVertex1;
0504 typedef tObject1<pTEdge> TEdge1;
0505 typedef tObject1<pTFace> TFace1;
0506
0507 public:
0508
0509 Standard_EXPORT static Handle(TVertex::pTObjectT) Translate(
0510 const TopoDS_Vertex& theVertex,
0511 NCollection_DataMap<occ::handle<Standard_Transient>, occ::handle<StdObjMgt_Persistent>>&
0512 theMap);
0513
0514 Standard_EXPORT static Handle(TEdge::pTObjectT) Translate(
0515 const TopoDS_Edge& theEdge,
0516 NCollection_DataMap<occ::handle<Standard_Transient>, occ::handle<StdObjMgt_Persistent>>& theMap,
0517 ShapePersistent_TriangleMode theTriangleMode);
0518
0519 Standard_EXPORT static Handle(TFace::pTObjectT) Translate(
0520 const TopoDS_Face& theFace,
0521 NCollection_DataMap<occ::handle<Standard_Transient>, occ::handle<StdObjMgt_Persistent>>& theMap,
0522 ShapePersistent_TriangleMode theTriangleMode);
0523
0524 Standard_EXPORT static occ::handle<PointOnCurve> Translate(
0525 double theParam,
0526 const occ::handle<Geom_Curve>& theCurve,
0527 const TopLoc_Location& theLoc,
0528 NCollection_DataMap<occ::handle<Standard_Transient>, occ::handle<StdObjMgt_Persistent>>&
0529 theMap);
0530
0531 Standard_EXPORT static occ::handle<PointOnCurveOnSurface> Translate(
0532 double theParam,
0533 const occ::handle<Geom2d_Curve>& theCurve,
0534 const occ::handle<Geom_Surface>& theSurf,
0535 const TopLoc_Location& theLoc,
0536 NCollection_DataMap<occ::handle<Standard_Transient>, occ::handle<StdObjMgt_Persistent>>&
0537 theMap);
0538
0539 Standard_EXPORT static occ::handle<PointOnSurface> Translate(
0540 double theParam,
0541 double theParam2,
0542 const occ::handle<Geom_Surface>& theSurf,
0543 const TopLoc_Location& theLoc,
0544 NCollection_DataMap<occ::handle<Standard_Transient>, occ::handle<StdObjMgt_Persistent>>&
0545 theMap);
0546
0547 Standard_EXPORT static occ::handle<CurveOnSurface> Translate(
0548 const occ::handle<Geom2d_Curve>& theCurve,
0549 const double theFirstParam,
0550 const double theLastParam,
0551 const occ::handle<Geom_Surface>& theSurf,
0552 const TopLoc_Location& theLoc,
0553 NCollection_DataMap<occ::handle<Standard_Transient>, occ::handle<StdObjMgt_Persistent>>&
0554 theMap);
0555
0556 Standard_EXPORT static occ::handle<CurveOnClosedSurface> Translate(
0557 const occ::handle<Geom2d_Curve>& theCurve,
0558 const occ::handle<Geom2d_Curve>& theCurve2,
0559 const double theFirstParam,
0560 const double theLastParam,
0561 const occ::handle<Geom_Surface>& theSurf,
0562 const TopLoc_Location& theLoc,
0563 const GeomAbs_Shape theContinuity,
0564 NCollection_DataMap<occ::handle<Standard_Transient>, occ::handle<StdObjMgt_Persistent>>&
0565 theMap);
0566
0567 Standard_EXPORT static occ::handle<CurveOn2Surfaces> Translate(
0568 const occ::handle<Geom_Surface>& theSurf,
0569 const occ::handle<Geom_Surface>& theSurf2,
0570 const TopLoc_Location& theLoc,
0571 const TopLoc_Location& theLoc2,
0572 const GeomAbs_Shape theContinuity,
0573 NCollection_DataMap<occ::handle<Standard_Transient>, occ::handle<StdObjMgt_Persistent>>&
0574 theMap);
0575
0576 Standard_EXPORT static occ::handle<Curve3D> Translate(
0577 const occ::handle<Geom_Curve>& theCurve,
0578 const double theFirstParam,
0579 const double theLastParam,
0580 const TopLoc_Location& theLoc,
0581 NCollection_DataMap<occ::handle<Standard_Transient>, occ::handle<StdObjMgt_Persistent>>&
0582 theMap);
0583
0584 Standard_EXPORT static occ::handle<Polygon3D> Translate(
0585 const occ::handle<Poly_Polygon3D>& thePoly,
0586 const TopLoc_Location& theLoc,
0587 NCollection_DataMap<occ::handle<Standard_Transient>, occ::handle<StdObjMgt_Persistent>>&
0588 theMap);
0589
0590 Standard_EXPORT static occ::handle<PolygonOnClosedSurface> Translate(
0591 const occ::handle<Poly_Polygon2D>& thePoly,
0592 const occ::handle<Poly_Polygon2D>& thePoly2,
0593 const occ::handle<Geom_Surface>& theSurf,
0594 const TopLoc_Location& theLoc,
0595 NCollection_DataMap<occ::handle<Standard_Transient>, occ::handle<StdObjMgt_Persistent>>&
0596 theMap);
0597
0598 Standard_EXPORT static occ::handle<PolygonOnSurface> Translate(
0599 const occ::handle<Poly_Polygon2D>& thePoly,
0600 const occ::handle<Geom_Surface>& theSurf,
0601 const TopLoc_Location& theLoc,
0602 NCollection_DataMap<occ::handle<Standard_Transient>, occ::handle<StdObjMgt_Persistent>>&
0603 theMap);
0604
0605 Standard_EXPORT static occ::handle<PolygonOnClosedTriangulation> Translate(
0606 const occ::handle<Poly_PolygonOnTriangulation>& thePolyOnTriang,
0607 const occ::handle<Poly_PolygonOnTriangulation>& thePolyOnTriang2,
0608 const occ::handle<Poly_Triangulation>& thePolyTriang,
0609 const TopLoc_Location& theLoc,
0610 NCollection_DataMap<occ::handle<Standard_Transient>, occ::handle<StdObjMgt_Persistent>>&
0611 theMap);
0612
0613 Standard_EXPORT static occ::handle<PolygonOnTriangulation> Translate(
0614 const occ::handle<Poly_PolygonOnTriangulation>& thePolyOnTriang,
0615 const occ::handle<Poly_Triangulation>& thePolyTriang,
0616 const TopLoc_Location& theLoc,
0617 NCollection_DataMap<occ::handle<Standard_Transient>, occ::handle<StdObjMgt_Persistent>>&
0618 theMap);
0619 };
0620
0621 #endif