File indexing completed on 2026-05-23 08:17:50
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _ShapeAnalysis_FreeBoundsProperties_HeaderFile
0018 #define _ShapeAnalysis_FreeBoundsProperties_HeaderFile
0019
0020 #include <Standard.hxx>
0021 #include <Standard_DefineAlloc.hxx>
0022 #include <Standard_Handle.hxx>
0023
0024 #include <TopoDS_Shape.hxx>
0025 #include <ShapeAnalysis_HSequenceOfFreeBounds.hxx>
0026 #include <Standard_Integer.hxx>
0027 class ShapeAnalysis_FreeBoundData;
0028 class TopoDS_Wire;
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049 class ShapeAnalysis_FreeBoundsProperties
0050 {
0051 public:
0052 DEFINE_STANDARD_ALLOC
0053
0054
0055 Standard_EXPORT ShapeAnalysis_FreeBoundsProperties();
0056
0057
0058
0059 Standard_EXPORT ShapeAnalysis_FreeBoundsProperties(
0060 const TopoDS_Shape& shape,
0061 const Standard_Real tolerance,
0062 const Standard_Boolean splitclosed = Standard_False,
0063 const Standard_Boolean splitopen = Standard_False);
0064
0065
0066
0067 Standard_EXPORT ShapeAnalysis_FreeBoundsProperties(
0068 const TopoDS_Shape& shape,
0069 const Standard_Boolean splitclosed = Standard_False,
0070 const Standard_Boolean splitopen = Standard_False);
0071
0072
0073
0074 Standard_EXPORT void Init(const TopoDS_Shape& shape,
0075 const Standard_Real tolerance,
0076 const Standard_Boolean splitclosed = Standard_False,
0077 const Standard_Boolean splitopen = Standard_False);
0078
0079
0080
0081 Standard_EXPORT void Init(const TopoDS_Shape& shape,
0082 const Standard_Boolean splitclosed = Standard_False,
0083 const Standard_Boolean splitopen = Standard_False);
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095 Standard_EXPORT Standard_Boolean Perform();
0096
0097
0098 Standard_Boolean IsLoaded() const;
0099
0100
0101 TopoDS_Shape Shape() const;
0102
0103
0104 Standard_Real Tolerance() const;
0105
0106
0107 Standard_Integer NbFreeBounds() const;
0108
0109
0110 Standard_Integer NbClosedFreeBounds() const;
0111
0112
0113 Standard_Integer NbOpenFreeBounds() const;
0114
0115
0116 Handle(ShapeAnalysis_HSequenceOfFreeBounds) ClosedFreeBounds() const;
0117
0118
0119 Handle(ShapeAnalysis_HSequenceOfFreeBounds) OpenFreeBounds() const;
0120
0121
0122
0123 Handle(ShapeAnalysis_FreeBoundData) ClosedFreeBound(const Standard_Integer index) const;
0124
0125
0126
0127 Handle(ShapeAnalysis_FreeBoundData) OpenFreeBound(const Standard_Integer index) const;
0128
0129 Standard_EXPORT Standard_Boolean DispatchBounds();
0130
0131 Standard_EXPORT Standard_Boolean CheckContours(const Standard_Real prec = 0.0);
0132
0133 Standard_EXPORT Standard_Boolean CheckNotches(const Standard_Real prec = 0.0);
0134
0135 Standard_EXPORT Standard_Boolean CheckNotches(Handle(ShapeAnalysis_FreeBoundData)& fbData,
0136 const Standard_Real prec = 0.0);
0137
0138 Standard_EXPORT Standard_Boolean CheckNotches(const TopoDS_Wire& freebound,
0139 const Standard_Integer num,
0140 TopoDS_Wire& notch,
0141 Standard_Real& distMax,
0142 const Standard_Real prec = 0.0);
0143
0144 Standard_EXPORT Standard_Boolean FillProperties(Handle(ShapeAnalysis_FreeBoundData)& fbData,
0145 const Standard_Real prec = 0.0);
0146
0147 protected:
0148 private:
0149 TopoDS_Shape myShape;
0150 Standard_Real myTolerance;
0151 Standard_Boolean mySplitClosed;
0152 Standard_Boolean mySplitOpen;
0153 Handle(ShapeAnalysis_HSequenceOfFreeBounds) myClosedFreeBounds;
0154 Handle(ShapeAnalysis_HSequenceOfFreeBounds) myOpenFreeBounds;
0155 };
0156
0157 #include <ShapeAnalysis_FreeBoundsProperties.lxx>
0158
0159 #endif