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 uses Point from Blend,
42 DecrochStatus from Blend,
43 RstRstFunction from Blend,
45 SurfCurvFuncInv from Blend,
46 CurvPointFuncInv from Blend,
54 HArray1OfReal from TColStd,
55 Transition from IntSurf,
56 HVertex from Adaptor3d,
57 HSurface from Adaptor3d,
58 HCurve2d from Adaptor2d,
59 TopolTool from Adaptor3d,
61 Extremity from BRepBlend
65 Create(Surf1 : HSurface from Adaptor3d;
66 Rst1 : HCurve2d from Adaptor2d;
67 Domain1 : TopolTool from Adaptor3d;
68 Surf2 : HSurface from Adaptor3d;
69 Rst2 : HCurve2d from Adaptor2d;
70 Domain2 : TopolTool from Adaptor3d)
71 returns RstRstLineBuilder from BRepBlend;
74 Func : in out RstRstFunction from Blend;
75 Finv1 : in out SurfCurvFuncInv from Blend;
76 FinvP1 : in out CurvPointFuncInv from Blend;
77 Finv2 : in out SurfCurvFuncInv from Blend;
78 FinvP2 : in out CurvPointFuncInv from Blend;
79 Pdep : Real from Standard;
80 Pmax : Real from Standard;
81 MaxStep : Real from Standard;
82 TolGuide : Real from Standard;
83 Soldep : Vector from math;
84 Tolesp : Real from Standard;
85 Fleche : Real from Standard;
86 Appro : Boolean from Standard = Standard_False)
89 PerformFirstSection(me : in out;
90 Func : in out RstRstFunction from Blend;
91 Finv1 : in out SurfCurvFuncInv from Blend;
92 FinvP1 : in out CurvPointFuncInv from Blend;
93 Finv2 : in out SurfCurvFuncInv from Blend;
94 FinvP2 : in out CurvPointFuncInv from Blend;
95 Pdep : Real from Standard;
96 Pmax : Real from Standard;
97 Soldep : Vector from math;
98 Tolesp : Real from Standard;
99 TolGuide : Real from Standard;
100 RecRst1 : Boolean from Standard;
101 RecP1 : Boolean from Standard;
102 RecRst2 : Boolean from Standard;
103 RecP2 : Boolean from Standard;
104 Psol : out Real from Standard;
105 ParSol : out Vector from math)
106 returns Boolean from Standard
109 Complete(me : in out;
110 Func : in out RstRstFunction from Blend;
111 Finv1 : in out SurfCurvFuncInv from Blend;
112 FinvP1 : in out CurvPointFuncInv from Blend;
113 Finv2 : in out SurfCurvFuncInv from Blend;
114 FinvP2 : in out CurvPointFuncInv from Blend;
115 Pmin : Real from Standard)
117 returns Boolean from Standard
120 InternalPerform (me : in out;
121 Func : in out RstRstFunction from Blend;
122 Finv1 : in out SurfCurvFuncInv from Blend;
123 FinvP1 : in out CurvPointFuncInv from Blend;
124 Finv2 : in out SurfCurvFuncInv from Blend;
125 FinvP2 : in out CurvPointFuncInv from Blend;
126 Bound : Real from Standard)
129 Recadre1(me : in out;
130 Func : in out RstRstFunction from Blend;
131 Finv : in out SurfCurvFuncInv from Blend;
132 Solinv : out Vector from math;
133 IsVtx : out Boolean from Standard;
134 Vtx : out HVertex from Adaptor3d)
135 returns Boolean from Standard
138 Recadre2(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 Recadre1(me : in out;
148 FinvP : in out CurvPointFuncInv from Blend;
149 Solinv : out Vector from math;
150 IsVtx : out Boolean from Standard;
151 Vtx : out HVertex from Adaptor3d)
152 returns Boolean from Standard
155 Recadre2(me : in out;
156 FinvP : in out CurvPointFuncInv from Blend;
157 Solinv : out Vector from math;
158 IsVtx : out Boolean from Standard;
159 Vtx : out HVertex from Adaptor3d)
160 returns Boolean from Standard
164 returns Boolean from Standard
169 returns Line from BRepBlend
171 ---C++: return const&
175 returns Boolean from Standard
180 returns Boolean from Standard
185 returns Boolean from Standard
190 returns Boolean from Standard
194 Transition(me : in out;
195 OnFirst : Boolean from Standard;
196 Arc : HCurve2d from Adaptor2d;
197 Param : Real from Standard;
198 TLine,TArc : out Transition from IntSurf)
201 MakeExtremity(me : in out;
202 Extrem : in out Extremity from BRepBlend;
203 OnFirst : Boolean from Standard;
204 Arc : HCurve2d from Adaptor2d;
205 Param : Real from Standard;
206 IsVtx : Boolean from Standard;
207 Vtx : HVertex from Adaptor3d)
210 CheckDeflectionOnRst1(me : in out;
211 CurPoint : Point from Blend)
212 returns Status from Blend
215 CheckDeflectionOnRst2(me : in out;
216 CurPoint : Point from Blend)
217 returns Status from Blend
220 TestArret(me : in out;
221 Func : in out RstRstFunction from Blend;
222 TestDeflection : Boolean from Standard;
223 State : Status from Blend)
224 returns Status from Blend
227 CheckInside(me : in out;
228 Func : in out RstRstFunction from Blend;
229 SituOnC1 : out State from TopAbs;
230 SituOnC2 : out State from TopAbs;
231 Decroch : out DecrochStatus from Blend)
232 returns Boolean from Standard
237 done : Boolean from Standard;
238 line : Line from BRepBlend;
239 sol : Vector from math;
240 surf1 : HSurface from Adaptor3d;
241 domain1 : TopolTool from Adaptor3d;
242 surf2 : HSurface from Adaptor3d;
243 domain2 : TopolTool from Adaptor3d;
244 rst1 : HCurve2d from Adaptor2d;
245 rst2 : HCurve2d from Adaptor2d;
247 tolesp : Real from Standard;
248 tolgui : Real from Standard;
249 pasmax : Real from Standard;
250 fleche : Real from Standard;
251 param : Real from Standard;
252 previousP : Point from Blend;
253 rebrou : Boolean from Standard;
254 iscomplete : Boolean from Standard;
255 comptra : Boolean from Standard;
256 sens : Real from Standard;
257 decrochdeb : DecrochStatus from Blend;
258 decrochfin : DecrochStatus from Blend;
260 end RstRstLineBuilder from BRepBlend;