File indexing completed on 2025-01-18 10:03:20
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #ifndef ChFi2d_AnaFilletAlgo_HeaderFile
0017 #define ChFi2d_AnaFilletAlgo_HeaderFile
0018
0019 #include <TopoDS_Wire.hxx>
0020 #include <TopoDS_Edge.hxx>
0021 #include <gp_Pln.hxx>
0022
0023
0024
0025 class ChFi2d_AnaFilletAlgo
0026 {
0027 public:
0028
0029
0030
0031 Standard_EXPORT ChFi2d_AnaFilletAlgo();
0032
0033
0034
0035
0036
0037 Standard_EXPORT ChFi2d_AnaFilletAlgo(const TopoDS_Wire& theWire,
0038 const gp_Pln& thePlane);
0039
0040
0041
0042
0043
0044 Standard_EXPORT ChFi2d_AnaFilletAlgo(const TopoDS_Edge& theEdge1,
0045 const TopoDS_Edge& theEdge2,
0046 const gp_Pln& thePlane);
0047
0048
0049 Standard_EXPORT void Init(const TopoDS_Wire& theWire, const gp_Pln& thePlane);
0050
0051
0052 Standard_EXPORT void Init(const TopoDS_Edge& theEdge1, const TopoDS_Edge& theEdge2,
0053 const gp_Pln& thePlane);
0054
0055
0056 Standard_EXPORT Standard_Boolean Perform(const Standard_Real radius);
0057
0058
0059 Standard_EXPORT const TopoDS_Edge& Result(TopoDS_Edge& e1, TopoDS_Edge& e2);
0060
0061 private:
0062
0063
0064
0065
0066
0067
0068
0069 Standard_Boolean SegmentFilletSegment(const Standard_Real radius,
0070 Standard_Real& xc, Standard_Real& yc,
0071 Standard_Boolean& cw,
0072 Standard_Real& start, Standard_Real& end);
0073
0074
0075 Standard_Boolean SegmentFilletArc(const Standard_Real radius,
0076 Standard_Real& xc, Standard_Real& yc,
0077 Standard_Boolean& cw,
0078 Standard_Real& start, Standard_Real& end,
0079 Standard_Real& xend, Standard_Real& yend);
0080
0081
0082 Standard_Boolean ArcFilletSegment(const Standard_Real radius,
0083 Standard_Real& xc, Standard_Real& yc,
0084 Standard_Boolean& cw,
0085 Standard_Real& start, Standard_Real& end,
0086 Standard_Real& xstart, Standard_Real& ystart);
0087
0088
0089
0090
0091
0092
0093
0094 Standard_Boolean ArcFilletArc(const Standard_Real radius,
0095 Standard_Real& xc, Standard_Real& yc,
0096 Standard_Boolean& cw,
0097 Standard_Real& start, Standard_Real& end);
0098
0099
0100 Standard_Boolean Cut(const gp_Pln& plane, TopoDS_Edge& e1, TopoDS_Edge& e2);
0101
0102
0103 gp_Pln plane;
0104
0105
0106 TopoDS_Edge e1;
0107 Standard_Boolean segment1;
0108 Standard_Real x11;
0109 Standard_Real y11;
0110 Standard_Real x12;
0111 Standard_Real y12;
0112 Standard_Real xc1;
0113 Standard_Real yc1;
0114 Standard_Real radius1;
0115 Standard_Boolean cw1;
0116
0117
0118 TopoDS_Edge e2;
0119 Standard_Boolean segment2;
0120 Standard_Real x21;
0121 Standard_Real y21;
0122 Standard_Real x22;
0123 Standard_Real y22;
0124 Standard_Real xc2;
0125 Standard_Real yc2;
0126 Standard_Real radius2;
0127 Standard_Boolean cw2;
0128
0129
0130 TopoDS_Edge fillet;
0131 TopoDS_Edge shrinke1;
0132 TopoDS_Edge shrinke2;
0133 };
0134
0135 #endif