42cf5bc1 |
1 | // Created on: 1993-11-09 |
2 | // Created by: Laurent BOURESCHE |
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 _ChFi3d_Builder_HeaderFile |
18 | #define _ChFi3d_Builder_HeaderFile |
19 | |
20 | #include <Standard.hxx> |
21 | #include <Standard_DefineAlloc.hxx> |
22 | #include <Standard_Handle.hxx> |
23 | |
24 | #include <TopoDS_Shape.hxx> |
25 | #include <Standard_Real.hxx> |
26 | #include <GeomAbs_Shape.hxx> |
27 | #include <ChFiDS_Map.hxx> |
28 | #include <ChFiDS_ListOfStripe.hxx> |
29 | #include <ChFiDS_StripeMap.hxx> |
30 | #include <ChFiDS_Regularities.hxx> |
31 | #include <TopTools_ListOfShape.hxx> |
32 | #include <TopTools_DataMapOfShapeListOfInteger.hxx> |
33 | #include <Standard_Boolean.hxx> |
34 | #include <Standard_Integer.hxx> |
35 | #include <ChFiDS_ErrorStatus.hxx> |
36 | #include <math_Vector.hxx> |
37 | #include <TopAbs_Orientation.hxx> |
38 | #include <ChFiDS_SequenceOfSurfData.hxx> |
39 | #include <TopAbs_State.hxx> |
40 | class TopOpeBRepDS_HDataStructure; |
41 | class TopOpeBRepBuild_HBuilder; |
42 | class Standard_OutOfRange; |
43 | class Standard_NoSuchObject; |
44 | class Standard_ConstructionError; |
45 | class TopoDS_Shape; |
46 | class TopoDS_Edge; |
47 | class ChFiDS_Spine; |
48 | class TopoDS_Vertex; |
49 | class Geom_Surface; |
50 | class ChFiDS_SurfData; |
51 | class ChFiDS_HElSpine; |
52 | class BRepAdaptor_HSurface; |
53 | class Adaptor3d_TopolTool; |
54 | class BRepAdaptor_HCurve2d; |
55 | class BRepBlend_Line; |
56 | class Adaptor3d_HSurface; |
57 | class Blend_Function; |
58 | class Blend_FuncInv; |
59 | class Adaptor2d_HCurve2d; |
60 | class Blend_SurfRstFunction; |
61 | class Blend_SurfPointFuncInv; |
62 | class Blend_SurfCurvFuncInv; |
63 | class Blend_RstRstFunction; |
64 | class Blend_CurvPointFuncInv; |
65 | class ChFiDS_Stripe; |
66 | class BRepTopAdaptor_TopolTool; |
67 | class gp_Pnt2d; |
68 | class ChFiDS_CommonPoint; |
69 | class TopoDS_Face; |
70 | class AppBlend_Approx; |
71 | class Geom2d_Curve; |
72 | |
73 | |
74 | //! Root class for calculation of surfaces (fillets, |
75 | //! chamfers) destined to smooth edges of |
76 | //! a gap on a Shape and the reconstruction of the Shape. |
77 | class ChFi3d_Builder |
78 | { |
79 | public: |
80 | |
81 | DEFINE_STANDARD_ALLOC |
82 | |
e6f550da |
83 | Standard_EXPORT virtual ~ChFi3d_Builder(); |
42cf5bc1 |
84 | |
85 | Standard_EXPORT void SetParams (const Standard_Real Tang, const Standard_Real Tesp, const Standard_Real T2d, const Standard_Real TApp3d, const Standard_Real TolApp2d, const Standard_Real Fleche); |
86 | |
87 | Standard_EXPORT void SetContinuity (const GeomAbs_Shape InternalContinuity, const Standard_Real AngularTolerance); |
88 | |
89 | //! extracts from the list the contour containing edge E. |
90 | Standard_EXPORT void Remove (const TopoDS_Edge& E); |
91 | |
92 | //! gives the number of the contour containing E or 0 |
93 | //! if E does not belong to any contour. |
94 | Standard_EXPORT Standard_Integer Contains (const TopoDS_Edge& E) const; |
95 | |
96 | //! gives the number of the contour containing E or 0 |
97 | //! if E does not belong to any contour. |
98 | //! Sets in IndexInSpine the index of E in the contour if it's found |
99 | Standard_EXPORT Standard_Integer Contains (const TopoDS_Edge& E, Standard_Integer& IndexInSpine) const; |
100 | |
101 | //! gives the number of disjoint contours on which |
102 | //! the fillets are calculated |
103 | Standard_EXPORT Standard_Integer NbElements() const; |
104 | |
105 | //! gives the n'th set of edges (contour) |
106 | //! if I >NbElements() |
107 | Standard_EXPORT Handle(ChFiDS_Spine) Value (const Standard_Integer I) const; |
108 | |
109 | //! returns the length of the contour of index IC. |
110 | Standard_EXPORT Standard_Real Length (const Standard_Integer IC) const; |
111 | |
112 | //! returns the First vertex V of |
113 | //! the contour of index IC. |
114 | Standard_EXPORT TopoDS_Vertex FirstVertex (const Standard_Integer IC) const; |
115 | |
116 | //! returns the Last vertex V of |
117 | //! the contour of index IC. |
118 | Standard_EXPORT TopoDS_Vertex LastVertex (const Standard_Integer IC) const; |
119 | |
120 | //! returns the abscissa of the vertex V on |
121 | //! the contour of index IC. |
122 | Standard_EXPORT Standard_Real Abscissa (const Standard_Integer IC, const TopoDS_Vertex& V) const; |
123 | |
124 | //! returns the relative abscissa([0.,1.]) of the |
125 | //! vertex V on the contour of index IC. |
126 | Standard_EXPORT Standard_Real RelativeAbscissa (const Standard_Integer IC, const TopoDS_Vertex& V) const; |
127 | |
128 | //! returns true if the contour of index IC is closed |
129 | //! an tangent. |
130 | Standard_EXPORT Standard_Boolean ClosedAndTangent (const Standard_Integer IC) const; |
131 | |
132 | //! returns true if the contour of index IC is closed |
133 | Standard_EXPORT Standard_Boolean Closed (const Standard_Integer IC) const; |
134 | |
135 | //! general calculation of geometry on all edges, |
136 | //! topologic reconstruction. |
137 | Standard_EXPORT void Compute(); |
138 | |
139 | //! returns True if the computation is success |
140 | Standard_EXPORT Standard_Boolean IsDone() const; |
141 | |
142 | //! if (Isdone()) makes the result. |
143 | //! if (!Isdone()) |
144 | Standard_EXPORT TopoDS_Shape Shape() const; |
145 | |
146 | //! Advanced function for the history |
147 | Standard_EXPORT const TopTools_ListOfShape& Generated (const TopoDS_Shape& EouV); |
148 | |
149 | //! Returns the number of contours on which the calculation |
150 | //! has failed. |
151 | Standard_EXPORT Standard_Integer NbFaultyContours() const; |
152 | |
153 | //! Returns the number of I'th contour on which the calculation |
154 | //! has failed. |
155 | Standard_EXPORT Standard_Integer FaultyContour (const Standard_Integer I) const; |
156 | |
157 | //! Returns the number of surfaces calculated on the contour IC. |
158 | Standard_EXPORT Standard_Integer NbComputedSurfaces (const Standard_Integer IC) const; |
159 | |
160 | //! Returns the IS'th surface calculated on the contour IC. |
161 | Standard_EXPORT Handle(Geom_Surface) ComputedSurface (const Standard_Integer IC, const Standard_Integer IS) const; |
162 | |
163 | //! Returns the number of vertices on which the calculation |
164 | //! has failed. |
165 | Standard_EXPORT Standard_Integer NbFaultyVertices() const; |
166 | |
167 | //! Returns the IV'th vertex on which the calculation has failed. |
168 | Standard_EXPORT TopoDS_Vertex FaultyVertex (const Standard_Integer IV) const; |
169 | |
170 | //! returns True if a partial result has been calculated |
171 | Standard_EXPORT Standard_Boolean HasResult() const; |
172 | |
173 | //! if (HasResult()) returns partial result |
174 | //! if (!HasResult()) |
175 | Standard_EXPORT TopoDS_Shape BadShape() const; |
176 | |
177 | //! for the stripe IC ,indication on the cause |
178 | //! of failure WalkingFailure,TwistedSurface,Error, Ok |
179 | Standard_EXPORT ChFiDS_ErrorStatus StripeStatus (const Standard_Integer IC) const; |
180 | |
181 | //! Reset all results of compute and returns the algorythm |
182 | //! in the state of the last acquisition to |
183 | //! enable modification of contours or areas. |
184 | Standard_EXPORT void Reset(); |
185 | |
186 | //! Returns the Builder of topologic operations. |
187 | Standard_EXPORT Handle(TopOpeBRepBuild_HBuilder) Builder() const; |
188 | |
189 | //! Method, implemented in the inheritants, calculates |
190 | //! the elements of construction of the surface (fillet or |
191 | //! chamfer). |
192 | Standard_EXPORT Standard_Boolean SplitKPart (const Handle(ChFiDS_SurfData)& Data, ChFiDS_SequenceOfSurfData& SetData, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Iedge, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(Adaptor3d_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, Standard_Boolean& Intf, Standard_Boolean& Intl); |
193 | |
dde68833 |
194 | Standard_EXPORT Standard_Boolean PerformTwoCornerbyInter (const Standard_Integer Index); |
42cf5bc1 |
195 | |
196 | |
197 | |
198 | |
199 | protected: |
200 | |
201 | |
202 | Standard_EXPORT ChFi3d_Builder(const TopoDS_Shape& S, const Standard_Real Ta); |
203 | |
204 | Standard_EXPORT virtual void SimulKPart (const Handle(ChFiDS_SurfData)& SD) const = 0; |
205 | |
dde68833 |
206 | Standard_EXPORT virtual Standard_Boolean SimulSurf (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecOnS1, const Standard_Boolean RecOnS2, const math_Vector& Soldep, Standard_Integer& Intf, Standard_Integer& Intl) = 0; |
42cf5bc1 |
207 | |
208 | Standard_EXPORT virtual void SimulSurf (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HCurve2d)& PC1, const Handle(BRepAdaptor_HSurface)& Sref1, const Handle(BRepAdaptor_HCurve2d)& PCref1, Standard_Boolean& Decroch1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const TopAbs_Orientation Or2, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP, const Standard_Boolean RecS, const Standard_Boolean RecRst, const math_Vector& Soldep); |
209 | |
210 | Standard_EXPORT virtual void SimulSurf (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const TopAbs_Orientation Or1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const Handle(BRepAdaptor_HCurve2d)& PC2, const Handle(BRepAdaptor_HSurface)& Sref2, const Handle(BRepAdaptor_HCurve2d)& PCref2, Standard_Boolean& Decroch2, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP, const Standard_Boolean RecS, const Standard_Boolean RecRst, const math_Vector& Soldep); |
211 | |
212 | Standard_EXPORT virtual void SimulSurf (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HCurve2d)& PC1, const Handle(BRepAdaptor_HSurface)& Sref1, const Handle(BRepAdaptor_HCurve2d)& PCref1, Standard_Boolean& Decroch1, const TopAbs_Orientation Or1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const Handle(BRepAdaptor_HCurve2d)& PC2, const Handle(BRepAdaptor_HSurface)& Sref2, const Handle(BRepAdaptor_HCurve2d)& PCref2, Standard_Boolean& Decroch2, const TopAbs_Orientation Or2, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP1, const Standard_Boolean RecRst1, const Standard_Boolean RecP2, const Standard_Boolean RecRst2, const math_Vector& Soldep); |
213 | |
214 | Standard_EXPORT Standard_Boolean SimulData (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& Guide, Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(Adaptor3d_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, Blend_Function& Func, Blend_FuncInv& FInv, const Standard_Real PFirst, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const math_Vector& Soldep, const Standard_Integer NbSecMin, const Standard_Boolean RecOnS1 = Standard_False, const Standard_Boolean RecOnS2 = Standard_False); |
215 | |
216 | Standard_EXPORT Standard_Boolean SimulData (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& HGuide, Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(Adaptor3d_HSurface)& S2, const Handle(Adaptor2d_HCurve2d)& PC2, const Handle(Adaptor3d_TopolTool)& I2, Standard_Boolean& Decroch, Blend_SurfRstFunction& Func, Blend_FuncInv& FInv, Blend_SurfPointFuncInv& FInvP, Blend_SurfCurvFuncInv& FInvC, const Standard_Real PFirst, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const math_Vector& Soldep, const Standard_Integer NbSecMin, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP, const Standard_Boolean RecS, const Standard_Boolean RecRst); |
217 | |
218 | Standard_EXPORT Standard_Boolean SimulData (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& HGuide, Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor2d_HCurve2d)& PC1, const Handle(Adaptor3d_TopolTool)& I1, Standard_Boolean& Decroch1, const Handle(Adaptor3d_HSurface)& S2, const Handle(Adaptor2d_HCurve2d)& PC2, const Handle(Adaptor3d_TopolTool)& I2, Standard_Boolean& Decroch2, Blend_RstRstFunction& Func, Blend_SurfCurvFuncInv& FInv1, Blend_CurvPointFuncInv& FInvP1, Blend_SurfCurvFuncInv& FInv2, Blend_CurvPointFuncInv& FInvP2, const Standard_Real PFirst, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const math_Vector& Soldep, const Standard_Integer NbSecMin, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP1, const Standard_Boolean RecRst1, const Standard_Boolean RecP2, const Standard_Boolean RecRst2); |
219 | |
220 | Standard_EXPORT virtual void SetRegul() = 0; |
221 | |
222 | Standard_EXPORT Standard_Boolean PerformElement (const Handle(ChFiDS_Spine)& CElement); |
223 | |
224 | Standard_EXPORT void PerformExtremity (const Handle(ChFiDS_Spine)& CElement); |
225 | |
226 | Standard_EXPORT void PerformSetOfSurf (Handle(ChFiDS_Stripe)& S, const Standard_Boolean Simul = Standard_False); |
227 | |
228 | Standard_EXPORT void PerformSetOfKPart (Handle(ChFiDS_Stripe)& S, const Standard_Boolean Simul = Standard_False); |
229 | |
230 | Standard_EXPORT void PerformSetOfKGen (Handle(ChFiDS_Stripe)& S, const Standard_Boolean Simul = Standard_False); |
231 | |
232 | Standard_EXPORT void Trunc (const Handle(ChFiDS_SurfData)& SD, const Handle(ChFiDS_Spine)& Spine, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_HSurface)& S2, const Standard_Integer iedge, const Standard_Boolean isfirst, const Standard_Integer cntlFiOnS); |
233 | |
dde68833 |
234 | Standard_EXPORT void CallPerformSurf (Handle(ChFiDS_Stripe)& Stripe, const Standard_Boolean Simul, ChFiDS_SequenceOfSurfData& SeqSD, Handle(ChFiDS_SurfData)& SD, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Handle(BRepAdaptor_HSurface)& HS1, const Handle(BRepAdaptor_HSurface)& HS3, const gp_Pnt2d& P1, const gp_Pnt2d& P3, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HSurface)& HS2, const Handle(BRepAdaptor_HSurface)& HS4, const gp_Pnt2d& P2, const gp_Pnt2d& P4, const Handle(Adaptor3d_TopolTool)& I2, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecOnS1, const Standard_Boolean RecOnS2, math_Vector& Soldep, Standard_Integer& Intf, Standard_Integer& Intl, Handle(BRepAdaptor_HSurface)& Surf1, Handle(BRepAdaptor_HSurface)& Surf2); |
42cf5bc1 |
235 | |
236 | //! Method, implemented in the inheritants, calculating |
237 | //! elements of construction of the surface (fillet or |
238 | //! chamfer). |
dde68833 |
239 | Standard_EXPORT virtual Standard_Boolean PerformSurf (ChFiDS_SequenceOfSurfData& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecOnS1, const Standard_Boolean RecOnS2, const math_Vector& Soldep, Standard_Integer& Intf, Standard_Integer& Intl) = 0; |
42cf5bc1 |
240 | |
241 | //! Method, implemented in inheritants, calculates |
242 | //! the elements of construction of the surface (fillet |
243 | //! or chamfer) contact edge/face. |
244 | Standard_EXPORT virtual void PerformSurf (ChFiDS_SequenceOfSurfData& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HCurve2d)& PC1, const Handle(BRepAdaptor_HSurface)& Sref1, const Handle(BRepAdaptor_HCurve2d)& PCref1, Standard_Boolean& Decroch1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const TopAbs_Orientation Or2, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP, const Standard_Boolean RecS, const Standard_Boolean RecRst, const math_Vector& Soldep); |
245 | |
246 | //! Method, implemented in inheritants, calculates |
247 | //! the elements of construction of the surface (fillet |
248 | //! or chamfer) contact edge/face. |
249 | Standard_EXPORT virtual void PerformSurf (ChFiDS_SequenceOfSurfData& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const TopAbs_Orientation Or1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const Handle(BRepAdaptor_HCurve2d)& PC2, const Handle(BRepAdaptor_HSurface)& Sref2, const Handle(BRepAdaptor_HCurve2d)& PCref2, Standard_Boolean& Decroch2, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP, const Standard_Boolean RecS, const Standard_Boolean RecRst, const math_Vector& Soldep); |
250 | |
251 | //! Method, implemented in inheritants, calculates |
252 | //! the elements of construction of the surface (fillet |
253 | //! or chamfer) contact edge/edge. |
254 | Standard_EXPORT virtual void PerformSurf (ChFiDS_SequenceOfSurfData& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HCurve2d)& PC1, const Handle(BRepAdaptor_HSurface)& Sref1, const Handle(BRepAdaptor_HCurve2d)& PCref1, Standard_Boolean& Decroch1, const TopAbs_Orientation Or1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const Handle(BRepAdaptor_HCurve2d)& PC2, const Handle(BRepAdaptor_HSurface)& Sref2, const Handle(BRepAdaptor_HCurve2d)& PCref2, Standard_Boolean& Decroch2, const TopAbs_Orientation Or2, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP1, const Standard_Boolean RecRst1, const Standard_Boolean RecP2, const Standard_Boolean RecRst2, const math_Vector& Soldep); |
255 | |
256 | Standard_EXPORT virtual void PerformTwoCorner (const Standard_Integer Index) = 0; |
257 | |
258 | Standard_EXPORT virtual void PerformThreeCorner (const Standard_Integer Index) = 0; |
259 | |
260 | Standard_EXPORT void PerformMoreThreeCorner (const Standard_Integer Index, const Standard_Integer nbcourb); |
261 | |
262 | Standard_EXPORT virtual void ExtentOneCorner (const TopoDS_Vertex& V, const Handle(ChFiDS_Stripe)& S) = 0; |
263 | |
264 | Standard_EXPORT virtual void ExtentTwoCorner (const TopoDS_Vertex& V, const ChFiDS_ListOfStripe& LS) = 0; |
265 | |
266 | Standard_EXPORT virtual void ExtentThreeCorner (const TopoDS_Vertex& V, const ChFiDS_ListOfStripe& LS) = 0; |
267 | |
268 | Standard_EXPORT virtual Standard_Boolean PerformFirstSection (const Handle(ChFiDS_Spine)& S, const Handle(ChFiDS_HElSpine)& HGuide, const Standard_Integer Choix, Handle(BRepAdaptor_HSurface)& S1, Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I1, const Handle(Adaptor3d_TopolTool)& I2, const Standard_Real Par, math_Vector& SolDep, TopAbs_State& Pos1, TopAbs_State& Pos2) const = 0; |
269 | |
270 | Standard_EXPORT Standard_Boolean SearchFace (const Handle(ChFiDS_Spine)& Sp, const ChFiDS_CommonPoint& Pc, const TopoDS_Face& FRef, TopoDS_Face& FVoi) const; |
271 | |
272 | Standard_EXPORT Standard_Boolean StripeOrientations (const Handle(ChFiDS_Spine)& Sp, TopAbs_Orientation& Or1, TopAbs_Orientation& Or2, Standard_Integer& ChoixConge) const; |
273 | |
274 | //! Calculates a Line of contact face/face. |
dde68833 |
275 | Standard_EXPORT Standard_Boolean ComputeData (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(Adaptor3d_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, Blend_Function& Func, Blend_FuncInv& FInv, const Standard_Real PFirst, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const math_Vector& Soldep, Standard_Integer& Intf, Standard_Integer& Intl, Standard_Boolean& Gd1, Standard_Boolean& Gd2, Standard_Boolean& Gf1, Standard_Boolean& Gf2, const Standard_Boolean RecOnS1 = Standard_False, const Standard_Boolean RecOnS2 = Standard_False); |
42cf5bc1 |
276 | |
277 | //! Calculates a Line of contact edge/face. |
278 | Standard_EXPORT Standard_Boolean ComputeData (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& HGuide, Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(Adaptor3d_HSurface)& S2, const Handle(Adaptor2d_HCurve2d)& PC2, const Handle(Adaptor3d_TopolTool)& I2, Standard_Boolean& Decroch, Blend_SurfRstFunction& Func, Blend_FuncInv& FInv, Blend_SurfPointFuncInv& FInvP, Blend_SurfCurvFuncInv& FInvC, const Standard_Real PFirst, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const math_Vector& Soldep, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP, const Standard_Boolean RecS, const Standard_Boolean RecRst); |
279 | |
280 | //! Calculates a Line of contact edge/edge. |
281 | Standard_EXPORT Standard_Boolean ComputeData (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& HGuide, Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor2d_HCurve2d)& PC1, const Handle(Adaptor3d_TopolTool)& I1, Standard_Boolean& Decroch1, const Handle(Adaptor3d_HSurface)& S2, const Handle(Adaptor2d_HCurve2d)& PC2, const Handle(Adaptor3d_TopolTool)& I2, Standard_Boolean& Decroch2, Blend_RstRstFunction& Func, Blend_SurfCurvFuncInv& FInv1, Blend_CurvPointFuncInv& FInvP1, Blend_SurfCurvFuncInv& FInv2, Blend_CurvPointFuncInv& FInvP2, const Standard_Real PFirst, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const math_Vector& Soldep, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP1, const Standard_Boolean RecRst1, const Standard_Boolean RecP2, const Standard_Boolean RecRst2); |
282 | |
283 | Standard_EXPORT Standard_Boolean CompleteData (Handle(ChFiDS_SurfData)& Data, Blend_Function& Func, Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_HSurface)& S2, const TopAbs_Orientation Or1, const Standard_Boolean Gd1, const Standard_Boolean Gd2, const Standard_Boolean Gf1, const Standard_Boolean Gf2, const Standard_Boolean Reversed = Standard_False); |
284 | |
285 | Standard_EXPORT Standard_Boolean CompleteData (Handle(ChFiDS_SurfData)& Data, Blend_SurfRstFunction& Func, Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_HSurface)& S2, const TopAbs_Orientation Or, const Standard_Boolean Reversed); |
286 | |
287 | Standard_EXPORT Standard_Boolean CompleteData (Handle(ChFiDS_SurfData)& Data, Blend_RstRstFunction& Func, Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_HSurface)& S2, const TopAbs_Orientation Or); |
288 | |
289 | Standard_EXPORT Standard_Boolean StoreData (Handle(ChFiDS_SurfData)& Data, const AppBlend_Approx& Approx, const Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_HSurface)& S2, const TopAbs_Orientation Or1, const Standard_Boolean Gd1, const Standard_Boolean Gd2, const Standard_Boolean Gf1, const Standard_Boolean Gf2, const Standard_Boolean Reversed = Standard_False); |
290 | |
291 | Standard_EXPORT Standard_Boolean CompleteData (Handle(ChFiDS_SurfData)& Data, const Handle(Geom_Surface)& Surfcoin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Geom2d_Curve)& PC1, const Handle(Adaptor3d_HSurface)& S2, const Handle(Geom2d_Curve)& PC2, const TopAbs_Orientation Or, const Standard_Boolean On1, const Standard_Boolean Gd1, const Standard_Boolean Gd2, const Standard_Boolean Gf1, const Standard_Boolean Gf2); |
292 | |
293 | |
294 | Standard_Real tolappangle; |
295 | Standard_Real tolesp; |
296 | Standard_Real tol2d; |
297 | Standard_Real tolapp3d; |
298 | Standard_Real tolapp2d; |
299 | Standard_Real fleche; |
300 | GeomAbs_Shape myConti; |
301 | ChFiDS_Map myEFMap; |
302 | ChFiDS_Map myESoMap; |
303 | ChFiDS_Map myEShMap; |
304 | ChFiDS_Map myVFMap; |
305 | ChFiDS_Map myVEMap; |
306 | Handle(TopOpeBRepDS_HDataStructure) myDS; |
307 | Handle(TopOpeBRepBuild_HBuilder) myCoup; |
308 | ChFiDS_ListOfStripe myListStripe; |
309 | ChFiDS_StripeMap myVDataMap; |
310 | ChFiDS_Regularities myRegul; |
311 | ChFiDS_ListOfStripe badstripes; |
312 | TopTools_ListOfShape badvertices; |
313 | TopTools_DataMapOfShapeListOfInteger myEVIMap; |
314 | Standard_Boolean done; |
315 | Standard_Boolean hasresult; |
316 | |
317 | |
318 | private: |
319 | |
320 | |
321 | Standard_EXPORT Standard_Boolean FaceTangency (const TopoDS_Edge& E0, const TopoDS_Edge& E1, const TopoDS_Vertex& V) const; |
322 | |
323 | Standard_EXPORT void PerformSetOfSurfOnElSpine (const Handle(ChFiDS_HElSpine)& ES, Handle(ChFiDS_Stripe)& St, Handle(BRepTopAdaptor_TopolTool)& It1, Handle(BRepTopAdaptor_TopolTool)& It2, const Standard_Boolean Simul = Standard_False); |
324 | |
325 | Standard_EXPORT void PerformFilletOnVertex (const Standard_Integer Index); |
326 | |
327 | Standard_EXPORT void PerformSingularCorner (const Standard_Integer Index); |
328 | |
329 | Standard_EXPORT void PerformOneCorner (const Standard_Integer Index, const Standard_Boolean PrepareOnSame = Standard_False); |
330 | |
331 | Standard_EXPORT void IntersectMoreCorner (const Standard_Integer Index); |
332 | |
333 | Standard_EXPORT void PerformMoreSurfdata (const Standard_Integer Index); |
334 | |
335 | Standard_EXPORT void PerformIntersectionAtEnd (const Standard_Integer Index); |
336 | |
337 | Standard_EXPORT void ExtentAnalyse(); |
338 | |
339 | Standard_EXPORT Standard_Boolean FindFace (const TopoDS_Vertex& V, const ChFiDS_CommonPoint& P1, const ChFiDS_CommonPoint& P2, TopoDS_Face& Fv) const; |
340 | |
341 | Standard_EXPORT Standard_Boolean FindFace (const TopoDS_Vertex& V, const ChFiDS_CommonPoint& P1, const ChFiDS_CommonPoint& P2, TopoDS_Face& Fv, const TopoDS_Face& Favoid) const; |
342 | |
343 | Standard_EXPORT Standard_Boolean MoreSurfdata (const Standard_Integer Index) const; |
344 | |
345 | Standard_EXPORT Standard_Boolean StartSol (const Handle(ChFiDS_Spine)& Spine, Handle(BRepAdaptor_HSurface)& HS, gp_Pnt2d& P, Handle(BRepAdaptor_HCurve2d)& HC, Standard_Real& W, const Handle(ChFiDS_SurfData)& SD, const Standard_Boolean isFirst, const Standard_Integer OnS, Handle(BRepAdaptor_HSurface)& HSref, Handle(BRepAdaptor_HCurve2d)& HCref, Standard_Boolean& RecP, Standard_Boolean& RecS, Standard_Boolean& RecRst, Standard_Boolean& C1Obst, Handle(BRepAdaptor_HSurface)& HSbis, gp_Pnt2d& Pbis, const Standard_Boolean Decroch, const TopoDS_Vertex& Vref) const; |
346 | |
347 | Standard_EXPORT void StartSol (const Handle(ChFiDS_Stripe)& S, const Handle(ChFiDS_HElSpine)& HGuide, Handle(BRepAdaptor_HSurface)& HS1, Handle(BRepAdaptor_HSurface)& HS2, Handle(BRepTopAdaptor_TopolTool)& I1, Handle(BRepTopAdaptor_TopolTool)& I2, gp_Pnt2d& P1, gp_Pnt2d& P2, Standard_Real& First) const; |
348 | |
349 | Standard_EXPORT void ConexFaces (const Handle(ChFiDS_Spine)& Sp, const Standard_Integer IEdge, const Standard_Integer RefChoix, Handle(BRepAdaptor_HSurface)& HS1, Handle(BRepAdaptor_HSurface)& HS2) const; |
350 | |
351 | |
352 | TopoDS_Shape myShape; |
353 | Standard_Real angular; |
354 | TopTools_ListOfShape myGenerated; |
355 | TopoDS_Shape myShapeResult; |
356 | TopoDS_Shape badShape; |
357 | |
358 | |
359 | }; |
360 | |
361 | |
362 | |
363 | |
364 | |
365 | |
366 | |
367 | #endif // _ChFi3d_Builder_HeaderFile |