File indexing completed on 2026-09-11 09:17: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 ~BRepMesh_EdgeDiscret() override;
0037
0038
0039 Standard_EXPORT static occ::handle<IMeshTools_CurveTessellator> CreateEdgeTessellator(
0040 const IMeshData::IEdgeHandle& theDEdge,
0041 const IMeshTools_Parameters& theParameters,
0042 const int theMinPointsNb = 2);
0043
0044
0045 Standard_EXPORT static occ::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 int theMinPointsNb = 2);
0051
0052
0053 Standard_EXPORT static occ::handle<IMeshTools_CurveTessellator> CreateEdgeTessellationExtractor(
0054 const IMeshData::IEdgeHandle& theDEdge,
0055 const IMeshData::IFaceHandle& theDFace);
0056
0057
0058 void operator()(const int theEdgeIndex) const { process(theEdgeIndex); }
0059
0060
0061 Standard_EXPORT static void Tessellate3d(
0062 const IMeshData::IEdgeHandle& theDEdge,
0063 const occ::handle<IMeshTools_CurveTessellator>& theTessellator,
0064 const bool theUpdateEnds);
0065
0066
0067 Standard_EXPORT static void Tessellate2d(const IMeshData::IEdgeHandle& theDEdge,
0068 const bool theUpdateEnds);
0069
0070 DEFINE_STANDARD_RTTIEXT(BRepMesh_EdgeDiscret, IMeshTools_ModelAlgo)
0071
0072 protected:
0073
0074 Standard_EXPORT bool performInternal(const occ::handle<IMeshData_Model>& theModel,
0075 const IMeshTools_Parameters& theParameters,
0076 const Message_ProgressRange& theRange) override;
0077
0078 private:
0079
0080 void process(const int theEdgeIndex) const;
0081
0082
0083
0084
0085 double checkExistingPolygonAndUpdateStatus(const IMeshData::IEdgeHandle& theDEdge,
0086 const IMeshData::IPCurveHandle& thePCurve) const;
0087
0088 private:
0089 occ::handle<IMeshData_Model> myModel;
0090 IMeshTools_Parameters myParameters;
0091 };
0092
0093 #endif