b311480e |
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 |
5 | -- |
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. |
10 | -- |
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. |
13 | -- |
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. |
20 | |
7fd59977 |
21 | |
22 | class RstRstLineBuilder from BRepBlend |
23 | |
24 | ---Purpose: This class processes the data resulting from |
25 | -- Blend_CSWalking but it takes in consideration the Surface |
26 | -- supporting the curve to detect the breakpoint. |
27 | -- |
28 | -- As a result, the criteria of distribution of |
29 | -- points on the line become more flexible because it |
30 | -- should calculate values approached |
31 | -- by an approximation of continued functions based on the |
32 | -- Blend_RstRstFunction. |
33 | -- |
34 | -- Thus this pseudo path necessitates 3 criteria of |
35 | -- regrouping : |
36 | -- |
37 | -- 1) exit of the domain of the curve |
38 | -- |
39 | -- 2) exit of the domain of the surface |
40 | -- |
41 | -- 3) stall as there is a solution of problem |
42 | -- surf/surf within the domain of the surface |
43 | -- of support of the restriction. |
44 | |
45 | uses Point from Blend, |
46 | Status from Blend, |
47 | DecrochStatus from Blend, |
48 | RstRstFunction from Blend, |
49 | FuncInv from Blend, |
50 | SurfCurvFuncInv from Blend, |
51 | CurvPointFuncInv from Blend, |
52 | Vector from math, |
53 | Matrix from math, |
54 | State from TopAbs, |
55 | Pnt from gp, |
56 | Pnt2d from gp, |
57 | Vec from gp, |
58 | Vec2d from gp, |
59 | HArray1OfReal from TColStd, |
60 | Transition from IntSurf, |
61 | HVertex from Adaptor3d, |
62 | HSurface from Adaptor3d, |
63 | HCurve2d from Adaptor2d, |
64 | TopolTool from Adaptor3d, |
65 | Line from BRepBlend, |
66 | Extremity from BRepBlend |
67 | |
68 | is |
69 | |
70 | Create(Surf1 : HSurface from Adaptor3d; |
71 | Rst1 : HCurve2d from Adaptor2d; |
72 | Domain1 : TopolTool from Adaptor3d; |
73 | Surf2 : HSurface from Adaptor3d; |
74 | Rst2 : HCurve2d from Adaptor2d; |
75 | Domain2 : TopolTool from Adaptor3d) |
76 | returns RstRstLineBuilder from BRepBlend; |
77 | |
78 | Perform(me : in out; |
79 | Func : in out RstRstFunction from Blend; |
80 | Finv1 : in out SurfCurvFuncInv from Blend; |
81 | FinvP1 : in out CurvPointFuncInv from Blend; |
82 | Finv2 : in out SurfCurvFuncInv from Blend; |
83 | FinvP2 : in out CurvPointFuncInv from Blend; |
84 | Pdep : Real from Standard; |
85 | Pmax : Real from Standard; |
86 | MaxStep : Real from Standard; |
87 | TolGuide : Real from Standard; |
88 | Soldep : Vector from math; |
89 | Tolesp : Real from Standard; |
90 | Fleche : Real from Standard; |
91 | Appro : Boolean from Standard = Standard_False) |
92 | is static; |
93 | |
94 | PerformFirstSection(me : in out; |
95 | Func : in out RstRstFunction from Blend; |
96 | Finv1 : in out SurfCurvFuncInv from Blend; |
97 | FinvP1 : in out CurvPointFuncInv from Blend; |
98 | Finv2 : in out SurfCurvFuncInv from Blend; |
99 | FinvP2 : in out CurvPointFuncInv from Blend; |
100 | Pdep : Real from Standard; |
101 | Pmax : Real from Standard; |
102 | Soldep : Vector from math; |
103 | Tolesp : Real from Standard; |
104 | TolGuide : Real from Standard; |
105 | RecRst1 : Boolean from Standard; |
106 | RecP1 : Boolean from Standard; |
107 | RecRst2 : Boolean from Standard; |
108 | RecP2 : Boolean from Standard; |
109 | Psol : out Real from Standard; |
110 | ParSol : out Vector from math) |
111 | returns Boolean from Standard |
112 | is static; |
113 | |
114 | Complete(me : in out; |
115 | Func : in out RstRstFunction from Blend; |
116 | Finv1 : in out SurfCurvFuncInv from Blend; |
117 | FinvP1 : in out CurvPointFuncInv from Blend; |
118 | Finv2 : in out SurfCurvFuncInv from Blend; |
119 | FinvP2 : in out CurvPointFuncInv from Blend; |
120 | Pmin : Real from Standard) |
121 | |
122 | returns Boolean from Standard |
123 | is static; |
124 | |
125 | InternalPerform (me : in out; |
126 | Func : in out RstRstFunction from Blend; |
127 | Finv1 : in out SurfCurvFuncInv from Blend; |
128 | FinvP1 : in out CurvPointFuncInv from Blend; |
129 | Finv2 : in out SurfCurvFuncInv from Blend; |
130 | FinvP2 : in out CurvPointFuncInv from Blend; |
131 | Bound : Real from Standard) |
132 | is static private; |
133 | |
134 | Recadre1(me : in out; |
135 | Func : in out RstRstFunction from Blend; |
136 | Finv : in out SurfCurvFuncInv from Blend; |
137 | Solinv : out Vector from math; |
138 | IsVtx : out Boolean from Standard; |
139 | Vtx : out HVertex from Adaptor3d) |
140 | returns Boolean from Standard |
141 | is static private; |
142 | |
143 | Recadre2(me : in out; |
144 | Func : in out RstRstFunction from Blend; |
145 | Finv : in out SurfCurvFuncInv from Blend; |
146 | Solinv : out Vector from math; |
147 | IsVtx : out Boolean from Standard; |
148 | Vtx : out HVertex from Adaptor3d) |
149 | returns Boolean from Standard |
150 | is static private; |
151 | |
152 | Recadre1(me : in out; |
153 | FinvP : in out CurvPointFuncInv from Blend; |
154 | Solinv : out Vector from math; |
155 | IsVtx : out Boolean from Standard; |
156 | Vtx : out HVertex from Adaptor3d) |
157 | returns Boolean from Standard |
158 | is static private; |
159 | |
160 | Recadre2(me : in out; |
161 | FinvP : in out CurvPointFuncInv from Blend; |
162 | Solinv : out Vector from math; |
163 | IsVtx : out Boolean from Standard; |
164 | Vtx : out HVertex from Adaptor3d) |
165 | returns Boolean from Standard |
166 | is static private; |
167 | |
168 | IsDone(me) |
169 | returns Boolean from Standard |
170 | ---C++: inline |
171 | is static; |
172 | |
173 | Line(me) |
174 | returns Line from BRepBlend |
175 | ---C++: inline |
176 | ---C++: return const& |
177 | is static; |
178 | |
179 | Decroch1Start(me) |
180 | returns Boolean from Standard |
181 | ---C++: inline |
182 | is static; |
183 | |
184 | Decroch1End(me) |
185 | returns Boolean from Standard |
186 | ---C++: inline |
187 | is static; |
188 | |
189 | Decroch2Start(me) |
190 | returns Boolean from Standard |
191 | ---C++: inline |
192 | is static; |
193 | |
194 | Decroch2End(me) |
195 | returns Boolean from Standard |
196 | ---C++: inline |
197 | is static; |
198 | |
199 | Transition(me : in out; |
200 | OnFirst : Boolean from Standard; |
201 | Arc : HCurve2d from Adaptor2d; |
202 | Param : Real from Standard; |
203 | TLine,TArc : out Transition from IntSurf) |
204 | is static private; |
205 | |
206 | MakeExtremity(me : in out; |
207 | Extrem : in out Extremity from BRepBlend; |
208 | OnFirst : Boolean from Standard; |
209 | Arc : HCurve2d from Adaptor2d; |
210 | Param : Real from Standard; |
211 | IsVtx : Boolean from Standard; |
212 | Vtx : HVertex from Adaptor3d) |
213 | is static private; |
214 | |
215 | CheckDeflectionOnRst1(me : in out; |
216 | CurPoint : Point from Blend) |
217 | returns Status from Blend |
218 | is static private; |
219 | |
220 | CheckDeflectionOnRst2(me : in out; |
221 | CurPoint : Point from Blend) |
222 | returns Status from Blend |
223 | is static private; |
224 | |
225 | TestArret(me : in out; |
226 | Func : in out RstRstFunction from Blend; |
227 | TestDeflection : Boolean from Standard; |
228 | State : Status from Blend) |
229 | returns Status from Blend |
230 | is static private; |
231 | |
232 | CheckInside(me : in out; |
233 | Func : in out RstRstFunction from Blend; |
234 | SituOnC1 : out State from TopAbs; |
235 | SituOnC2 : out State from TopAbs; |
236 | Decroch : out DecrochStatus from Blend) |
237 | returns Boolean from Standard |
238 | is static private; |
239 | |
240 | fields |
241 | |
242 | done : Boolean from Standard; |
243 | line : Line from BRepBlend; |
244 | sol : Vector from math; |
245 | surf1 : HSurface from Adaptor3d; |
246 | domain1 : TopolTool from Adaptor3d; |
247 | surf2 : HSurface from Adaptor3d; |
248 | domain2 : TopolTool from Adaptor3d; |
249 | rst1 : HCurve2d from Adaptor2d; |
250 | rst2 : HCurve2d from Adaptor2d; |
251 | |
252 | tolesp : Real from Standard; |
253 | tolgui : Real from Standard; |
254 | pasmax : Real from Standard; |
255 | fleche : Real from Standard; |
256 | param : Real from Standard; |
257 | previousP : Point from Blend; |
258 | rebrou : Boolean from Standard; |
259 | iscomplete : Boolean from Standard; |
260 | comptra : Boolean from Standard; |
261 | sens : Real from Standard; |
262 | decrochdeb : DecrochStatus from Blend; |
263 | decrochfin : DecrochStatus from Blend; |
264 | |
265 | end RstRstLineBuilder from BRepBlend; |
266 | |
267 | |
268 | |
269 | |