28 #include "TopoDS_Shape.hxx"
29 #include "TopoDS_CompSolid.hxx"
30 #include "TopoDS_Compound.hxx"
31 #include "TopoDS_Solid.hxx"
32 #include "TopoDS_Shell.hxx"
33 #include <TopTools_IndexedMapOfShape.hxx>
35 #include <TopAbs_ShapeEnum.hxx>
37 #include <BRep_Tool.hxx>
38 #include <BRep_Builder.hxx>
39 #include <BRepTools.hxx>
40 #include <BRepMesh_IncrementalMesh.hxx>
41 #include <BRepTools_WireExplorer.hxx>
43 #include <TopAbs_Orientation.hxx>
44 #include <Geom_Surface.hxx>
45 #include <Geom_Curve.hxx>
46 #include <Geom_Point.hxx>
47 #include <Geom_CartesianPoint.hxx>
49 #include <BRepBuilderAPI_MakeVertex.hxx>
50 #include <TopTools_DataMapOfShapeInteger.hxx>
51 #include <BRep_ListIteratorOfListOfCurveRepresentation.hxx>
52 #include <BRep_ListIteratorOfListOfPointRepresentation.hxx>
53 #include <BRep_PointRepresentation.hxx>
55 #include <TopoDS_TShape.hxx>
56 #include <TopoDS_TFace.hxx>
57 #include <TopoDS_TEdge.hxx>
58 #include <TopoDS_TShape.hxx>
59 #include <TopoDS_TSolid.hxx>
60 #include <TopoDS_TFace.hxx>
61 #include <BRep_TFace.hxx>
62 #include <TopoDS_TEdge.hxx>
63 #include <BRep_TEdge.hxx>
64 #include <TopoDS_TWire.hxx>
65 #include <TopoDS_TVertex.hxx>
66 #include <BRep_TVertex.hxx>
67 #include <GeomTools_SurfaceSet.hxx>
68 #include <BRepMesh_IncrementalMesh.hxx>
83 #pragma package(smart_init)
97 bool fusionner_entite_similaire)
103 mggeo=
new MG_GEOMETRIE((
char*)
"OCCV2017",nom_caf,0.001,precision);
112 fusionner_entite_similaire,
123 bool fusionner_entite_similaire)
129 mggeo=
new MG_GEOMETRIE((
char*)
"OCCV2017",nom_caf,0.001,precision);
138 fusionner_entite_similaire,
216 std::vector<TPL_RELATION_ENTITE<BRep_TFace,MG_FACE> >::iterator i;
218 if ((*i).a==face)
return (*i).b;
232 std::vector<TPL_RELATION_ENTITE<BRep_TEdge,MG_ARETE> >::iterator i;
234 if ((*i).a==arete)
return (*i).b;
249 std::vector<TPL_RELATION_ENTITE<BRep_TVertex,MG_SOMMET> >::iterator i;
251 if ((*i).a==sommet)
return (*i).b;
267 TopAbs_ShapeEnum type=
ashape.ShapeType();
268 if (type==TopAbs_SOLID)
270 TopTools_IndexedMapOfShape Solide;
271 TopExp::MapShapes(
ashape,TopAbs_SOLID, Solide);
272 for (
int i=1;i<=Solide.Extent();++i)
274 const TopoDS_Solid &solid=TopoDS::Solid(Solide.FindKey(i));
276 sprintf(idori,
"%d",fonction1.
GetID(solid));
279 TopTools_IndexedMapOfShape coquille;
280 TopExp::MapShapes(solid,TopAbs_SHELL, coquille);
281 int nb_shell_occ=coquille.Extent();
282 for (
int j=1; j<=nb_shell_occ; ++j)
284 const TopoDS_Shell &shell=TopoDS::Shell(coquille.FindKey(j));
288 TopTools_IndexedMapOfShape faces;
289 TopExp::MapShapes(shell,TopAbs_FACE, faces);
290 int nb_face_occ=faces.Extent();
291 for (
int k=1; k<=nb_face_occ;++k)
293 const TopoDS_Face &face=TopoDS::Face(faces.FindKey(k));
294 Handle(BRep_TFace) tface=Handle(BRep_TFace)::DownCast(face.TShape());
295 BRep_TFace* occface=tface.operator ->();
296 Handle(Geom_Surface) opsurface=BRep_Tool::Surface(face);
297 Geom_Surface* surface=opsurface.operator ->();
302 mgsurface=occsurface;
310 if (face.Orientation()==TopAbs_FORWARD) sens=1;
313 sprintf(idori,
"%d",fonction1.
GetID(face));
314 mgface=
new MG_FACE(idori,mgsurface,sens);
319 if (shell.Orientation()==TopAbs_FORWARD) sens=1;
324 TopTools_IndexedMapOfShape contours;
325 TopExp::MapShapes(face,TopAbs_WIRE, contours);
326 int nb_wire_occ=contours.Extent();
327 for (
int l=1; l<=nb_wire_occ; ++l)
332 const TopoDS_Wire &wire=TopoDS::Wire(contours.FindKey(l));
333 BRepTools_WireExplorer Ex;
334 for(Ex.Init(wire); Ex.More(); Ex.Next())
337 const TopoDS_Edge &edge=TopoDS::Edge(Ex.Current());
338 Handle(BRep_TEdge) tedge=Handle(BRep_TEdge)::DownCast(edge.TShape());
339 BRep_TEdge* occedge=tedge.operator ->();
341 Standard_Boolean degen1 = BRep_Tool::Degenerated(edge);
342 if (degen1)
continue;
343 const Handle(Geom_Curve)& opcurve=BRep_Tool::Curve(edge,first,last);
344 Geom_Curve* courbe=opcurve.operator ->();
354 const TopoDS_Vertex &vertex1=TopExp::FirstVertex(edge, Standard_False);
355 Handle(BRep_TVertex) tvertex1=Handle(BRep_TVertex)::DownCast(vertex1.TShape());
356 BRep_TVertex* occvertex1=tvertex1.operator ->();
357 gp_Pnt oppoint1=BRep_Tool::Pnt(vertex1);
367 sprintf(idori,
"%d",fonction1.
GetID(vertex1));
374 const TopoDS_Vertex &vertex2=TopExp::LastVertex(edge,Standard_False);
375 Handle(BRep_TVertex) tvertex2=Handle(BRep_TVertex)::DownCast(vertex2.TShape());
376 BRep_TVertex* occvertex2=tvertex2.operator ->();
377 gp_Pnt oppoint2=BRep_Tool::Pnt(vertex2);
386 sprintf(idori,
"%d",fonction1.
GetID(vertex2));
398 if (edge.Orientation()==TopAbs_FORWARD) sens=1;
401 sprintf(idori2,
"%d",fonction1.
GetID(edge));
402 mgarete=
new MG_ARETE(idori2,mgcourbe,sens);
412 if (edge.Orientation()==TopAbs_FORWARD) sens=1;
424 else if (type==TopAbs_SHELL)
426 TopTools_IndexedMapOfShape Shell;
427 TopExp::MapShapes(
ashape,TopAbs_SHELL, Shell);
428 for (
int i=1;i<=Shell.Extent();++i)
430 const TopoDS_Shell &shell=TopoDS::Shell(Shell.FindKey(i));
432 sprintf(idori,
"%d",fonction1.
GetID(shell));
436 TopTools_IndexedMapOfShape coquille;
437 TopExp::MapShapes(shell,TopAbs_SHELL, coquille);
438 int nb_shell_occ=coquille.Extent();
439 for (
int j=1; j<=nb_shell_occ; ++j)
441 const TopoDS_Shell &shell=TopoDS::Shell(coquille.FindKey(j));
445 TopTools_IndexedMapOfShape faces;
446 TopExp::MapShapes(shell,TopAbs_FACE, faces);
447 int nb_face_occ=faces.Extent();
448 for (
int k=1; k<=nb_face_occ;++k)
450 const TopoDS_Face &face=TopoDS::Face(faces.FindKey(k));
451 Handle(BRep_TFace) tface=Handle(BRep_TFace)::DownCast(face.TShape());
452 BRep_TFace* occface=tface.operator ->();
453 Handle(Geom_Surface) opsurface=BRep_Tool::Surface(face);
454 Geom_Surface* surface=opsurface.operator ->();
459 mgsurface=occsurface;
467 if (face.Orientation()==TopAbs_FORWARD) sens=1;
470 sprintf(idori,
"%d",fonction1.
GetID(face));
471 mgface=
new MG_FACE(idori,mgsurface,sens);
476 if (shell.Orientation()==TopAbs_FORWARD) sens=1;
481 TopTools_IndexedMapOfShape contours;
482 TopExp::MapShapes(face,TopAbs_WIRE, contours);
483 int nb_wire_occ=contours.Extent();
484 for (
int l=1; l<=nb_wire_occ; ++l)
489 const TopoDS_Wire &wire=TopoDS::Wire(contours.FindKey(l));
490 TopTools_IndexedMapOfShape arretes;
491 TopExp::MapShapes(wire,TopAbs_EDGE,arretes);
492 int nb_edge_occ=arretes.Extent();
493 for (
int m=1;
m<=nb_edge_occ;++
m)
495 const TopoDS_Edge &edge=TopoDS::Edge(arretes.FindKey(
m));
496 Handle(BRep_TEdge) tedge=Handle(BRep_TEdge)::DownCast(edge.TShape());
497 BRep_TEdge* occedge=tedge.operator ->();
498 Standard_Boolean degen1 = BRep_Tool::Degenerated(edge);
499 if (degen1)
continue;
501 const Handle(Geom_Curve)& opcurve=BRep_Tool::Curve(edge,first,last);
502 Geom_Curve* courbe=opcurve.operator ->();
503 TopTools_IndexedMapOfShape Solide;
504 TopExp::MapShapes(
ashape,TopAbs_SOLID, Solide);
505 for (
int i=1;i<=Solide.Extent();++i)
507 const TopoDS_Solid &solid=TopoDS::Solid(Solide.FindKey(i));
509 sprintf(idori,
"%d",fonction1.
GetID(solid));
513 TopTools_IndexedMapOfShape coquille;
514 TopExp::MapShapes(solid,TopAbs_SHELL, coquille);
515 int nb_shell_occ=coquille.Extent();
516 for (
int j=1; j<=nb_shell_occ; ++j)
518 const TopoDS_Shell &shell=TopoDS::Shell(coquille.FindKey(j));
522 TopTools_IndexedMapOfShape faces;
523 TopExp::MapShapes(shell,TopAbs_FACE, faces);
524 int nb_face_occ=faces.Extent();
525 for (
int k=1; k<=nb_face_occ;++k)
527 const TopoDS_Face &face=TopoDS::Face(faces.FindKey(k));
528 Handle(BRep_TFace) tface=Handle(BRep_TFace)::DownCast(face.TShape());
529 BRep_TFace* occface=tface.operator ->();
530 Handle(Geom_Surface) opsurface=BRep_Tool::Surface(face);
531 Geom_Surface* surface=opsurface.operator ->();
536 mgsurface=occsurface;
544 if (face.Orientation()==TopAbs_FORWARD) sens=1;
547 sprintf(idori,
"%d",fonction1.
GetID(face));
548 mgface=
new MG_FACE(idori,mgsurface,sens);
553 if (shell.Orientation()==TopAbs_FORWARD) sens=1;
558 TopTools_IndexedMapOfShape contours;
559 TopExp::MapShapes(face,TopAbs_WIRE, contours);
560 int nb_wire_occ=contours.Extent();
561 for (
int l=1; l<=nb_wire_occ; ++l)
566 const TopoDS_Wire &wire=TopoDS::Wire(contours.FindKey(l));
567 TopTools_IndexedMapOfShape arretes;
568 TopExp::MapShapes(wire,TopAbs_EDGE,arretes);
569 int nb_edge_occ=arretes.Extent();
570 for (
int m=1;
m<=nb_edge_occ;++
m)
572 const TopoDS_Edge &edge=TopoDS::Edge(arretes.FindKey(
m));
573 Handle(BRep_TEdge) tedge=Handle(BRep_TEdge)::DownCast(edge.TShape());
574 BRep_TEdge* occedge=tedge.operator ->();
575 Standard_Boolean degen1 = BRep_Tool::Degenerated(edge);
576 if (degen1)
continue;
578 const Handle(Geom_Curve)& opcurve=BRep_Tool::Curve(edge,first,last);
579 Geom_Curve* courbe=opcurve.operator ->();
591 const TopoDS_Vertex &vertex1=TopExp::FirstVertex(edge, Standard_False);
592 Handle(BRep_TVertex) tvertex1=Handle(BRep_TVertex)::DownCast(vertex1.TShape());
593 BRep_TVertex* occvertex1=tvertex1.operator ->();
594 gp_Pnt oppoint1=BRep_Tool::Pnt(vertex1);
604 sprintf(idori,
"%d",fonction1.
GetID(vertex1));
611 const TopoDS_Vertex &vertex2=TopExp::LastVertex(edge,Standard_False);
612 Handle(BRep_TVertex) tvertex2=Handle(BRep_TVertex)::DownCast(vertex2.TShape());
613 BRep_TVertex* occvertex2=tvertex2.operator ->();
614 gp_Pnt oppoint2=BRep_Tool::Pnt(vertex2);
623 sprintf(idori,
"%d",fonction1.
GetID(vertex2));
635 if (edge.Orientation()==TopAbs_FORWARD) sens=1;
638 sprintf(idori2,
"%d",fonction1.
GetID(edge));
639 mgarete=
new MG_ARETE(idori2,mgcourbe,sens);
649 if (edge.Orientation()==TopAbs_FORWARD) sens=1;
671 const TopoDS_Vertex &vertex1=TopExp::FirstVertex(edge, Standard_False);
672 Handle(BRep_TVertex) tvertex1=Handle(BRep_TVertex)::DownCast(vertex1.TShape());
673 BRep_TVertex* occvertex1=tvertex1.operator ->();
674 gp_Pnt oppoint1=BRep_Tool::Pnt(vertex1);
684 sprintf(idori,
"%d",fonction1.
GetID(vertex1));
691 const TopoDS_Vertex &vertex2=TopExp::LastVertex(edge,Standard_False);
692 Handle(BRep_TVertex) tvertex2=Handle(BRep_TVertex)::DownCast(vertex2.TShape());
693 BRep_TVertex* occvertex2=tvertex2.operator ->();
694 gp_Pnt oppoint2=BRep_Tool::Pnt(vertex2);
703 sprintf(idori,
"%d",fonction1.
GetID(vertex2));
715 if (edge.Orientation()==TopAbs_FORWARD) sens=1;
718 sprintf(idori2,
"%d",fonction1.
GetID(edge));
719 mgarete=
new MG_ARETE(idori2,mgcourbe,sens);
729 if (edge.Orientation()==TopAbs_FORWARD) sens=1;
742 else if (type==TopAbs_COMPOUND)
745 TopTools_IndexedMapOfShape Compounde;
746 TopExp::MapShapes(
ashape,TopAbs_COMPOUND, Compounde);
747 for (
int i=1;i<=Compounde.Extent();++i)
749 TopoDS_Compound compound=TopoDS::Compound(Compounde.FindKey(i));
750 TopTools_IndexedMapOfShape Solide;
751 TopExp::MapShapes(compound,TopAbs_SOLID, Solide);
752 int nbsolid=Solide.Extent();
753 TopTools_IndexedMapOfShape coque;
754 TopExp::MapShapes(compound,TopAbs_SHELL, coque);
755 int nbcoque=coque.Extent();
758 for (
int i=1;i<=n;++i)
763 TopTools_IndexedMapOfShape coquille;
766 const TopoDS_Solid& solid=TopoDS::Solid(Solide.FindKey(i));
768 sprintf(idori,
"%d",fonction1.
GetID(solid));
771 TopExp::MapShapes(solid,TopAbs_SHELL, coquille);
777 TopExp::MapShapes(compound,TopAbs_SHELL, coquille);
779 int nb_shell_occ=coquille.Extent();
780 for (
int j=1; j<=nb_shell_occ; ++j)
782 const TopoDS_Shell &shell=TopoDS::Shell(coquille.FindKey(j));
783 if (nbsolid==0) fonction1.
GetID(shell);
795 TopTools_IndexedMapOfShape faces;
796 TopExp::MapShapes(shell,TopAbs_FACE, faces);
797 int nb_face_occ=faces.Extent();
798 for (
int k=1; k<=nb_face_occ;++k)
800 const TopoDS_Face &face=TopoDS::Face(faces.FindKey(k));
801 Handle_BRep_TFace tface=Handle(BRep_TFace)::DownCast(face.TShape());
802 BRep_TFace* occface=tface.operator ->();
803 Handle(Geom_Surface) opsurface=BRep_Tool::Surface(face);
804 Geom_Surface* surface=opsurface.operator ->();
810 mgsurface=occsurface;
818 sprintf(idori,
"%d",fonction1.
GetID(face));
820 if (face.Orientation()==TopAbs_FORWARD) sens=1;
822 mgface=
new MG_FACE(idori,mgsurface,sens);
827 if (shell.Orientation()==TopAbs_FORWARD) sens=1;
831 TopTools_IndexedMapOfShape contours;
832 TopExp::MapShapes(face,TopAbs_WIRE, contours);
833 int nb_wire_occ=contours.Extent();
834 for (
int l=1; l<=nb_wire_occ; ++l)
839 const TopoDS_Wire &wire=TopoDS::Wire(contours.FindKey(l));
840 BRepTools_WireExplorer Ex;
841 for(Ex.Init(wire); Ex.More(); Ex.Next())
843 TopoDS_Edge edge=TopoDS::Edge(Ex.Current());
844 Handle(BRep_TEdge) tedge=Handle(BRep_TEdge)::DownCast(edge.TShape());
845 BRep_TEdge* occedge=tedge.operator ->();
846 Standard_Boolean degen1 = BRep_Tool::Degenerated(edge);
847 if (degen1)
continue;
850 Handle(Geom_Curve) opcurve=BRep_Tool::Curve(edge,first,last);
852 Geom_Curve* courbe=opcurve.operator ->();
864 const TopoDS_Vertex &vertex1=TopExp::FirstVertex(edge, Standard_False);
865 Handle(BRep_TVertex) tvertex1=Handle(BRep_TVertex)::DownCast(vertex1.TShape());
866 BRep_TVertex* occvertex1=tvertex1.operator ->();
867 gp_Pnt oppoint1=BRep_Tool::Pnt(vertex1);
876 sprintf(idori,
"%d",fonction1.
GetID(vertex1));
883 const TopoDS_Vertex &vertex2=TopExp::LastVertex(edge,Standard_False);
884 Handle(BRep_TVertex) tvertex2=Handle(BRep_TVertex)::DownCast(vertex2.TShape());
885 BRep_TVertex* occvertex2=tvertex2.operator ->();
886 gp_Pnt oppoint2=BRep_Tool::Pnt(vertex2);
895 sprintf(idori,
"%d",fonction1.
GetID(vertex2));
906 if (edge.Orientation()==TopAbs_FORWARD) sens=1;
909 sprintf(idori2,
"%d",fonction1.
GetID(edge));
910 mgarete=
new MG_ARETE(idori2,mgcourbe,sens);
920 if (edge.Orientation()==TopAbs_FORWARD) sens=1;
936 else if (type==TopAbs_COMPSOLID)
938 TopTools_IndexedMapOfShape Compsolide;
939 TopExp::MapShapes(
ashape,TopAbs_COMPSOLID, Compsolide);
940 for (
int i=1;i<=Compsolide.Extent();++i)
942 TopoDS_CompSolid compsolid=TopoDS::CompSolid(Compsolide.FindKey(i));
944 TopTools_IndexedMapOfShape Solide;
945 TopExp::MapShapes(compsolid,TopAbs_SOLID, Solide);
946 for (
int i=1;i<=Solide.Extent();++i)
948 const TopoDS_Solid &solid=TopoDS::Solid(Solide.FindKey(i));
950 sprintf(idori,
"%d",fonction1.
GetID(solid));
953 TopTools_IndexedMapOfShape coquille;
954 TopExp::MapShapes(solid,TopAbs_SHELL, coquille);
955 int nb_shell_occ=coquille.Extent();
956 for (
int j=1; j<=nb_shell_occ; ++j)
958 const TopoDS_Shell &shell=TopoDS::Shell(coquille.FindKey(j));
962 TopTools_IndexedMapOfShape faces;
963 TopExp::MapShapes(shell,TopAbs_FACE, faces);
964 int nb_face_occ=faces.Extent();
965 for (
int k=1; k<=nb_face_occ;++k)
967 const TopoDS_Face &face=TopoDS::Face(faces.FindKey(k));
968 Handle_BRep_TFace tface=Handle(BRep_TFace)::DownCast(face.TShape());
969 BRep_TFace* occface=tface.operator ->();
971 Handle(Geom_Surface) opsurface=BRep_Tool::Surface(face);
972 Geom_Surface* surface=opsurface.operator ->();
978 mgsurface=occsurface;
986 sprintf(idori,
"%d",fonction1.
GetID(face));
988 if (face.Orientation()==TopAbs_FORWARD) sens=1;
990 mgface=
new MG_FACE(idori,mgsurface,sens);
995 if (shell.Orientation()==TopAbs_FORWARD) sens=1;
1000 TopTools_IndexedMapOfShape contours;
1001 TopExp::MapShapes(face,TopAbs_WIRE, contours);
1002 int nb_wire_occ=contours.Extent();
1003 for (
int l=1; l<=nb_wire_occ; ++l)
1008 TopoDS_Wire wire=TopoDS::Wire(contours.FindKey(l));
1009 BRepTools_WireExplorer Ex;
1010 for(Ex.Init(wire); Ex.More(); Ex.Next())
1012 const TopoDS_Edge &edge=TopoDS::Edge(Ex.Current());
1013 Handle(BRep_TEdge) tedge=Handle(BRep_TEdge)::DownCast(edge.TShape());
1014 BRep_TEdge* occedge=tedge.operator ->();
1015 Standard_Boolean degen1 = BRep_Tool::Degenerated(edge);
1016 if (degen1)
continue;
1019 Handle(Geom_Curve) opcurve=BRep_Tool::Curve(edge,first,last);
1021 Geom_Curve* courbe=opcurve.operator ->();
1033 const TopoDS_Vertex &vertex1=TopExp::FirstVertex(edge, Standard_False);
1034 Handle(BRep_TVertex) tvertex1=Handle(BRep_TVertex)::DownCast(vertex1.TShape());
1035 BRep_TVertex* occvertex1=tvertex1.operator ->();
1036 gp_Pnt oppoint1=BRep_Tool::Pnt(vertex1);
1045 sprintf(idori,
"%d",fonction1.
GetID(vertex1));
1053 const TopoDS_Vertex &vertex2=TopExp::LastVertex(edge,Standard_False);
1054 Handle(BRep_TVertex) tvertex2=Handle(BRep_TVertex)::DownCast(vertex2.TShape());
1055 BRep_TVertex* occvertex2=tvertex2.operator ->();
1056 gp_Pnt oppoint2=BRep_Tool::Pnt(vertex2);
1065 sprintf(idori,
"%d",fonction1.
GetID(vertex2));
1076 if (edge.Orientation()==TopAbs_FORWARD) sens=1;
1079 sprintf(idori2,
"%d",fonction1.
GetID(edge));
1080 mgarete=
new MG_ARETE(idori2,mgcourbe,sens);
1090 if (edge.Orientation()==TopAbs_FORWARD) sens=1;
1107 LISTE_MG_FACE::iterator it_mg_face;
1125 BRep_Builder brep_builder;
1126 TopoDS_Compound Compound;
1127 brep_builder.MakeCompound(Compound);
1128 LISTE_MG_VOLUME::iterator it_volume;
1134 LISTE_MG_COQUILLE::iterator it_coquille;
1140 LISTE_MG_FACE::iterator it_face;
1146 LISTE_MG_BOUCLE::iterator it_boucle;
1152 LISTE_MG_ARETE::iterator it_arete;
1158 LISTE_MG_SOMMET::iterator it_sommet;
1164 BRepMesh_IncrementalMesh(Compound,
epsilon);
1169 std::multimap<double,MG_NOEUD*,std::less<double> > tabnoeudfus;
1170 for (
int i=0;i<nb_volume;i++)
1174 for (
int j=0;j<nb_coquille;j++)
1178 for (
int k=0;k<nbface;k++)
1181 if (facemaille.
existe(face))
continue;
1190 for (
int i=0;i<nbcoque;i++)
1193 if (
afusionne==
false) tabnoeudfus.clear();
1195 for (
int j=0;j<nb_coquille;j++)
1199 for (
int k=0;k<nbface;k++)
1202 if (facemaille.
existe(face))
continue;
1222 std::multimap<double,MG_NOEUD*,std::less<double> > tabnoeudfus;
1223 for (
int i=0;i<nb_volume;i++)
1226 if (
afusionne==
false) tabnoeudfus.clear();
1228 for (
int j=0;j<nb_coquille;j++)
1232 for (
int k=0;k<nbface;k++)
1235 if (facemaille.
existe(face))
continue;
1245 for (
int i=0;i<nbcoque;i++)
1248 if (
afusionne==
false) tabnoeudfus.clear();
1250 for (
int j=0;j<nb_coquille;j++)
1254 for (
int k=0;k<nbface;k++)
1257 if (facemaille.
existe(face))
continue;