42cf5bc1 |
1 | // Created on: 1993-09-28 |
2 | // Created by: Bruno DUMORTIER |
3 | // Copyright (c) 1993-1999 Matra Datavision |
4 | // Copyright (c) 1999-2014 OPEN CASCADE SAS |
5 | // |
6 | // This file is part of Open CASCADE Technology software library. |
7 | // |
8 | // This library is free software; you can redistribute it and/or modify it under |
9 | // the terms of the GNU Lesser General Public License version 2.1 as published |
10 | // by the Free Software Foundation, with special exception defined in the file |
11 | // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT |
12 | // distribution for complete text of the license and disclaimer of any warranty. |
13 | // |
14 | // Alternatively, this file may be used under the terms of Open CASCADE |
15 | // commercial license or contractual agreement. |
16 | |
17 | #ifndef _GeomFill_HeaderFile |
18 | #define _GeomFill_HeaderFile |
19 | |
20 | #include <Standard.hxx> |
21 | #include <Standard_DefineAlloc.hxx> |
22 | #include <Standard_Handle.hxx> |
23 | |
24 | #include <Convert_ParameterisationType.hxx> |
25 | #include <Standard_Real.hxx> |
26 | #include <TColgp_Array1OfPnt.hxx> |
27 | #include <TColStd_Array1OfReal.hxx> |
28 | #include <Standard_Boolean.hxx> |
29 | #include <TColgp_Array1OfVec.hxx> |
30 | #include <Standard_Integer.hxx> |
31 | #include <TColStd_Array1OfInteger.hxx> |
32 | class Geom_Surface; |
33 | class Geom_Curve; |
34 | class gp_Vec; |
35 | class gp_Pnt; |
36 | class GeomFill_Filling; |
37 | class GeomFill_Stretch; |
38 | class GeomFill_Coons; |
39 | class GeomFill_Curved; |
40 | class GeomFill_BezierCurves; |
41 | class GeomFill_BSplineCurves; |
42 | class GeomFill_Profiler; |
43 | class GeomFill_SectionGenerator; |
44 | class GeomFill_Line; |
45 | class GeomFill_AppSurf; |
46 | class GeomFill_SweepSectionGenerator; |
47 | class GeomFill_AppSweep; |
48 | class GeomFill_Generator; |
49 | class GeomFill_Pipe; |
50 | class GeomFill_Tensor; |
51 | class GeomFill_ConstrainedFilling; |
52 | class GeomFill_Boundary; |
53 | class GeomFill_DegeneratedBound; |
54 | class GeomFill_SimpleBound; |
55 | class GeomFill_BoundWithSurf; |
56 | class GeomFill_CoonsAlgPatch; |
57 | class GeomFill_TgtField; |
58 | class GeomFill_TgtOnCoons; |
59 | class GeomFill_CornerState; |
60 | class GeomFill_CircularBlendFunc; |
61 | class GeomFill_SweepFunction; |
62 | class GeomFill_LocFunction; |
63 | class GeomFill_PolynomialConvertor; |
64 | class GeomFill_QuasiAngularConvertor; |
65 | class GeomFill_SnglrFunc; |
66 | class GeomFill_FunctionDraft; |
67 | class GeomFill_PlanFunc; |
68 | class GeomFill_FunctionGuide; |
69 | class GeomFill_SectionLaw; |
70 | class GeomFill_UniformSection; |
71 | class GeomFill_EvolvedSection; |
72 | class GeomFill_NSections; |
73 | class GeomFill_LocationLaw; |
74 | class GeomFill_CurveAndTrihedron; |
75 | class GeomFill_LocationDraft; |
76 | class GeomFill_LocationGuide; |
77 | class GeomFill_TrihedronLaw; |
78 | class GeomFill_Fixed; |
79 | class GeomFill_Frenet; |
80 | class GeomFill_CorrectedFrenet; |
81 | class GeomFill_DiscreteTrihedron; |
82 | class GeomFill_ConstantBiNormal; |
83 | class GeomFill_Darboux; |
84 | class GeomFill_DraftTrihedron; |
85 | class GeomFill_TrihedronWithGuide; |
86 | class GeomFill_GuideTrihedronAC; |
87 | class GeomFill_GuideTrihedronPlan; |
88 | class GeomFill_Sweep; |
89 | class GeomFill_SectionPlacement; |
90 | |
91 | |
92 | //! Tools and Data to filling Surface and Sweep Surfaces |
93 | class GeomFill |
94 | { |
95 | public: |
96 | |
97 | DEFINE_STANDARD_ALLOC |
98 | |
99 | |
100 | |
101 | //! Builds a ruled surface between the two curves, Curve1 and Curve2. |
102 | Standard_EXPORT static Handle(Geom_Surface) Surface (const Handle(Geom_Curve)& Curve1, const Handle(Geom_Curve)& Curve2); |
103 | |
104 | Standard_EXPORT static void GetCircle (const Convert_ParameterisationType TConv, const gp_Vec& ns1, const gp_Vec& ns2, const gp_Vec& nplan, const gp_Pnt& pt1, const gp_Pnt& pt2, const Standard_Real Rayon, const gp_Pnt& Center, TColgp_Array1OfPnt& Poles, TColStd_Array1OfReal& Weigths); |
105 | |
106 | Standard_EXPORT static Standard_Boolean GetCircle (const Convert_ParameterisationType TConv, const gp_Vec& ns1, const gp_Vec& ns2, const gp_Vec& dn1w, const gp_Vec& dn2w, const gp_Vec& nplan, const gp_Vec& dnplan, const gp_Pnt& pts1, const gp_Pnt& pts2, const gp_Vec& tang1, const gp_Vec& tang2, const Standard_Real Rayon, const Standard_Real DRayon, const gp_Pnt& Center, const gp_Vec& DCenter, TColgp_Array1OfPnt& Poles, TColgp_Array1OfVec& DPoles, TColStd_Array1OfReal& Weigths, TColStd_Array1OfReal& DWeigths); |
107 | |
108 | Standard_EXPORT static Standard_Boolean GetCircle (const Convert_ParameterisationType TConv, const gp_Vec& ns1, const gp_Vec& ns2, const gp_Vec& dn1w, const gp_Vec& dn2w, const gp_Vec& d2n1w, const gp_Vec& d2n2w, const gp_Vec& nplan, const gp_Vec& dnplan, const gp_Vec& d2nplan, const gp_Pnt& pts1, const gp_Pnt& pts2, const gp_Vec& tang1, const gp_Vec& tang2, const gp_Vec& Dtang1, const gp_Vec& Dtang2, const Standard_Real Rayon, const Standard_Real DRayon, const Standard_Real D2Rayon, const gp_Pnt& Center, const gp_Vec& DCenter, const gp_Vec& D2Center, TColgp_Array1OfPnt& Poles, TColgp_Array1OfVec& DPoles, TColgp_Array1OfVec& D2Poles, TColStd_Array1OfReal& Weigths, TColStd_Array1OfReal& DWeigths, TColStd_Array1OfReal& D2Weigths); |
109 | |
110 | Standard_EXPORT static void GetShape (const Standard_Real MaxAng, Standard_Integer& NbPoles, Standard_Integer& NbKnots, Standard_Integer& Degree, Convert_ParameterisationType& TypeConv); |
111 | |
112 | Standard_EXPORT static void Knots (const Convert_ParameterisationType TypeConv, TColStd_Array1OfReal& TKnots); |
113 | |
114 | Standard_EXPORT static void Mults (const Convert_ParameterisationType TypeConv, TColStd_Array1OfInteger& TMults); |
115 | |
116 | Standard_EXPORT static void GetMinimalWeights (const Convert_ParameterisationType TConv, const Standard_Real AngleMin, const Standard_Real AngleMax, TColStd_Array1OfReal& Weigths); |
117 | |
118 | //! Used by the generical classes to determine |
119 | //! Tolerance for approximation |
120 | Standard_EXPORT static Standard_Real GetTolerance (const Convert_ParameterisationType TConv, const Standard_Real AngleMin, const Standard_Real Radius, const Standard_Real AngularTol, const Standard_Real SpatialTol); |
121 | |
122 | |
123 | |
124 | |
125 | protected: |
126 | |
127 | |
128 | |
129 | |
130 | |
131 | private: |
132 | |
133 | |
134 | |
135 | |
136 | friend class GeomFill_Filling; |
137 | friend class GeomFill_Stretch; |
138 | friend class GeomFill_Coons; |
139 | friend class GeomFill_Curved; |
140 | friend class GeomFill_BezierCurves; |
141 | friend class GeomFill_BSplineCurves; |
142 | friend class GeomFill_Profiler; |
143 | friend class GeomFill_SectionGenerator; |
144 | friend class GeomFill_Line; |
145 | friend class GeomFill_AppSurf; |
146 | friend class GeomFill_SweepSectionGenerator; |
147 | friend class GeomFill_AppSweep; |
148 | friend class GeomFill_Generator; |
149 | friend class GeomFill_Pipe; |
150 | friend class GeomFill_Tensor; |
151 | friend class GeomFill_ConstrainedFilling; |
152 | friend class GeomFill_Boundary; |
153 | friend class GeomFill_DegeneratedBound; |
154 | friend class GeomFill_SimpleBound; |
155 | friend class GeomFill_BoundWithSurf; |
156 | friend class GeomFill_CoonsAlgPatch; |
157 | friend class GeomFill_TgtField; |
158 | friend class GeomFill_TgtOnCoons; |
159 | friend class GeomFill_CornerState; |
160 | friend class GeomFill_CircularBlendFunc; |
161 | friend class GeomFill_SweepFunction; |
162 | friend class GeomFill_LocFunction; |
163 | friend class GeomFill_PolynomialConvertor; |
164 | friend class GeomFill_QuasiAngularConvertor; |
165 | friend class GeomFill_SnglrFunc; |
166 | friend class GeomFill_FunctionDraft; |
167 | friend class GeomFill_PlanFunc; |
168 | friend class GeomFill_FunctionGuide; |
169 | friend class GeomFill_SectionLaw; |
170 | friend class GeomFill_UniformSection; |
171 | friend class GeomFill_EvolvedSection; |
172 | friend class GeomFill_NSections; |
173 | friend class GeomFill_LocationLaw; |
174 | friend class GeomFill_CurveAndTrihedron; |
175 | friend class GeomFill_LocationDraft; |
176 | friend class GeomFill_LocationGuide; |
177 | friend class GeomFill_TrihedronLaw; |
178 | friend class GeomFill_Fixed; |
179 | friend class GeomFill_Frenet; |
180 | friend class GeomFill_CorrectedFrenet; |
181 | friend class GeomFill_DiscreteTrihedron; |
182 | friend class GeomFill_ConstantBiNormal; |
183 | friend class GeomFill_Darboux; |
184 | friend class GeomFill_DraftTrihedron; |
185 | friend class GeomFill_TrihedronWithGuide; |
186 | friend class GeomFill_GuideTrihedronAC; |
187 | friend class GeomFill_GuideTrihedronPlan; |
188 | friend class GeomFill_Sweep; |
189 | friend class GeomFill_SectionPlacement; |
190 | |
191 | }; |
192 | |
193 | |
194 | |
195 | |
196 | |
197 | |
198 | |
199 | #endif // _GeomFill_HeaderFile |