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;
virtual void changer_cosommet1(class MG_COSOMMET *cosom)
virtual void changer_cosommet2(class MG_COSOMMET *cosom)
virtual void ajouter_mg_coarete(class MG_COARETE *mgcoarete)
virtual MG_FACE * get_face(void)
virtual int get_nb_mg_coquille(void)
virtual MG_COQUILLE * get_mg_coquille(int num)
virtual MG_COFACE * get_mg_coface(int num)
virtual void ajouter_mg_coface(class MG_COFACE *mgcoface)
virtual int get_nb_mg_coface(void)
virtual MG_SURFACE * get_surface(void)
MG_BOUCLE * get_premier_boucle(LISTE_MG_BOUCLE::iterator &it)
virtual int ajouter_mg_courbe(MG_COURBE *mgcrb)
virtual int ajouter_mg_face(MG_FACE *mgface)
virtual int ajouter_mg_coquille(MG_COQUILLE *mgcoq)
MG_COQUE * get_mg_coque(unsigned int num)
MG_COQUILLE * get_premier_coquille(LISTE_MG_COQUILLE::iterator &it)
virtual int ajouter_mg_surface(MG_SURFACE *mgsrf)
virtual int ajouter_mg_point(MG_POINT *mgpt)
virtual int ajouter_mg_coarete(MG_COARETE *mgcoarete)
virtual int ajouter_mg_volume(MG_VOLUME *mgvol)
MG_ARETE * get_suivant_arete(LISTE_MG_ARETE::iterator &it)
virtual int ajouter_mg_arete(MG_ARETE *mgarete)
virtual int ajouter_mg_coque(MG_COQUE *mgcoque)
unsigned int get_nb_mg_coque(void)
MG_ARETE * get_premier_arete(LISTE_MG_ARETE::iterator &it)
MG_FACE * get_premier_face(LISTE_MG_FACE::iterator &it)
virtual int ajouter_mg_cosommet(MG_COSOMMET *mgcosom)
MG_SOMMET * get_suivant_sommet(LISTE_MG_SOMMET::iterator &it)
MG_BOUCLE * get_suivant_boucle(LISTE_MG_BOUCLE::iterator &it)
MG_SOMMET * get_premier_sommet(LISTE_MG_SOMMET::iterator &it)
MG_VOLUME * get_mg_volume(unsigned int num)
virtual int ajouter_mg_boucle(MG_BOUCLE *mgboucle)
unsigned int get_nb_mg_volume(void)
MG_COQUILLE * get_suivant_coquille(LISTE_MG_COQUILLE::iterator &it)
MG_FACE * get_suivant_face(LISTE_MG_FACE::iterator &it)
class OCC_FONCTION & get_occ_fonction(void)
virtual int ajouter_mg_sommet(MG_SOMMET *mgsom)
MG_VOLUME * get_suivant_volume(LISTE_MG_VOLUME::iterator &it)
virtual int ajouter_mg_coface(MG_COFACE *mgcoface)
MG_VOLUME * get_premier_volume(LISTE_MG_VOLUME::iterator &it)
int ajouter_mg_geometrie(MG_GEOMETRIE *mggeo)
int ajouter_mg_maillage(MG_MAILLAGE *mgmai)
virtual MG_COQUILLE * get_mg_coquille(int num)
virtual int get_nb_mg_coquille(void)
TopoDS_Edge get_TopoDS_Edge(void)
TopoDS_Wire get_TopoDS_Wire(void)
TopoDS_Shell get_TopoDS_Shell(void)
TopoDS_Face get_TopoDS_Face(void)
virtual int importer_fichier_brep(char *file, std::map< MG_ELEMENT_TOPOLOGIQUE *, MG_ELEMENT_TOPOLOGIQUE * > *map_nouveau_mg_element_topologique, std::map< MG_ELEMENT_COTOPOLOGIQUE *, MG_ELEMENT_COTOPOLOGIQUE * > *map_nouveau_mg_element_cotopologique, std::map< MG_ELEMENT_GEOMETRIQUE *, MG_ELEMENT_GEOMETRIQUE * > *map_nouveau_mg_element_geometrique, MG_GEOMETRIE *mg_geometrie=NULL, bool fusionner_entite_similaire=false, double precision=1e-6)
virtual int importer_fichier_STEP(char *file, std::map< MG_ELEMENT_TOPOLOGIQUE *, MG_ELEMENT_TOPOLOGIQUE * > *map_nouveau_mg_element_topologique, std::map< MG_ELEMENT_COTOPOLOGIQUE *, MG_ELEMENT_COTOPOLOGIQUE * > *map_nouveau_mg_element_cotopologique, std::map< MG_ELEMENT_GEOMETRIQUE *, MG_ELEMENT_GEOMETRIQUE * > *map_nouveau_mg_element_geometrique, MG_GEOMETRIE *mg_geometrie=NULL, bool fusionner_entite_similaire=false, double precision=1e-6)
virtual TopoDS_Shape & GetShapePrincipale(void)
virtual void change_precision(double val)
virtual void marquer_sommet_pole(class MG_FACE *face, double precision=1.0e-06)
virtual int GetID(const TopoDS_Shape &shape)
std::vector< TPL_RELATION_ENTITE< BRep_TVertex, MG_SOMMET > > lst_sommet
class MG_GEOMETRIE * importer(class MG_GESTIONNAIRE &gest, char *path, int typefichier, double precision=1e-6)
void fusionne(MG_GEOMETRIE *mggeo)
std::vector< TPL_RELATION_ENTITE< BRep_TFace,MG_FACE > > lst_face
class MG_MAILLAGE * importer_triangulation_V2017(class MG_GESTIONNAIRE &gest, MG_GEOMETRIE *mggeo, double epsilon=1., int mode=1)
std::vector< TPL_RELATION_ENTITE< BRep_TEdge, MG_ARETE > > lst_arete
class MG_GEOMETRIE * importer_fichier_brep_V2017(class MG_GESTIONNAIRE &gest, char *path_brep, char *nom_caf, int typefichier, double precision=1e-6, bool fusionner_entite_similaire=false)
MG_FACE * trouver(BRep_TFace *face)
void relation(BRep_TFace *ent1, class MG_FACE *ent2)
class MG_GEOMETRIE * importer_fichier_STEP_V2017(class MG_GESTIONNAIRE &gest, char *path_step, char *nom_caf, int typefichier, double precision=1e-6, bool fusionner_entite_similaire=false)
TopoDS_Vertex get_TopoDS_Vertex(void)
virtual void get_triangulation(class MG_MAILLAGE *mai, class MG_FACE *face, std::multimap< double, class MG_NOEUD *, std::less< double > > &tabnoeudfusm, double eps, int mode)
TopoDS_Solid get_TopoDS_Solid(void)
virtual void ajouter(X x)
void recherche_identite(void)