1 // Created on: 2016-04-07 2 // Copyright (c) 2016 OPEN CASCADE SAS 3 // Created by: Oleg AGASHIN 4 // 5 // This file is part of Open CASCADE Technology software library. 6 // 7 // This library is free software; you can redistribute it and/or modify it under 8 // the terms of the GNU Lesser General Public License version 2.1 as published 9 // by the Free Software Foundation, with special exception defined in the file 10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT 11 // distribution for complete text of the license and disclaimer of any warranty. 12 // 13 // Alternatively, this file may be used under the terms of Open CASCADE 14 // commercial license or contractual agreement. 15 16 #ifndef _IMeshData_Model_HeaderFile 17 #define _IMeshData_Model_HeaderFile 18 19 #include <IMeshData_Shape.hxx> 20 #include <Standard_Type.hxx> 21 #include <TopoDS_Shape.hxx> 22 #include <IMeshData_Types.hxx> 23 24 class TopoDS_Face; 25 class TopoDS_Edge; 26 class IMeshData_Face; 27 class IMeshData_Edge; 28 29 //! Interface class representing discrete model of a shape. 30 class IMeshData_Model : public IMeshData_Shape 31 { 32 public: 33 34 //! Destructor. ~IMeshData_Model()35 Standard_EXPORT virtual ~IMeshData_Model() 36 { 37 } 38 39 //! Returns maximum size of shape model. 40 Standard_EXPORT virtual Standard_Real GetMaxSize () const = 0; 41 42 DEFINE_STANDARD_RTTI_INLINE(IMeshData_Model, IMeshData_Shape) 43 44 public: //! @name discrete faces 45 46 //! Returns number of faces in discrete model. 47 Standard_EXPORT virtual Standard_Integer FacesNb () const = 0; 48 49 //! Adds new face to shape model. 50 Standard_EXPORT virtual const IMeshData::IFaceHandle& AddFace (const TopoDS_Face& theFace) = 0; 51 52 //! Gets model's face with the given index. 53 Standard_EXPORT virtual const IMeshData::IFaceHandle& GetFace (const Standard_Integer theIndex) const = 0; 54 55 public: //! @name discrete edges 56 57 //! Returns number of edges in discrete model. 58 Standard_EXPORT virtual Standard_Integer EdgesNb () const = 0; 59 60 //! Adds new edge to shape model. 61 Standard_EXPORT virtual const IMeshData::IEdgeHandle& AddEdge (const TopoDS_Edge& theEdge) = 0; 62 63 //! Gets model's edge with the given index. 64 Standard_EXPORT virtual const IMeshData::IEdgeHandle& GetEdge (const Standard_Integer theIndex) const = 0; 65 66 protected: 67 68 //! Constructor. 69 //! Initializes empty model. IMeshData_Model(const TopoDS_Shape & theShape)70 Standard_EXPORT IMeshData_Model (const TopoDS_Shape& theShape) 71 : IMeshData_Shape(theShape) 72 { 73 } 74 }; 75 76 #endif