Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-28 09:19:37

0001 // Copyright (c) 2026 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 _BRepGraphInc_Representation_HeaderFile
0015 #define _BRepGraphInc_Representation_HeaderFile
0016 
0017 #include <BRepGraphInc_RepId.hxx>
0018 #include <BRepGraph_NodeId.hxx>
0019 #include <Geom2d_Curve.hxx>
0020 #include <Geom_Curve.hxx>
0021 #include <Geom_Surface.hxx>
0022 #include <Poly_Polygon2D.hxx>
0023 #include <Poly_Polygon3D.hxx>
0024 #include <Poly_PolygonOnTriangulation.hxx>
0025 #include <Poly_Triangulation.hxx>
0026 #include <Standard_Handle.hxx>
0027 
0028 //! @brief Geometry representation records for the BRepGraph incidence storage.
0029 //!
0030 //! Curve parameter ranges live in curve-use records because the use record
0031 //! is not reusable - the interval belongs to the owning edge/coedge curve use,
0032 //! not to a shared geometric curve.
0033 namespace BRepGraphInc
0034 {
0035 
0036 //! 3D curve use for edges. Owned by a single edge.
0037 struct EdgeCurve3DRep
0038 {
0039   using TypeId = BRepGraph_EdgeCurve3DRepId;
0040 
0041   BRepGraph_EdgeId        ParentEdgeId;     //!< Owning edge identifier
0042   occ::handle<Geom_Curve> Curve;            //!< 3D curve geometry
0043   double                  ParamFirst = 0.0; //!< First curve parameter
0044   double                  ParamLast  = 0.0; //!< Last curve parameter
0045 };
0046 
0047 //! 3D polygon use for edges. Owned by a single edge.
0048 struct EdgePolygon3DRep
0049 {
0050   using TypeId = BRepGraph_EdgePolygon3DRepId;
0051 
0052   BRepGraph_EdgeId            ParentEdgeId; //!< Owning edge identifier
0053   occ::handle<Poly_Polygon3D> Polygon;      //!< 3D polygon geometry
0054 };
0055 
0056 //! 2D parametric curve (PCurve) use for coedges. Owned by a single coedge.
0057 struct CoEdgeCurve2DRep
0058 {
0059   using TypeId = BRepGraph_CoEdgeCurve2DRepId;
0060 
0061   BRepGraph_CoEdgeId        ParentCoEdgeId;   //!< Owning coedge identifier
0062   occ::handle<Geom2d_Curve> Curve;            //!< 2D parametric curve geometry
0063   double                    ParamFirst = 0.0; //!< First curve parameter
0064   double                    ParamLast  = 0.0; //!< Last curve parameter
0065 };
0066 
0067 //! 2D polygon-on-surface use for coedges. Owned by a single coedge.
0068 struct CoEdgePolygon2DRep
0069 {
0070   using TypeId = BRepGraph_CoEdgePolygon2DRepId;
0071 
0072   BRepGraph_CoEdgeId          ParentCoEdgeId; //!< Owning coedge identifier
0073   occ::handle<Poly_Polygon2D> Polygon;        //!< 2D polygon geometry
0074 };
0075 
0076 //! Polygon-on-triangulation use for coedges. Owned by a single coedge.
0077 struct CoEdgePolygonOnTriRep
0078 {
0079   using TypeId = BRepGraph_CoEdgePolygonOnTriRepId;
0080 
0081   BRepGraph_CoEdgeId                       ParentCoEdgeId; //!< Owning coedge identifier
0082   occ::handle<Poly_PolygonOnTriangulation> Polygon;        //!< Polygon-on-triangulation geometry
0083 };
0084 
0085 //! Surface geometry use for faces. Owned by a single face.
0086 struct FaceSurfaceRep
0087 {
0088   using TypeId = BRepGraph_FaceSurfaceRepId;
0089 
0090   BRepGraph_FaceId          ParentFaceId; //!< Owning face identifier
0091   occ::handle<Geom_Surface> Surface;      //!< Surface geometry
0092 };
0093 
0094 //! Triangulation mesh use for faces. Owned by a single face.
0095 struct FaceTriangulationRep
0096 {
0097   using TypeId = BRepGraph_FaceTriangulationRepId;
0098 
0099   BRepGraph_FaceId                ParentFaceId;  //!< Owning face identifier
0100   occ::handle<Poly_Triangulation> Triangulation; //!< Triangulation mesh
0101 };
0102 
0103 } // namespace BRepGraphInc
0104 
0105 #endif // _BRepGraphInc_Representation_HeaderFile