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_NURBSRangeSplitter_HeaderFile
0017 #define _BRepMesh_NURBSRangeSplitter_HeaderFile
0018
0019 #include <BRepMesh_UVParamRangeSplitter.hxx>
0020 #include <IMeshData_Types.hxx>
0021 #include <IMeshTools_Parameters.hxx>
0022
0023
0024
0025 class BRepMesh_NURBSRangeSplitter : public BRepMesh_UVParamRangeSplitter
0026 {
0027 public:
0028
0029
0030 BRepMesh_NURBSRangeSplitter()
0031 : mySurfaceType(GeomAbs_OtherSurface)
0032 {
0033 }
0034
0035
0036 virtual ~BRepMesh_NURBSRangeSplitter()
0037 {
0038 }
0039
0040
0041 Standard_EXPORT virtual void AdjustRange() Standard_OVERRIDE;
0042
0043
0044 Standard_EXPORT virtual Handle(IMeshData::ListOfPnt2d) GenerateSurfaceNodes(
0045 const IMeshTools_Parameters& theParameters) const Standard_OVERRIDE;
0046
0047 protected:
0048
0049
0050 Standard_EXPORT virtual Standard_Boolean initParameters() const;
0051
0052
0053 Standard_EXPORT virtual Standard_Integer getUndefinedIntervalNb(
0054 const Handle(Adaptor3d_Surface)& theSurface,
0055 const Standard_Boolean isU,
0056 const GeomAbs_Shape theContinuity) const;
0057
0058 private:
0059
0060
0061 void getUndefinedInterval(
0062 const Handle(Adaptor3d_Surface)& theSurface,
0063 const Standard_Boolean isU,
0064 const GeomAbs_Shape theContinuity,
0065 const std::pair<Standard_Real, Standard_Real>& theRange,
0066 TColStd_Array1OfReal& theIntervals) const;
0067
0068
0069 Handle(IMeshData::SequenceOfReal) computeGrainAndFilterParameters(
0070 const IMeshData::IMapOfReal& theSourceParams,
0071 const Standard_Real theTol2d,
0072 const Standard_Real theRangeDiff,
0073 const Standard_Real theDelta,
0074 const IMeshTools_Parameters& theParameters,
0075 const Handle(NCollection_IncAllocator)& theAllocator) const;
0076
0077
0078 Handle(IMeshData::SequenceOfReal) filterParameters(
0079 const IMeshData::IMapOfReal& theParams,
0080 const Standard_Real theMinDist,
0081 const Standard_Real theFilterDist,
0082 const Handle(NCollection_IncAllocator)& theAllocator) const;
0083
0084 enum EdgeType
0085 {
0086 Edge_Internal,
0087 Edge_Frontier
0088 };
0089
0090 enum ParamDimension
0091 {
0092 Param_U = 0x1,
0093 Param_V = 0x2
0094 };
0095
0096
0097
0098 Standard_Boolean grabParamsOfEdges (const EdgeType theEdgeType,
0099 const Standard_Integer theParamDimensionFlag) const;
0100
0101 private:
0102
0103 GeomAbs_SurfaceType mySurfaceType;
0104 };
0105
0106 #endif