File indexing completed on 2026-07-02 08:33:11
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _ChFi2d_Builder_HeaderFile
0018 #define _ChFi2d_Builder_HeaderFile
0019
0020 #include <Standard.hxx>
0021 #include <Standard_DefineAlloc.hxx>
0022
0023 #include <ChFi2d_ConstructionError.hxx>
0024 #include <TopoDS_Face.hxx>
0025 #include <TopTools_SequenceOfShape.hxx>
0026 #include <TopTools_DataMapOfShapeShape.hxx>
0027 #include <Standard_Integer.hxx>
0028
0029 class TopoDS_Edge;
0030 class TopoDS_Vertex;
0031
0032
0033 #ifdef Status
0034 #undef Status
0035 #endif
0036
0037
0038
0039 class ChFi2d_Builder
0040 {
0041 public:
0042 DEFINE_STANDARD_ALLOC
0043
0044 Standard_EXPORT ChFi2d_Builder();
0045
0046
0047
0048 Standard_EXPORT ChFi2d_Builder(const TopoDS_Face& F);
0049
0050 Standard_EXPORT void Init(const TopoDS_Face& F);
0051
0052 Standard_EXPORT void Init(const TopoDS_Face& RefFace, const TopoDS_Face& ModFace);
0053
0054
0055
0056
0057
0058
0059 Standard_EXPORT TopoDS_Edge AddFillet(const TopoDS_Vertex& V, const Standard_Real Radius);
0060
0061
0062
0063
0064 Standard_EXPORT TopoDS_Edge ModifyFillet(const TopoDS_Edge& Fillet, const Standard_Real Radius);
0065
0066
0067
0068 Standard_EXPORT TopoDS_Vertex RemoveFillet(const TopoDS_Edge& Fillet);
0069
0070
0071
0072
0073
0074 Standard_EXPORT TopoDS_Edge AddChamfer(const TopoDS_Edge& E1,
0075 const TopoDS_Edge& E2,
0076 const Standard_Real D1,
0077 const Standard_Real D2);
0078
0079
0080
0081
0082
0083
0084
0085
0086 Standard_EXPORT TopoDS_Edge AddChamfer(const TopoDS_Edge& E,
0087 const TopoDS_Vertex& V,
0088 const Standard_Real D,
0089 const Standard_Real Ang);
0090
0091
0092
0093
0094
0095 Standard_EXPORT TopoDS_Edge ModifyChamfer(const TopoDS_Edge& Chamfer,
0096 const TopoDS_Edge& E1,
0097 const TopoDS_Edge& E2,
0098 const Standard_Real D1,
0099 const Standard_Real D2);
0100
0101
0102
0103
0104
0105 Standard_EXPORT TopoDS_Edge ModifyChamfer(const TopoDS_Edge& Chamfer,
0106 const TopoDS_Edge& E,
0107 const Standard_Real D,
0108 const Standard_Real Ang);
0109
0110
0111
0112
0113 Standard_EXPORT TopoDS_Vertex RemoveChamfer(const TopoDS_Edge& Chamfer);
0114
0115
0116 TopoDS_Face Result() const;
0117
0118 Standard_Boolean IsModified(const TopoDS_Edge& E) const;
0119
0120
0121 const TopTools_SequenceOfShape& FilletEdges() const;
0122
0123 Standard_Integer NbFillet() const;
0124
0125
0126 const TopTools_SequenceOfShape& ChamferEdges() const;
0127
0128 Standard_Integer NbChamfer() const;
0129
0130 Standard_Boolean HasDescendant(const TopoDS_Edge& E) const;
0131
0132
0133
0134 const TopoDS_Edge& DescendantEdge(const TopoDS_Edge& E) const;
0135
0136
0137
0138
0139 Standard_EXPORT const TopoDS_Edge& BasisEdge(const TopoDS_Edge& E) const;
0140
0141 ChFi2d_ConstructionError Status() const;
0142
0143 protected:
0144 private:
0145
0146
0147
0148 Standard_EXPORT void ComputeFillet(const TopoDS_Vertex& V,
0149 const TopoDS_Edge& E1,
0150 const TopoDS_Edge& E2,
0151 const Standard_Real Radius,
0152 TopoDS_Edge& TrimE1,
0153 TopoDS_Edge& TrimE2,
0154 TopoDS_Edge& Fillet);
0155
0156
0157
0158
0159
0160
0161 Standard_EXPORT void ComputeChamfer(const TopoDS_Vertex& V,
0162 const TopoDS_Edge& E1,
0163 const TopoDS_Edge& E2,
0164 const Standard_Real D1,
0165 const Standard_Real D2,
0166 TopoDS_Edge& TrimE1,
0167 TopoDS_Edge& TrimE2,
0168 TopoDS_Edge& Chamfer);
0169
0170
0171
0172
0173
0174
0175
0176 Standard_EXPORT void ComputeChamfer(const TopoDS_Vertex& V,
0177 const TopoDS_Edge& E1,
0178 const Standard_Real D,
0179 const Standard_Real Ang,
0180 const TopoDS_Edge& E2,
0181 TopoDS_Edge& TrimE1,
0182 TopoDS_Edge& TrimE2,
0183 TopoDS_Edge& Chamfer);
0184
0185
0186
0187
0188
0189
0190
0191
0192
0193
0194 Standard_EXPORT TopoDS_Edge BuildFilletEdge(const TopoDS_Vertex& V,
0195 const TopoDS_Edge& AdjEdge1,
0196 const TopoDS_Edge& AdjEdge2,
0197 const Standard_Real Radius,
0198 TopoDS_Vertex& NewExtr1,
0199 TopoDS_Vertex& NewExtr2);
0200
0201
0202
0203
0204
0205
0206 Standard_EXPORT TopoDS_Edge BuildChamferEdge(const TopoDS_Vertex& V,
0207 const TopoDS_Edge& AdjEdge1,
0208 const TopoDS_Edge& AdjEdge2,
0209 const Standard_Real D1,
0210 const Standard_Real D2,
0211 TopoDS_Vertex& NewExtr1,
0212 TopoDS_Vertex& NewExtr2);
0213
0214
0215
0216
0217
0218
0219 Standard_EXPORT TopoDS_Edge BuildChamferEdge(const TopoDS_Vertex& V,
0220 const TopoDS_Edge& AdjEdge2,
0221 const Standard_Real D,
0222 const Standard_Real Ang,
0223 const TopoDS_Edge& AdjEdge1,
0224 TopoDS_Vertex& NewExtr1,
0225 TopoDS_Vertex& NewExtr2);
0226
0227
0228
0229
0230
0231
0232 Standard_EXPORT void BuildNewWire(const TopoDS_Edge& OldE1,
0233 const TopoDS_Edge& OldE2,
0234 const TopoDS_Edge& E1,
0235 const TopoDS_Edge& Fillet,
0236 const TopoDS_Edge& E2);
0237
0238
0239 Standard_EXPORT TopoDS_Edge BuildNewEdge(const TopoDS_Edge& E1,
0240 const TopoDS_Vertex& OldExtr,
0241 const TopoDS_Vertex& NewExtr) const;
0242
0243
0244
0245
0246 Standard_EXPORT TopoDS_Edge BuildNewEdge(const TopoDS_Edge& E1,
0247 const TopoDS_Vertex& OldExtr,
0248 const TopoDS_Vertex& NewExtr,
0249 Standard_Boolean& IsDegenerated) const;
0250
0251
0252
0253
0254
0255
0256 Standard_EXPORT void UpDateHistory(const TopoDS_Edge& E1,
0257 const TopoDS_Edge& E2,
0258 const TopoDS_Edge& TrimE1,
0259 const TopoDS_Edge& TrimE2,
0260 const TopoDS_Edge& NewEdge,
0261 const Standard_Integer Id);
0262
0263
0264
0265 Standard_EXPORT void UpDateHistory(const TopoDS_Edge& E1,
0266 const TopoDS_Edge& E2,
0267 const TopoDS_Edge& TrimE1,
0268 const TopoDS_Edge& TrimE2);
0269
0270 Standard_EXPORT Standard_Boolean IsAFillet(const TopoDS_Edge& E) const;
0271
0272 Standard_EXPORT Standard_Boolean IsAChamfer(const TopoDS_Edge& E) const;
0273
0274 ChFi2d_ConstructionError status;
0275 TopoDS_Face refFace;
0276 TopoDS_Face newFace;
0277 TopTools_SequenceOfShape fillets;
0278 TopTools_SequenceOfShape chamfers;
0279 TopTools_DataMapOfShapeShape history;
0280 };
0281
0282 #include <ChFi2d_Builder.lxx>
0283
0284 #endif