0026017: Unstable behavior of test cases with boolean operations
[occt.git] / src / ChFi3d / ChFi3d_Builder_0.hxx
CommitLineData
b311480e 1// Created on: 1994-03-24
2// Created by: Isabelle GRIGNON
3// Copyright (c) 1994-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
17#ifndef ChFi3d_Builder_0_HeaderFile
18#define ChFi3d_Builder_0_HeaderFile
19
20#include <TopOpeBRepDS_SurfaceCurveInterference.hxx>
21#include <TopOpeBRepDS_CurvePointInterference.hxx>
22#include <TopOpeBRepDS_DataStructure.hxx>
23#include <TopOpeBRepDS_Curve.hxx>
24#include <TopOpeBRepDS_Surface.hxx>
25#include <BRepBlend_Extremity.hxx>
26#include <ChFiDS_Stripe.hxx>
27#include <ChFiDS_SurfData.hxx>
28#include <ChFiDS_Spine.hxx>
29#include <ChFiDS_HElSpine.hxx>
30#include <ChFiDS_CommonPoint.hxx>
31#include <ChFiDS_Regularities.hxx>
32#include <ChFiDS_FaceInterference.hxx>
33#include <ChFiDS_Map.hxx>
34#include <TopoDS_Face.hxx>
35#include <TopoDS_Vertex.hxx>
36#include <TopoDS.hxx>
37#include <TopAbs_Orientation.hxx>
38#include <TopTools_ListOfShape.hxx>
39#include <TopTools_ListIteratorOfListOfShape.hxx>
40#include <IntSurf_LineOn2S.hxx>
41#include <IntSurf_TypeTrans.hxx>
42#include <GeomFill_Boundary.hxx>
43#include <GeomFill_BoundWithSurf.hxx>
44#include <GeomFill_SimpleBound.hxx>
45#include <GeomFill_ConstrainedFilling.hxx>
46#include <Geom2d_Curve.hxx>
47#include <Geom_Curve.hxx>
48#include <Geom_TrimmedCurve.hxx>
49#include <Geom_Surface.hxx>
50#include <Geom_BezierCurve.hxx>
51#include <Geom_Circle.hxx>
52#include <GeomAdaptor_Curve.hxx>
53#include <GeomAdaptor_Surface.hxx>
54#include <GeomAdaptor_HSurface.hxx>
55#include <BRepAdaptor_Surface.hxx>
56#include <BRepAdaptor_HSurface.hxx>
57#include <Adaptor3d_HCurve.hxx>
58#include <Adaptor3d_HCurveOnSurface.hxx>
59#include <Adaptor3d_HSurface.hxx>
60#include <Extrema_LocateExtCC.hxx>
61#include <Extrema_POnCurv.hxx>
62#include <Bnd_Box.hxx>
63#include <GeomAbs_Shape.hxx>
64#include <gp_Pnt.hxx>
65#include <gp_Vec.hxx>
66#include <gp_Pnt2d.hxx>
67#include <gp_Vec2d.hxx>
68#include <gp_Dir2d.hxx>
69#include <TColgp_Array1OfPnt.hxx>
70#include <TColgp_Array1OfVec.hxx>
71#include <TColStd_Array1OfReal.hxx>
72#include <TColStd_Array1OfInteger.hxx>
73#include <TopTools_Array1OfShape.hxx>
0797d9d3 74#ifdef OCCT_DEBUG
7fd59977 75#include <OSD_Chronometer.hxx>
76extern OSD_Chronometer simul,elspine,chemine;
77#endif
78
79Standard_Real ChFi3d_InPeriod(const Standard_Real U,
80 const Standard_Real UFirst,
81 const Standard_Real ULast,
82 const Standard_Real Eps);
83
84void ChFi3d_Boite(const gp_Pnt2d& p1,const gp_Pnt2d& p2,
85 Standard_Real& mu,Standard_Real& Mu,
86 Standard_Real& mv,Standard_Real& Mv);
87
88void ChFi3d_Boite(const gp_Pnt2d& p1,const gp_Pnt2d& p2,
89 const gp_Pnt2d& p3,const gp_Pnt2d& p4,
90 Standard_Real& Du,Standard_Real& Dv,
91 Standard_Real& mu,Standard_Real& Mu,
92 Standard_Real& mv,Standard_Real& Mv);
93
94void ChFi3d_SetPointTolerance(TopOpeBRepDS_DataStructure& DStr,
95 const Bnd_Box& box,
96 const Standard_Integer IP);
97
98void ChFi3d_EnlargeBox(const Handle(Geom_Curve)& C,
99 const Standard_Real wd,
100 const Standard_Real wf,
101 Bnd_Box& box1,
102 Bnd_Box& box2);
103
104void ChFi3d_EnlargeBox(const Handle(Adaptor3d_HSurface)& S,
105 const Handle(Geom2d_Curve)& PC,
106 const Standard_Real wd,
107 const Standard_Real wf,
108 Bnd_Box& box1,
109 Bnd_Box& box2);
110
111void ChFi3d_EnlargeBox(const TopoDS_Edge& E,
112 const TopTools_ListOfShape& LF,
113 const Standard_Real w,
114 Bnd_Box& box);
115
116void ChFi3d_EnlargeBox(TopOpeBRepDS_DataStructure& DStr,
117 const Handle(ChFiDS_Stripe)& st,
118 const Handle(ChFiDS_SurfData)& sd,
119 Bnd_Box& b1,
120 Bnd_Box& b2,
121 const Standard_Boolean isfirst);
122
123GeomAbs_Shape ChFi3d_evalconti(const TopoDS_Edge& E,
124 const TopoDS_Face& F1,
125 const TopoDS_Face& F2);
126
127void ChFi3d_conexfaces(const TopoDS_Edge& E,
128 TopoDS_Face& F1,
129 TopoDS_Face& F2,
130 const ChFiDS_Map& EFMap);
131
132ChFiDS_State ChFi3d_EdgeState(TopoDS_Edge* E,
133 const ChFiDS_Map& EFMap);
134
135Standard_Boolean ChFi3d_KParticular
136(const Handle(ChFiDS_Spine)& Spine,
137 const Standard_Integer IE,
138 const BRepAdaptor_Surface& S1,
139 const BRepAdaptor_Surface& S2);
140
141void ChFi3d_BoundFac(BRepAdaptor_Surface& S,
142 const Standard_Real umin,
143 const Standard_Real umax,
144 const Standard_Real vmin,
145 const Standard_Real vmax,
146 const Standard_Boolean checknaturalbounds = Standard_True);
147
148void ChFi3d_BoundSrf(GeomAdaptor_Surface& S,
149 const Standard_Real umin,
150 const Standard_Real umax,
151 const Standard_Real vmin,
152 const Standard_Real vmax,
153 const Standard_Boolean checknaturalbounds = Standard_True);
154
543a9964 155Standard_Boolean ChFi3d_InterPlaneEdge (const Handle(Adaptor3d_HSurface)& Plan,
156 const Handle(Adaptor3d_HCurve)& C,
7fd59977 157 Standard_Real& W,
158 const Standard_Boolean Sens,
159 const Standard_Real tolc);
160
161void ChFi3d_ExtrSpineCarac(const TopOpeBRepDS_DataStructure& DStr,
162 const Handle(ChFiDS_Stripe)& cd,
163 const Standard_Integer i,
164 const Standard_Real p,
165 const Standard_Integer jf,
166 const Standard_Integer sens,
167 gp_Pnt& P,
168 gp_Vec& V,
169 Standard_Real& R);
170
171Handle(Geom_Circle) ChFi3d_CircularSpine(Standard_Real& WFirst,
172 Standard_Real& WLast,
173 const gp_Pnt& Pdeb,
174 const gp_Vec& Vdeb,
175 const gp_Pnt& Pfin,
176 const gp_Vec& Vfin,
177 const Standard_Real rad);
178
179Handle(Geom_BezierCurve) ChFi3d_Spine(const gp_Pnt& pd,
180 gp_Vec& vd,
181 const gp_Pnt& pf,
182 gp_Vec& vf,
183 const Standard_Real R);
184
185Handle(GeomFill_Boundary) ChFi3d_mkbound
186(const Handle(Adaptor3d_HSurface)& Fac,
187 Handle(Geom2d_Curve)& curv,
188 const Standard_Integer sens1,
189 const gp_Pnt2d& pfac1,
190 const gp_Vec2d& vfac1,
191 const Standard_Integer sens2,
192 const gp_Pnt2d& pfac2,
193 const gp_Vec2d& vfac2,
194 const Standard_Real t3d,
195 const Standard_Real ta);
196
197Handle(GeomFill_Boundary) ChFi3d_mkbound
198(const Handle(Adaptor3d_HSurface)& Surf,
199 Handle(Geom2d_Curve)& curv,
200 const Standard_Integer sens1,
201 const gp_Pnt2d& p1,
202 gp_Vec& v1,
203 const Standard_Integer sens2,
204 const gp_Pnt2d& p2,
205 gp_Vec& v2,
206 const Standard_Real t3d,
207 const Standard_Real ta);
208
209Handle(GeomFill_Boundary) ChFi3d_mkbound
210(const Handle(Geom_Surface)& s,
211 const gp_Pnt2d& p1,
212 const gp_Pnt2d& p2,
213 const Standard_Real t3d,
214 const Standard_Real ta,
215 const Standard_Boolean isfreeboundary = Standard_False);
216
217Handle(GeomFill_Boundary) ChFi3d_mkbound
218(const Handle(Adaptor3d_HSurface)& HS,
219 const gp_Pnt2d& p1,
220 const gp_Pnt2d& p2,
221 const Standard_Real t3d,
222 const Standard_Real ta,
223 const Standard_Boolean isfreeboundary = Standard_False);
224
225Handle(GeomFill_Boundary) ChFi3d_mkbound
226(const Handle(Adaptor3d_HSurface)& HS,
227 const Handle(Geom2d_Curve)& curv,
228 const Standard_Real t3d,
229 const Standard_Real ta,
230 const Standard_Boolean isfreeboundary = Standard_False);
231
232Handle(GeomFill_Boundary) ChFi3d_mkbound
233(const Handle(Adaptor3d_HSurface)& Fac,
234 Handle(Geom2d_Curve)& curv,
235 const gp_Pnt2d& p1,
236 const gp_Pnt2d& p2,
237 const Standard_Real t3d,
238 const Standard_Real ta,
239 const Standard_Boolean isfreeboundary = Standard_False);
240
241void ChFi3d_Coefficient(const gp_Vec& V3d,
242 const gp_Vec& D1u,
243 const gp_Vec& D1v,
244 Standard_Real& DU,
245 Standard_Real& DV);
246
247Handle(Geom2d_Curve) ChFi3d_BuildPCurve
248(const gp_Pnt2d& p1,
249 gp_Dir2d& d1,
250 const gp_Pnt2d& p2,
251 gp_Dir2d& d2,
252 const Standard_Boolean redresse = Standard_True);
253
254Handle(Geom2d_Curve) ChFi3d_BuildPCurve
255(const Handle(Adaptor3d_HSurface)& Surf,
256 const gp_Pnt2d& p1,
257 const gp_Vec& v1,
258 const gp_Pnt2d& p2,
259 const gp_Vec& v2,
260 const Standard_Boolean redresse = Standard_False);
261
262Handle(Geom2d_Curve) ChFi3d_BuildPCurve
263(const Handle(Adaptor3d_HSurface)& Surf,
264 const gp_Pnt2d& p1,
265 const gp_Vec2d& v1,
266 const gp_Pnt2d& p2,
267 const gp_Vec2d& v2,
268 const Standard_Boolean redresse = Standard_False);
269
270Standard_Boolean ChFi3d_CheckSameParameter
271(const Handle(Adaptor3d_HCurve)& C3d,
272 Handle(Geom2d_Curve)& Pcurv,
273 const Handle(Adaptor3d_HSurface)& S,
274 const Standard_Real tol3d,
275 Standard_Real& tolreached);
276
277Standard_Boolean ChFi3d_SameParameter(const Handle(Adaptor3d_HCurve)& C3d,
278 Handle(Geom2d_Curve)& Pcurv,
279 const Handle(Adaptor3d_HSurface)& S,
280 const Standard_Real tol3d,
281 Standard_Real& tolreached);
282
283Standard_Boolean ChFi3d_SameParameter(const Handle(Geom_Curve)& C3d,
284 Handle(Geom2d_Curve)& Pcurv,
285 const Handle(Geom_Surface)& S,
286 const Standard_Real Pardeb,
287 const Standard_Real Parfin,
288 const Standard_Real tol3d,
289 Standard_Real& tolreached);
290
291void ChFi3d_ComputePCurv(const Handle(Geom_Curve)& C3d,
292 const gp_Pnt2d& UV1,
293 const gp_Pnt2d& UV2,
294 Handle(Geom2d_Curve)& Pcurv,
295 const Handle(Geom_Surface)& S,
296 const Standard_Real Pardeb,
297 const Standard_Real Parfin,
298 const Standard_Real tol3d,
299 Standard_Real& tolreached,
300 const Standard_Boolean reverse = Standard_False);
301
302void ChFi3d_ComputePCurv(const Handle(Adaptor3d_HCurve)& C3d,
303 const gp_Pnt2d& UV1,
304 const gp_Pnt2d& UV2,
305 Handle(Geom2d_Curve)& Pcurv,
306 const Handle(Adaptor3d_HSurface)& S,
307 const Standard_Real Pardeb,
308 const Standard_Real Parfin,
309 const Standard_Real tol3d,
310 Standard_Real& tolreached,
311 const Standard_Boolean reverse = Standard_False);
312
313void ChFi3d_ComputePCurv(const gp_Pnt2d& UV1,
314 const gp_Pnt2d& UV2,
315 Handle(Geom2d_Curve)& Pcurv,
316 const Standard_Real Pardeb,
317 const Standard_Real Parfin,
318 const Standard_Boolean reverse = Standard_False);
319
320Standard_Boolean ChFi3d_IntTraces(const Handle(ChFiDS_SurfData)& fd1,
321 const Standard_Real pref1,
322 Standard_Real& p1,
323 const Standard_Integer jf1,
324 const Standard_Integer sens1,
325 const Handle(ChFiDS_SurfData)& fd2,
326 const Standard_Real pref2,
327 Standard_Real& p2,
328 const Standard_Integer jf2,
329 const Standard_Integer sens2,
330 const gp_Pnt2d& RefP2d,
331 const Standard_Boolean Check2dDistance = Standard_False,
332 const Standard_Boolean enlarge = Standard_False);
333
334Standard_Boolean ChFi3d_IsInFront(TopOpeBRepDS_DataStructure& DStr,
335 const Handle(ChFiDS_Stripe)& cd1,
336 const Handle(ChFiDS_Stripe)& cd2,
337 const Standard_Integer i1,
338 const Standard_Integer i2,
339 const Standard_Integer sens1,
340 const Standard_Integer sens2,
341 Standard_Real& p1,
342 Standard_Real& p2,
343 TopoDS_Face& face,
344 Standard_Boolean& sameside,
345 Standard_Integer& jf1,
346 Standard_Integer& jf2,
347 Standard_Boolean& visavis,
348 const TopoDS_Vertex& Vtx,
349 const Standard_Boolean Check2dDistance = Standard_False,
350 const Standard_Boolean enlarge = Standard_False);
351
352void ChFi3d_ProjectPCurv(const Handle(Adaptor3d_HCurve)& HCg,
353 const Handle(Adaptor3d_HSurface)& HSg,
354 Handle(Geom2d_Curve)& Pcurv,
355 const Standard_Real tol3d,
356 Standard_Real& tolreached) ;
357
358void ChFi3d_ReparamPcurv(const Standard_Real Uf,
359 const Standard_Real Ul,
360 Handle(Geom2d_Curve)& Pcurv) ;
361
362void ChFi3d_ComputeArete(const ChFiDS_CommonPoint& P1,
363 const gp_Pnt2d& UV1,
364 const ChFiDS_CommonPoint& P2,
365 const gp_Pnt2d& UV2,
366 const Handle(Geom_Surface)& Surf,
367 Handle(Geom_Curve)& C3d,
368 Handle(Geom2d_Curve)& Pcurv,
369 Standard_Real& Pardeb,
370 Standard_Real& Parfin,
371 const Standard_Real tol3d,
372 const Standard_Real tol2d,
373 Standard_Real& tolreached,
374 const Standard_Integer IFlag);
375
376Handle(TopOpeBRepDS_SurfaceCurveInterference)
377 ChFi3d_FilCurveInDS(const Standard_Integer Icurv,
378 const Standard_Integer Isurf,
379 const Handle(Geom2d_Curve)& Pcurv,
380 const TopAbs_Orientation Et);
381
382TopAbs_Orientation ChFi3d_TrsfTrans(const IntSurf_TypeTrans T1);
383
384Standard_EXPORT void ChFi3d_FilCommonPoint(const BRepBlend_Extremity& SP,
385 const IntSurf_TypeTrans TransLine,
386 const Standard_Boolean Start,
387 ChFiDS_CommonPoint& CP,
388 const Standard_Real Tol);
389
390
391Standard_Integer ChFi3d_SolidIndex(const Handle(ChFiDS_Spine)& sp,
392 TopOpeBRepDS_DataStructure& DStr,
393 ChFiDS_Map& MapESo,
394 ChFiDS_Map& MapESh);
395
396Standard_Integer ChFi3d_IndexPointInDS(const ChFiDS_CommonPoint& P1,
397 TopOpeBRepDS_DataStructure& DStr);
398
399Handle(TopOpeBRepDS_CurvePointInterference) ChFi3d_FilPointInDS
400(const TopAbs_Orientation Et,
401 const Standard_Integer Ic,
402 const Standard_Integer Ip,
403 const Standard_Real Par,
404 const Standard_Boolean IsVertex = Standard_False);
405
406Handle(TopOpeBRepDS_CurvePointInterference) ChFi3d_FilVertexInDS
407(const TopAbs_Orientation Et,
408 const Standard_Integer Ic,
409 const Standard_Integer Ip,
410 const Standard_Real Par);
411
412void ChFi3d_FilDS(const Standard_Integer SolidIndex,
413 const Handle(ChFiDS_Stripe)& CorDat,
414 TopOpeBRepDS_DataStructure& DStr,
415 ChFiDS_Regularities& reglist,
416 const Standard_Real tol3d,
417 const Standard_Real tol2d);
418
419
420void ChFi3d_StripeEdgeInter (const Handle(ChFiDS_Stripe)& theStripe1,
421 const Handle(ChFiDS_Stripe)& theStripe2,
422 TopOpeBRepDS_DataStructure& DStr,
423 const Standard_Real tol2d);
424
425Standard_Integer ChFi3d_IndexOfSurfData(const TopoDS_Vertex& V1,
426 const Handle(ChFiDS_Stripe)& CD,
427 Standard_Integer& sens);
428
429TopoDS_Edge ChFi3d_EdgeFromV1(const TopoDS_Vertex& V1,
430 const Handle(ChFiDS_Stripe)& CD,
431 Standard_Integer& sens);
432
433Standard_Real ChFi3d_ConvTol2dToTol3d(const Handle(Adaptor3d_HSurface)& S,
434 const Standard_Real tol2d);
435
543a9964 436Standard_Boolean ChFi3d_ComputeCurves(const Handle(Adaptor3d_HSurface)& S1,
437 const Handle(Adaptor3d_HSurface)& S2,
7fd59977 438 const TColStd_Array1OfReal& Pardeb,
439 const TColStd_Array1OfReal& Parfin,
440 Handle(Geom_Curve)& C3d,
441 Handle(Geom2d_Curve)& Pc1,
442 Handle(Geom2d_Curve)& Pc2,
443 const Standard_Real tol3d,
444 const Standard_Real tol2d,
445 Standard_Real& tolreached,
446 const Standard_Boolean wholeCurv
447 = Standard_True);
448
543a9964 449Standard_Boolean ChFi3d_IntCS(const Handle(Adaptor3d_HSurface)& S,
450 const Handle(Adaptor3d_HCurve)& C,
7fd59977 451 gp_Pnt2d& p2dS,
452 Standard_Real& wc);
453
454void ChFi3d_ComputesIntPC (const ChFiDS_FaceInterference& Fi1,
455 const ChFiDS_FaceInterference& Fi2,
456 const Handle(GeomAdaptor_HSurface)& HS1,
457 const Handle(GeomAdaptor_HSurface)& HS2,
458 Standard_Real& UInt1,
459 Standard_Real& UInt2);
460
461void ChFi3d_ComputesIntPC (const ChFiDS_FaceInterference& Fi1,
462 const ChFiDS_FaceInterference& Fi2,
463 const Handle(GeomAdaptor_HSurface)& HS1,
464 const Handle(GeomAdaptor_HSurface)& HS2,
465 Standard_Real& UInt1,
466 Standard_Real& UInt2,
467 gp_Pnt& P);
468
469Handle(GeomAdaptor_HSurface) ChFi3d_BoundSurf(TopOpeBRepDS_DataStructure& DStr,
470 const Handle(ChFiDS_SurfData)& Fd1,
471 const Standard_Integer& IFaCo1,
472 const Standard_Integer& IFaArc1);
473
474Standard_Integer ChFi3d_SearchPivot(Standard_Integer* s,
475 Standard_Real u[3][3],
476 const Standard_Real t);
477
478Standard_Boolean ChFi3d_SearchFD(TopOpeBRepDS_DataStructure& DStr,
479 const Handle(ChFiDS_Stripe)& cd1,
480 const Handle(ChFiDS_Stripe)& cd2,
481 const Standard_Integer sens1,
482 const Standard_Integer sens2,
483 Standard_Integer& i1,
484 Standard_Integer& i2,
485 Standard_Real& p1,
486 Standard_Real& p2,
487 const Standard_Integer ind1,
488 const Standard_Integer ind2,
489 TopoDS_Face& face,
490 Standard_Boolean& sameside,
491 Standard_Integer& jf1,
492 Standard_Integer& jf2);
493
494
495void ChFi3d_Parameters(const Handle(Geom_Surface)& S,
496 const gp_Pnt& p3d,
497 Standard_Real& u,
498 Standard_Real& v);
499
500void ChFi3d_TrimCurve(const Handle(Geom_Curve)& gc,
501 const gp_Pnt& FirstP,
502 const gp_Pnt& LastP,
503 Handle(Geom_TrimmedCurve)& gtc);
504
505Standard_EXPORT void ChFi3d_PerformElSpine(Handle(ChFiDS_HElSpine)& HES,
506 Handle(ChFiDS_Spine)& Spine,
507 const GeomAbs_Shape continuity,
508 const Standard_Real tol);
509
510TopoDS_Face ChFi3d_EnlargeFace(const Handle(ChFiDS_Spine)& Spine,
511 const Handle(BRepAdaptor_HSurface)& HS,
512 const Standard_Real Tol );
513
514
515void ChFi3d_cherche_face1 (const TopTools_ListOfShape & map,
516 const TopoDS_Face & F1,
517 TopoDS_Face & F);
518
519void ChFi3d_cherche_element( const TopoDS_Vertex & V,
520 const TopoDS_Edge & E1,
521 const TopoDS_Face & F1,
522 TopoDS_Edge & E ,
523 TopoDS_Vertex & Vtx );
524
525Standard_Real ChFi3d_EvalTolReached(const Handle(Adaptor3d_HSurface)& S1,
526 const Handle(Geom2d_Curve)& pc1,
527 const Handle(Adaptor3d_HSurface)& S2,
528 const Handle(Geom2d_Curve)& pc2,
529 const Handle(Geom_Curve)& C);
530
531void ChFi3d_cherche_edge( const TopoDS_Vertex & V,
532 const TopTools_Array1OfShape & E1,
533 const TopoDS_Face & F1,
534 TopoDS_Edge & E ,
535 TopoDS_Vertex & Vtx );
536
537Standard_Integer ChFi3d_nbface (const TopTools_ListOfShape & mapVF );
538
539void ChFi3d_edge_common_faces (const TopTools_ListOfShape & mapEF,
540 TopoDS_Face & F1,
541 TopoDS_Face & F2);
542
543
544Standard_Real ChFi3d_AngleEdge (const TopoDS_Vertex & Vtx,
545 const TopoDS_Edge& E1,
546 const TopoDS_Edge & E2);
547
548void ChFi3d_ChercheBordsLibres(const ChFiDS_Map & myVEMap,
549 const TopoDS_Vertex & V1,
550 Standard_Boolean & bordlibre,
551 TopoDS_Edge & edgelibre1,
552 TopoDS_Edge & edgelibre2);
553
554Standard_Integer ChFi3d_NbNotDegeneratedEdges (const TopoDS_Vertex& Vtx,
555 const ChFiDS_Map& VEMap);
556Standard_Integer ChFi3d_NumberOfEdges(const TopoDS_Vertex& Vtx,
557 const ChFiDS_Map& VEMap);
558
559void ChFi3d_cherche_vertex (const TopoDS_Edge & E1,
560 const TopoDS_Edge & E2,
561 TopoDS_Vertex & vertex,
562 Standard_Boolean & trouve);
563
564void ChFi3d_Couture( const TopoDS_Face & F,
565 Standard_Boolean & couture,
566 TopoDS_Edge & edgecouture);
567
568void ChFi3d_CoutureOnVertex( const TopoDS_Face & F,
569 const TopoDS_Vertex & V,
570 Standard_Boolean & couture,
571 TopoDS_Edge & edgecouture);
572
573Standard_Boolean ChFi3d_IsPseudoSeam( const TopoDS_Edge& E,
574 const TopoDS_Face& F );
575
576Handle(Geom_BSplineCurve) ChFi3d_ApproxByC2( const Handle(Geom_Curve)& C );
577
578Standard_Boolean ChFi3d_IsSmooth( const Handle(Geom_Curve)& C );
579
580#endif