1 // Created on: 1994-03-24 2 // Created by: Isabelle GRIGNON 3 // Copyright (c) 1994-1999 Matra Datavision 4 // Copyright (c) 1999-2014 OPEN CASCADE SAS 5 // 6 // This file is part of Open CASCADE Technology software library. 7 // 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. 13 // 14 // Alternatively, this file may be used under the terms of Open CASCADE 15 // commercial license or contractual agreement. 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_ElSpine.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_Surface.hxx> 55 #include <BRepAdaptor_Surface.hxx> 56 #include <BRepAdaptor_Surface.hxx> 57 #include <Adaptor3d_Curve.hxx> 58 #include <Adaptor3d_CurveOnSurface.hxx> 59 #include <Adaptor3d_Surface.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> 74 #ifdef OCCT_DEBUG 75 #include <OSD_Chronometer.hxx> 76 extern OSD_Chronometer simul,elspine,chemine; 77 #endif 78 79 Standard_Real ChFi3d_InPeriod(const Standard_Real U, 80 const Standard_Real UFirst, 81 const Standard_Real ULast, 82 const Standard_Real Eps); 83 84 void 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 88 void 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 94 void ChFi3d_SetPointTolerance(TopOpeBRepDS_DataStructure& DStr, 95 const Bnd_Box& box, 96 const Standard_Integer IP); 97 98 void 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 104 void ChFi3d_EnlargeBox(const Handle(Adaptor3d_Surface)& 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 111 void ChFi3d_EnlargeBox(const TopoDS_Edge& E, 112 const TopTools_ListOfShape& LF, 113 const Standard_Real w, 114 Bnd_Box& box); 115 116 void 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 123 GeomAbs_Shape ChFi3d_evalconti(const TopoDS_Edge& E, 124 const TopoDS_Face& F1, 125 const TopoDS_Face& F2); 126 127 void ChFi3d_conexfaces(const TopoDS_Edge& E, 128 TopoDS_Face& F1, 129 TopoDS_Face& F2, 130 const ChFiDS_Map& EFMap); 131 132 ChFiDS_State ChFi3d_EdgeState(TopoDS_Edge* E, 133 const ChFiDS_Map& EFMap); 134 135 Standard_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 141 void 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 148 void 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 155 Standard_Boolean ChFi3d_InterPlaneEdge (const Handle(Adaptor3d_Surface)& Plan, 156 const Handle(Adaptor3d_Curve)& C, 157 Standard_Real& W, 158 const Standard_Boolean Sens, 159 const Standard_Real tolc); 160 161 void 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 171 Handle(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 179 Handle(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 185 Handle(GeomFill_Boundary) ChFi3d_mkbound 186 (const Handle(Adaptor3d_Surface)& 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 197 Handle(GeomFill_Boundary) ChFi3d_mkbound 198 (const Handle(Adaptor3d_Surface)& 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 209 Handle(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 217 Handle(GeomFill_Boundary) ChFi3d_mkbound 218 (const Handle(Adaptor3d_Surface)& 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 225 Handle(GeomFill_Boundary) ChFi3d_mkbound 226 (const Handle(Adaptor3d_Surface)& 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 232 Handle(GeomFill_Boundary) ChFi3d_mkbound 233 (const Handle(Adaptor3d_Surface)& 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 241 void 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 247 Handle(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 254 Handle(Geom2d_Curve) ChFi3d_BuildPCurve 255 (const Handle(Adaptor3d_Surface)& 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 262 Handle(Geom2d_Curve) ChFi3d_BuildPCurve 263 (const Handle(Adaptor3d_Surface)& 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 270 Standard_Boolean ChFi3d_CheckSameParameter 271 (const Handle(Adaptor3d_Curve)& C3d, 272 Handle(Geom2d_Curve)& Pcurv, 273 const Handle(Adaptor3d_Surface)& S, 274 const Standard_Real tol3d, 275 Standard_Real& tolreached); 276 277 Standard_Boolean ChFi3d_SameParameter(const Handle(Adaptor3d_Curve)& C3d, 278 Handle(Geom2d_Curve)& Pcurv, 279 const Handle(Adaptor3d_Surface)& S, 280 const Standard_Real tol3d, 281 Standard_Real& tolreached); 282 283 Standard_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 291 void 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 302 void ChFi3d_ComputePCurv(const Handle(Adaptor3d_Curve)& C3d, 303 const gp_Pnt2d& UV1, 304 const gp_Pnt2d& UV2, 305 Handle(Geom2d_Curve)& Pcurv, 306 const Handle(Adaptor3d_Surface)& 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 313 void 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 320 Standard_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 334 Standard_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 352 void ChFi3d_ProjectPCurv(const Handle(Adaptor3d_Curve)& HCg, 353 const Handle(Adaptor3d_Surface)& HSg, 354 Handle(Geom2d_Curve)& Pcurv, 355 const Standard_Real tol3d, 356 Standard_Real& tolreached) ; 357 358 void ChFi3d_ReparamPcurv(const Standard_Real Uf, 359 const Standard_Real Ul, 360 Handle(Geom2d_Curve)& Pcurv) ; 361 362 void 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 376 Handle(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 382 TopAbs_Orientation ChFi3d_TrsfTrans(const IntSurf_TypeTrans T1); 383 384 Standard_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 391 Standard_Integer ChFi3d_SolidIndex(const Handle(ChFiDS_Spine)& sp, 392 TopOpeBRepDS_DataStructure& DStr, 393 ChFiDS_Map& MapESo, 394 ChFiDS_Map& MapESh); 395 396 Standard_Integer ChFi3d_IndexPointInDS(const ChFiDS_CommonPoint& P1, 397 TopOpeBRepDS_DataStructure& DStr); 398 399 Handle(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 406 Handle(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 412 void 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 420 void ChFi3d_StripeEdgeInter (const Handle(ChFiDS_Stripe)& theStripe1, 421 const Handle(ChFiDS_Stripe)& theStripe2, 422 TopOpeBRepDS_DataStructure& DStr, 423 const Standard_Real tol2d); 424 425 Standard_Integer ChFi3d_IndexOfSurfData(const TopoDS_Vertex& V1, 426 const Handle(ChFiDS_Stripe)& CD, 427 Standard_Integer& sens); 428 429 TopoDS_Edge ChFi3d_EdgeFromV1(const TopoDS_Vertex& V1, 430 const Handle(ChFiDS_Stripe)& CD, 431 Standard_Integer& sens); 432 433 Standard_Real ChFi3d_ConvTol2dToTol3d(const Handle(Adaptor3d_Surface)& S, 434 const Standard_Real tol2d); 435 436 Standard_Boolean ChFi3d_ComputeCurves(const Handle(Adaptor3d_Surface)& S1, 437 const Handle(Adaptor3d_Surface)& S2, 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 449 Standard_Boolean ChFi3d_IntCS(const Handle(Adaptor3d_Surface)& S, 450 const Handle(Adaptor3d_Curve)& C, 451 gp_Pnt2d& p2dS, 452 Standard_Real& wc); 453 454 void ChFi3d_ComputesIntPC (const ChFiDS_FaceInterference& Fi1, 455 const ChFiDS_FaceInterference& Fi2, 456 const Handle(GeomAdaptor_Surface)& HS1, 457 const Handle(GeomAdaptor_Surface)& HS2, 458 Standard_Real& UInt1, 459 Standard_Real& UInt2); 460 461 void ChFi3d_ComputesIntPC (const ChFiDS_FaceInterference& Fi1, 462 const ChFiDS_FaceInterference& Fi2, 463 const Handle(GeomAdaptor_Surface)& HS1, 464 const Handle(GeomAdaptor_Surface)& HS2, 465 Standard_Real& UInt1, 466 Standard_Real& UInt2, 467 gp_Pnt& P); 468 469 Handle(GeomAdaptor_Surface) ChFi3d_BoundSurf(TopOpeBRepDS_DataStructure& DStr, 470 const Handle(ChFiDS_SurfData)& Fd1, 471 const Standard_Integer& IFaCo1, 472 const Standard_Integer& IFaArc1); 473 474 Standard_Integer ChFi3d_SearchPivot(Standard_Integer* s, 475 Standard_Real u[3][3], 476 const Standard_Real t); 477 478 Standard_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 495 void ChFi3d_Parameters(const Handle(Geom_Surface)& S, 496 const gp_Pnt& p3d, 497 Standard_Real& u, 498 Standard_Real& v); 499 500 void ChFi3d_TrimCurve(const Handle(Geom_Curve)& gc, 501 const gp_Pnt& FirstP, 502 const gp_Pnt& LastP, 503 Handle(Geom_TrimmedCurve)& gtc); 504 505 Standard_EXPORT void ChFi3d_PerformElSpine(Handle(ChFiDS_ElSpine)& HES, 506 Handle(ChFiDS_Spine)& Spine, 507 const GeomAbs_Shape continuity, 508 const Standard_Real tol, 509 const Standard_Boolean IsOffset = Standard_False); 510 511 TopoDS_Face ChFi3d_EnlargeFace(const Handle(ChFiDS_Spine)& Spine, 512 const Handle(BRepAdaptor_Surface)& HS, 513 const Standard_Real Tol ); 514 515 516 void ChFi3d_cherche_face1 (const TopTools_ListOfShape & map, 517 const TopoDS_Face & F1, 518 TopoDS_Face & F); 519 520 void ChFi3d_cherche_element( const TopoDS_Vertex & V, 521 const TopoDS_Edge & E1, 522 const TopoDS_Face & F1, 523 TopoDS_Edge & E , 524 TopoDS_Vertex & Vtx ); 525 526 Standard_Real ChFi3d_EvalTolReached(const Handle(Adaptor3d_Surface)& S1, 527 const Handle(Geom2d_Curve)& pc1, 528 const Handle(Adaptor3d_Surface)& S2, 529 const Handle(Geom2d_Curve)& pc2, 530 const Handle(Geom_Curve)& C); 531 532 void ChFi3d_cherche_edge( const TopoDS_Vertex & V, 533 const TopTools_Array1OfShape & E1, 534 const TopoDS_Face & F1, 535 TopoDS_Edge & E , 536 TopoDS_Vertex & Vtx ); 537 538 Standard_Integer ChFi3d_nbface (const TopTools_ListOfShape & mapVF ); 539 540 void ChFi3d_edge_common_faces (const TopTools_ListOfShape & mapEF, 541 TopoDS_Face & F1, 542 TopoDS_Face & F2); 543 544 545 Standard_Real ChFi3d_AngleEdge (const TopoDS_Vertex & Vtx, 546 const TopoDS_Edge& E1, 547 const TopoDS_Edge & E2); 548 549 void ChFi3d_ChercheBordsLibres(const ChFiDS_Map & myVEMap, 550 const TopoDS_Vertex & V1, 551 Standard_Boolean & bordlibre, 552 TopoDS_Edge & edgelibre1, 553 TopoDS_Edge & edgelibre2); 554 555 Standard_Integer ChFi3d_NbNotDegeneratedEdges (const TopoDS_Vertex& Vtx, 556 const ChFiDS_Map& VEMap); 557 Standard_Integer ChFi3d_NumberOfEdges(const TopoDS_Vertex& Vtx, 558 const ChFiDS_Map& VEMap); 559 560 Standard_Integer ChFi3d_NumberOfSharpEdges(const TopoDS_Vertex& Vtx, 561 const ChFiDS_Map& VEMap, 562 const ChFiDS_Map& EFmap); 563 564 void ChFi3d_cherche_vertex (const TopoDS_Edge & E1, 565 const TopoDS_Edge & E2, 566 TopoDS_Vertex & vertex, 567 Standard_Boolean & trouve); 568 569 void ChFi3d_Couture( const TopoDS_Face & F, 570 Standard_Boolean & couture, 571 TopoDS_Edge & edgecouture); 572 573 void ChFi3d_CoutureOnVertex( const TopoDS_Face & F, 574 const TopoDS_Vertex & V, 575 Standard_Boolean & couture, 576 TopoDS_Edge & edgecouture); 577 578 Standard_Boolean ChFi3d_IsPseudoSeam( const TopoDS_Edge& E, 579 const TopoDS_Face& F ); 580 581 Handle(Geom_BSplineCurve) ChFi3d_ApproxByC2( const Handle(Geom_Curve)& C ); 582 583 Standard_Boolean ChFi3d_IsSmooth( const Handle(Geom_Curve)& C ); 584 585 #endif 586