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