Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-10-02 09:13:46

0001 // Copyright (c) 2015 OPEN CASCADE SAS
0002 //
0003 // This file is part of Open CASCADE Technology software library.
0004 //
0005 // This library is free software; you can redistribute it and/or modify it under
0006 // the terms of the GNU Lesser General Public License version 2.1 as published
0007 // by the Free Software Foundation, with special exception defined in the file
0008 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0009 // distribution for complete text of the license and disclaimer of any warranty.
0010 //
0011 // Alternatively, this file may be used under the terms of Open CASCADE
0012 // commercial license or contractual agreement.
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     //! Empty constructor.
0048     PointRepresentation()
0049         : myParameter(0.0)
0050     {
0051     }
0052 
0053     //! Read persistent data from a file.
0054     Standard_EXPORT void Read(StdObjMgt_ReadData& theReadData) override;
0055     //! Write persistent data to a file.
0056     Standard_EXPORT void Write(StdObjMgt_WriteData& theWriteData) const override;
0057     //! Gets persistent child objects
0058     void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const override;
0059 
0060     //! Returns persistent type name
0061     const char* PName() const override { return "PBRep_PointRepresentation"; }
0062 
0063     //! Import transient object from the persistent data.
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     //! Read persistent data from a file.
0154     Standard_EXPORT void Read(StdObjMgt_ReadData& theReadData) override;
0155     //! Write persistent data from a file.
0156     Standard_EXPORT void Write(StdObjMgt_WriteData& theWriteData) const override;
0157     //! Gets persistent child objects
0158     void PChildren(StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const override;
0159 
0160     //! Returns persistent type name
0161     const char* PName() const override { return "PBRep_CurveRepresentation"; }
0162 
0163     //! Import transient object from the persistent data.
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   //! Create a persistent object for a vertex
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   //! Create a persistent object for an edge
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   //! Create a persistent object for a face
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   //! Create a persistent object for a point on a 3D curve
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   //! Create a persistent object for a point on a 3D curve on a surface
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   //! Create a persistent object for a point on a surface
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   //! Create a persistent object for a curve on a surface
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   //! Create a persistent object for a curve on a closed surface
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   //! Create a persistent object for a curve on two surfaces
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   //! Create a persistent object for a 3D curve
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   //! Create a persistent object for a 3D polygon
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   //! Create a persistent object for a polygon on a closed surface
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   //! Create a persistent object for a polygon on a surface
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   //! Create a persistent object for a polygon on a surface
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   //! Create a persistent object for a polygon on a surface
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