0024023: Revamp the OCCT Handle -- ambiguity
[occt.git] / src / BRepBlend / BRepBlend_RstRstLineBuilder.cdl
CommitLineData
b311480e 1-- Created on: 1997-01-23
2-- Created by: Laurent BOURESCHE
3-- Copyright (c) 1997-1999 Matra Datavision
973c2be1 4-- Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 5--
973c2be1 6-- This file is part of Open CASCADE Technology software library.
b311480e 7--
d5f74e42 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
973c2be1 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.
b311480e 13--
973c2be1 14-- Alternatively, this file may be used under the terms of Open CASCADE
15-- commercial license or contractual agreement.
7fd59977 16
17class RstRstLineBuilder from BRepBlend
18
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.
22 --
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.
28 --
29 -- Thus this pseudo path necessitates 3 criteria of
30 -- regrouping :
31 --
32 -- 1) exit of the domain of the curve
33 --
34 -- 2) exit of the domain of the surface
35 --
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.
ff8178ef 39 --
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
47 -- is f(t) oriented.
7fd59977 48
49uses Point from Blend,
50 Status from Blend,
51 DecrochStatus from Blend,
52 RstRstFunction from Blend,
53 FuncInv from Blend,
54 SurfCurvFuncInv from Blend,
55 CurvPointFuncInv from Blend,
56 Vector from math,
57 Matrix from math,
58 State from TopAbs,
59 Pnt from gp,
60 Pnt2d from gp,
61 Vec from gp,
62 Vec2d from gp,
63 HArray1OfReal from TColStd,
64 Transition from IntSurf,
65 HVertex from Adaptor3d,
66 HSurface from Adaptor3d,
67 HCurve2d from Adaptor2d,
68 TopolTool from Adaptor3d,
69 Line from BRepBlend,
70 Extremity from BRepBlend
71
72is
73
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;
81
82 Perform(me : in out;
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)
96 is static;
97
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
116 is static;
117
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)
125
126 returns Boolean from Standard
127 is static;
128
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)
136 is static private;
137
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
145 is static private;
146
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
154 is static private;
155
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
162 is static private;
163
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
170 is static private;
171
172 IsDone(me)
173 returns Boolean from Standard
174 ---C++: inline
175 is static;
176
177 Line(me)
178 returns Line from BRepBlend
179 ---C++: inline
180 ---C++: return const&
181 is static;
182
183 Decroch1Start(me)
184 returns Boolean from Standard
185 ---C++: inline
186 is static;
187
188 Decroch1End(me)
189 returns Boolean from Standard
190 ---C++: inline
191 is static;
192
193 Decroch2Start(me)
194 returns Boolean from Standard
195 ---C++: inline
196 is static;
197
198 Decroch2End(me)
199 returns Boolean from Standard
200 ---C++: inline
201 is static;
202
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)
208 is static private;
209
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)
217 is static private;
218
219 CheckDeflectionOnRst1(me : in out;
220 CurPoint : Point from Blend)
221 returns Status from Blend
222 is static private;
223
224 CheckDeflectionOnRst2(me : in out;
225 CurPoint : Point from Blend)
226 returns Status from Blend
227 is static private;
228
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
234 is static private;
235
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
242 is static private;
243
244fields
245
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;
255
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;
268
269end RstRstLineBuilder from BRepBlend;
270
271
272
273