1 -- Created on: 1997-01-23
2 -- Created by: Laurent BOURESCHE
3 -- Copyright (c) 1997-1999 Matra Datavision
4 -- Copyright (c) 1999-2012 OPEN CASCADE SAS
6 -- The content of this file is subject to the Open CASCADE Technology Public
7 -- License Version 6.5 (the "License"). You may not use the content of this file
8 -- except in compliance with the License. Please obtain a copy of the License
9 -- at http://www.opencascade.org and read it completely before using this file.
11 -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
14 -- The Original Code and all software distributed under the License is
15 -- distributed on an "AS IS" basis, without warranty of any kind, and the
16 -- Initial Developer hereby disclaims all such warranties, including without
17 -- limitation, any warranties of merchantability, fitness for a particular
18 -- purpose or non-infringement. Please see the License for the specific terms
19 -- and conditions governing the rights and limitations under the License.
22 class SurfRstLineBuilder from BRepBlend
24 ---Purpose: This class processes data resulting from
25 -- Blend_CSWalking taking in consideration the Surface
26 -- supporting the curve to detect the breakpoint.
28 -- The criteria of distribution of points on the line are detailed
29 -- because it is to be used in the calculatuon of values approached
30 -- by an approximation of functions continued basing on
31 -- Blend_SurfRstFunction.
33 -- Thus this pseudo path necessitates 3 criteria of regrouping :
35 -- 1) exit of the domain of the curve
37 -- 2) exit of the domain of the surface
39 -- 3) stall as there is a solution to the problem
40 -- surf/surf within the domain of the surface
41 -- of support of the restriction.
43 uses Point from Blend,
45 SurfRstFunction from Blend,
47 SurfPointFuncInv from Blend,
48 SurfCurvFuncInv from Blend,
56 HArray1OfReal from TColStd,
57 Transition from IntSurf,
58 HVertex from Adaptor3d,
59 HSurface from Adaptor3d,
60 HCurve2d from Adaptor2d,
61 TopolTool from Adaptor3d,
63 Extremity from BRepBlend
67 Create(Surf1 : HSurface from Adaptor3d;
68 Domain1 : TopolTool from Adaptor3d;
69 Surf2 : HSurface from Adaptor3d;
70 Rst : HCurve2d from Adaptor2d;
71 Domain2 : TopolTool from Adaptor3d)
72 returns SurfRstLineBuilder from BRepBlend;
75 Func : in out SurfRstFunction from Blend;
76 Finv : in out FuncInv from Blend;
77 FinvP : in out SurfPointFuncInv from Blend;
78 FinvC : in out SurfCurvFuncInv 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 SurfRstFunction from Blend;
91 Finv : in out FuncInv from Blend;
92 FinvP : in out SurfPointFuncInv from Blend;
93 FinvC : in out SurfCurvFuncInv from Blend;
94 Pdep : Real from Standard;
95 Pmax : Real from Standard;
96 Soldep : Vector from math;
97 Tolesp : Real from Standard;
98 TolGuide : Real from Standard;
99 RecRst : Boolean from Standard;
100 RecP : Boolean from Standard;
101 RecS : Boolean from Standard;
102 Psol : out Real from Standard;
103 ParSol : out Vector from math)
104 returns Boolean from Standard
107 Complete(me : in out;
108 Func : in out SurfRstFunction from Blend;
109 Finv : in out FuncInv from Blend;
110 FinvP : in out SurfPointFuncInv from Blend;
111 FinvC : in out SurfCurvFuncInv from Blend;
112 Pmin : Real from Standard)
114 returns Boolean from Standard
117 InternalPerform (me : in out;
118 Func : in out SurfRstFunction from Blend;
119 Finv : in out FuncInv from Blend;
120 FinvP : in out SurfPointFuncInv from Blend;
121 FinvC : in out SurfCurvFuncInv from Blend;
122 Bound : Real from Standard)
125 ArcToRecadre(me : in out;
126 Sol : Vector from math;
128 pt2d, lastpt2d : out Pnt2d from gp;
133 FinvC : in out SurfCurvFuncInv from Blend;
134 Solinv : out Vector from math;
135 Arc : out HCurve2d from Adaptor2d;
136 IsVtx : out Boolean from Standard;
137 Vtx : out HVertex from Adaptor3d)
138 returns Boolean from Standard
142 Func : in out SurfRstFunction from Blend;
143 Finv : in out FuncInv from Blend;
144 Solinv : out Vector from math;
145 IsVtx : out Boolean from Standard;
146 Vtx : out HVertex from Adaptor3d)
147 returns Boolean from Standard
151 FinvP : in out SurfPointFuncInv from Blend;
152 Solinv : out Vector from math;
153 IsVtx : out Boolean from Standard;
154 Vtx : out HVertex from Adaptor3d)
155 returns Boolean from Standard
159 returns Boolean from Standard
164 returns Line from BRepBlend
166 ---C++: return const&
170 returns Boolean from Standard
175 returns Boolean from Standard
179 Transition(me : in out;
180 OnFirst : Boolean from Standard;
181 Arc : HCurve2d from Adaptor2d;
182 Param : Real from Standard;
183 TLine,TArc : out Transition from IntSurf)
186 MakeExtremity(me : in out;
187 Extrem : in out Extremity from BRepBlend;
188 OnFirst : Boolean from Standard;
189 Arc : HCurve2d from Adaptor2d;
190 Param : Real from Standard;
191 IsVtx : Boolean from Standard;
192 Vtx : HVertex from Adaptor3d)
195 CheckDeflectionOnSurf(me : in out;
196 CurPoint : Point from Blend)
197 returns Status from Blend
200 CheckDeflectionOnRst(me : in out;
201 CurPoint : Point from Blend)
202 returns Status from Blend
205 TestArret(me : in out;
206 Func : in out SurfRstFunction from Blend;
207 TestDeflection : Boolean from Standard;
208 State : Status from Blend)
209 returns Status from Blend
212 CheckInside(me : in out;
213 Func : in out SurfRstFunction from Blend;
214 SituOnC : out State from TopAbs;
215 SituOnS : out State from TopAbs;
216 Decroch : out Boolean from Standard)
217 returns Boolean from Standard
222 done : Boolean from Standard;
223 line : Line from BRepBlend;
224 sol : Vector from math;
225 surf1 : HSurface from Adaptor3d;
226 domain1 : TopolTool from Adaptor3d;
227 surf2 : HSurface from Adaptor3d;
228 rst : HCurve2d from Adaptor2d;
229 domain2 : TopolTool from Adaptor3d;
231 tolesp : Real from Standard;
232 tolgui : Real from Standard;
233 pasmax : Real from Standard;
234 fleche : Real from Standard;
235 param : Real from Standard;
236 previousP : Point from Blend;
237 rebrou : Boolean from Standard;
238 iscomplete : Boolean from Standard;
239 comptra : Boolean from Standard;
240 sens : Real from Standard;
241 decrochdeb : Boolean from Standard;
242 decrochfin : Boolean from Standard;
244 end SurfRstLineBuilder from BRepBlend;