1 -- Created on: 1997-01-23
2 -- Created by: Laurent BOURESCHE
3 -- Copyright (c) 1997-1999 Matra Datavision
4 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
6 -- This file is part of Open CASCADE Technology software library.
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.
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
17 class RstRstLineBuilder from BRepBlend
19 ---Purpose: This class processes the data resulting from
20 -- Blend_CSWalking but it takes in consideration the Surface
21 -- supporting the curve to detect the breakpoint.
23 -- As a result, the criteria of distribution of
24 -- points on the line become more flexible because it
25 -- should calculate values approached
26 -- by an approximation of continued functions based on the
27 -- Blend_RstRstFunction.
29 -- Thus this pseudo path necessitates 3 criteria of
32 -- 1) exit of the domain of the curve
34 -- 2) exit of the domain of the surface
36 -- 3) stall as there is a solution of problem
37 -- surf/surf within the domain of the surface
38 -- of support of the restriction.
40 -- Construction of a BRepBlend_Line between two pcurves
41 -- from an approached starting solution. The output
42 -- entries of this builder are of the same nature
43 -- as of a traditional walking, but the requirements
44 -- to the Line are not the same. If the determination of validity range is always
45 -- guaranteed, the criteria of correct repartition of sections
46 -- before smoothing are not respected. The resulting Line
49 uses Point from Blend,
51 DecrochStatus from Blend,
52 RstRstFunction from Blend,
54 SurfCurvFuncInv from Blend,
55 CurvPointFuncInv from Blend,
63 HArray1OfReal from TColStd,
64 Transition from IntSurf,
65 HVertex from Adaptor3d,
66 HSurface from Adaptor3d,
67 HCurve2d from Adaptor2d,
68 TopolTool from Adaptor3d,
70 Extremity from BRepBlend
74 Create(Surf1 : HSurface from Adaptor3d;
75 Rst1 : HCurve2d from Adaptor2d;
76 Domain1 : TopolTool from Adaptor3d;
77 Surf2 : HSurface from Adaptor3d;
78 Rst2 : HCurve2d from Adaptor2d;
79 Domain2 : TopolTool from Adaptor3d)
80 returns RstRstLineBuilder from BRepBlend;
83 Func : in out RstRstFunction from Blend;
84 Finv1 : in out SurfCurvFuncInv from Blend;
85 FinvP1 : in out CurvPointFuncInv from Blend;
86 Finv2 : in out SurfCurvFuncInv from Blend;
87 FinvP2 : in out CurvPointFuncInv from Blend;
88 Pdep : Real from Standard;
89 Pmax : Real from Standard;
90 MaxStep : Real from Standard;
91 TolGuide : Real from Standard;
92 Soldep : Vector from math;
93 Tolesp : Real from Standard;
94 Fleche : Real from Standard;
95 Appro : Boolean from Standard = Standard_False)
98 PerformFirstSection(me : in out;
99 Func : in out RstRstFunction from Blend;
100 Finv1 : in out SurfCurvFuncInv from Blend;
101 FinvP1 : in out CurvPointFuncInv from Blend;
102 Finv2 : in out SurfCurvFuncInv from Blend;
103 FinvP2 : in out CurvPointFuncInv from Blend;
104 Pdep : Real from Standard;
105 Pmax : Real from Standard;
106 Soldep : Vector from math;
107 Tolesp : Real from Standard;
108 TolGuide : Real from Standard;
109 RecRst1 : Boolean from Standard;
110 RecP1 : Boolean from Standard;
111 RecRst2 : Boolean from Standard;
112 RecP2 : Boolean from Standard;
113 Psol : out Real from Standard;
114 ParSol : out Vector from math)
115 returns Boolean from Standard
118 Complete(me : in out;
119 Func : in out RstRstFunction from Blend;
120 Finv1 : in out SurfCurvFuncInv from Blend;
121 FinvP1 : in out CurvPointFuncInv from Blend;
122 Finv2 : in out SurfCurvFuncInv from Blend;
123 FinvP2 : in out CurvPointFuncInv from Blend;
124 Pmin : Real from Standard)
126 returns Boolean from Standard
129 InternalPerform (me : in out;
130 Func : in out RstRstFunction from Blend;
131 Finv1 : in out SurfCurvFuncInv from Blend;
132 FinvP1 : in out CurvPointFuncInv from Blend;
133 Finv2 : in out SurfCurvFuncInv from Blend;
134 FinvP2 : in out CurvPointFuncInv from Blend;
135 Bound : Real from Standard)
138 Recadre1(me : in out;
139 Func : in out RstRstFunction from Blend;
140 Finv : in out SurfCurvFuncInv from Blend;
141 Solinv : out Vector from math;
142 IsVtx : out Boolean from Standard;
143 Vtx : out HVertex from Adaptor3d)
144 returns Boolean from Standard
147 Recadre2(me : in out;
148 Func : in out RstRstFunction from Blend;
149 Finv : in out SurfCurvFuncInv from Blend;
150 Solinv : out Vector from math;
151 IsVtx : out Boolean from Standard;
152 Vtx : out HVertex from Adaptor3d)
153 returns Boolean from Standard
156 Recadre1(me : in out;
157 FinvP : in out CurvPointFuncInv from Blend;
158 Solinv : out Vector from math;
159 IsVtx : out Boolean from Standard;
160 Vtx : out HVertex from Adaptor3d)
161 returns Boolean from Standard
164 Recadre2(me : in out;
165 FinvP : in out CurvPointFuncInv from Blend;
166 Solinv : out Vector from math;
167 IsVtx : out Boolean from Standard;
168 Vtx : out HVertex from Adaptor3d)
169 returns Boolean from Standard
173 returns Boolean from Standard
178 returns Line from BRepBlend
180 ---C++: return const&
184 returns Boolean from Standard
189 returns Boolean from Standard
194 returns Boolean from Standard
199 returns Boolean from Standard
203 Transition(me : in out;
204 OnFirst : Boolean from Standard;
205 Arc : HCurve2d from Adaptor2d;
206 Param : Real from Standard;
207 TLine,TArc : out Transition from IntSurf)
210 MakeExtremity(me : in out;
211 Extrem : in out Extremity from BRepBlend;
212 OnFirst : Boolean from Standard;
213 Arc : HCurve2d from Adaptor2d;
214 Param : Real from Standard;
215 IsVtx : Boolean from Standard;
216 Vtx : HVertex from Adaptor3d)
219 CheckDeflectionOnRst1(me : in out;
220 CurPoint : Point from Blend)
221 returns Status from Blend
224 CheckDeflectionOnRst2(me : in out;
225 CurPoint : Point from Blend)
226 returns Status from Blend
229 TestArret(me : in out;
230 Func : in out RstRstFunction from Blend;
231 TestDeflection : Boolean from Standard;
232 State : Status from Blend)
233 returns Status from Blend
236 CheckInside(me : in out;
237 Func : in out RstRstFunction from Blend;
238 SituOnC1 : out State from TopAbs;
239 SituOnC2 : out State from TopAbs;
240 Decroch : out DecrochStatus from Blend)
241 returns Boolean from Standard
246 done : Boolean from Standard;
247 line : Line from BRepBlend;
248 sol : Vector from math;
249 surf1 : HSurface from Adaptor3d;
250 domain1 : TopolTool from Adaptor3d;
251 surf2 : HSurface from Adaptor3d;
252 domain2 : TopolTool from Adaptor3d;
253 rst1 : HCurve2d from Adaptor2d;
254 rst2 : HCurve2d from Adaptor2d;
256 tolesp : Real from Standard;
257 tolgui : Real from Standard;
258 pasmax : Real from Standard;
259 fleche : Real from Standard;
260 param : Real from Standard;
261 previousP : Point from Blend;
262 rebrou : Boolean from Standard;
263 iscomplete : Boolean from Standard;
264 comptra : Boolean from Standard;
265 sens : Real from Standard;
266 decrochdeb : DecrochStatus from Blend;
267 decrochfin : DecrochStatus from Blend;
269 end RstRstLineBuilder from BRepBlend;