File indexing completed on 2025-01-18 10:03:14
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #ifndef _BRepMesh_EdgeDiscret_HeaderFile
0017 #define _BRepMesh_EdgeDiscret_HeaderFile
0018
0019 #include <IMeshTools_ModelAlgo.hxx>
0020 #include <IMeshTools_Parameters.hxx>
0021 #include <IMeshData_Types.hxx>
0022
0023 class IMeshTools_CurveTessellator;
0024
0025
0026
0027
0028
0029 class BRepMesh_EdgeDiscret : public IMeshTools_ModelAlgo
0030 {
0031 public:
0032
0033 Standard_EXPORT BRepMesh_EdgeDiscret ();
0034
0035
0036 Standard_EXPORT virtual ~BRepMesh_EdgeDiscret ();
0037
0038
0039 Standard_EXPORT static Handle(IMeshTools_CurveTessellator) CreateEdgeTessellator(
0040 const IMeshData::IEdgeHandle& theDEdge,
0041 const IMeshTools_Parameters& theParameters,
0042 const Standard_Integer theMinPointsNb = 2);
0043
0044
0045 Standard_EXPORT static Handle(IMeshTools_CurveTessellator) CreateEdgeTessellator(
0046 const IMeshData::IEdgeHandle& theDEdge,
0047 const TopAbs_Orientation theOrientation,
0048 const IMeshData::IFaceHandle& theDFace,
0049 const IMeshTools_Parameters& theParameters,
0050 const Standard_Integer theMinPointsNb = 2);
0051
0052
0053 Standard_EXPORT static Handle(IMeshTools_CurveTessellator) CreateEdgeTessellationExtractor(
0054 const IMeshData::IEdgeHandle& theDEdge,
0055 const IMeshData::IFaceHandle& theDFace);
0056
0057
0058 void operator() (const Standard_Integer theEdgeIndex) const {
0059 process (theEdgeIndex);
0060 }
0061
0062
0063 Standard_EXPORT static void Tessellate3d(
0064 const IMeshData::IEdgeHandle& theDEdge,
0065 const Handle(IMeshTools_CurveTessellator)& theTessellator,
0066 const Standard_Boolean theUpdateEnds);
0067
0068
0069 Standard_EXPORT static void Tessellate2d(
0070 const IMeshData::IEdgeHandle& theDEdge,
0071 const Standard_Boolean theUpdateEnds);
0072
0073 DEFINE_STANDARD_RTTIEXT(BRepMesh_EdgeDiscret, IMeshTools_ModelAlgo)
0074
0075 protected:
0076
0077
0078 Standard_EXPORT virtual Standard_Boolean performInternal (
0079 const Handle (IMeshData_Model)& theModel,
0080 const IMeshTools_Parameters& theParameters,
0081 const Message_ProgressRange& theRange) Standard_OVERRIDE;
0082
0083 private:
0084
0085
0086 void process (const Standard_Integer theEdgeIndex) const;
0087
0088
0089
0090
0091 Standard_Real checkExistingPolygonAndUpdateStatus(
0092 const IMeshData::IEdgeHandle& theDEdge,
0093 const IMeshData::IPCurveHandle& thePCurve) const;
0094
0095 private:
0096
0097 Handle (IMeshData_Model) myModel;
0098 IMeshTools_Parameters myParameters;
0099 };
0100
0101 #endif