ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/geometrie/src/ot_geometrie.cpp
Revision: 907
Committed: Mon Nov 13 22:45:44 2017 UTC (7 years, 6 months ago) by couturad
File size: 17440 byte(s)
Log Message:
* Ajout d'une nouvelle fonction d'importation d'OpenCascade
* Ajout de d'une nouvelle commande d'importation de fichier brep d'OpenCascade dans mgoperation.exe
* Ajout de d'une nouvelle commande d'importation de fichier STEP via OpenCascade dans mgoperation.exe
* Ajout d'un nouveau module de construction géométrique
* Modification du mgscript pour l'utilisation du module de construction géométrique
* Ajout d'une fonction qui renvoie le type d'élément topologique
* Ajout d'une fonction qui renvoie le type d'élément cotopologique
* Ajout d'une fonction qui renvoie le type d'élément géométrique
* Ajout d'une classe statique d'outils pour en lien avec la librairie géométrie
* Modification du cas test pour mgscript

File Contents

# User Rev Content
1 couturad 907 #include "ot_geometrie.h"
2     #include "ot_mathematique.h"
3     #ifdef ALL_OCC
4     #include <BRepExtrema_DistShapeShape.hxx>
5     #include <GeomAPI_ProjectPointOnCurve.hxx>
6     #include <GeomAPI_ProjectPointOnSurf.hxx>
7     #include <ShapeAnalysis.hxx>
8     #include <BRepBuilderAPI_MakeVertex.hxx>
9     #endif
10    
11     OT_GEOMETRIE::OT_GEOMETRIE()
12     {
13    
14     }
15    
16     OT_GEOMETRIE::~OT_GEOMETRIE()
17     {
18    
19     }
20    
21     int OT_GEOMETRIE::projection_orthogonale_sur_mg_arete(double* xyz, MG_ARETE* mgarete, double& t)
22     {
23     #ifdef ALL_OCC
24     gp_Pnt point(xyz[0],xyz[1],xyz[2]);
25     TopoDS_Edge edge = ((OCC_ARETE*)mgarete)->get_TopoDS_Edge();
26     GeomAPI_ProjectPointOnCurve projecteur;
27     double t0,t1;
28     Handle(Geom_Curve) courbe_edge = BRep_Tool::Curve(edge,t0,t1);
29     projecteur.Init(point,courbe_edge,t0,t1);
30     if(projecteur.NbPoints()==0) return FAIL;
31     t = projecteur.LowerDistanceParameter();
32     return OK;
33     #endif
34     }
35    
36     int OT_GEOMETRIE::projection_orthogonale_sur_mg_face(double* xyz, MG_FACE* mgface,double* xyz2)
37     {
38     #ifdef ALL_OCC
39     gp_Pnt point(xyz[0],xyz[1],xyz[2]);
40     TopoDS_Face face = ((OCC_FACE*)mgface)->get_TopoDS_Face();
41     GeomAPI_ProjectPointOnSurf projecteur;
42     double u0,u1,v0,v1;
43     ShapeAnalysis::GetFaceUVBounds(face,u0,u1,v0,v1);
44     Handle(Geom_Surface) surface = BRep_Tool::Surface(face);
45     projecteur.Init(point,surface,u0,u1,v0,v1);
46     if(!projecteur.IsDone()) return FAIL;
47     if(projecteur.NbPoints()==0) return FAIL;
48     gp_Pnt point2 = projecteur.Point(1);
49     xyz2[0]= point2.X();
50     xyz2[1]= point2.Y();
51     xyz2[2]= point2.Z();
52     return OK;
53     #endif
54     }
55    
56     int OT_GEOMETRIE::projection_au_plus_pres_sur_mg_face(double* xyz, MG_FACE* mgface, double* xyz2)
57     {
58     #ifdef ALL_OCC
59     gp_Pnt point(xyz[0],xyz[1],xyz[2]);
60     BRepBuilderAPI_MakeVertex makevertex(point);
61     TopoDS_Vertex vertex=makevertex.Vertex();
62     TopoDS_Face face = ((OCC_FACE*)mgface)->get_TopoDS_Face();
63     BRepExtrema_DistShapeShape distshapeshape(vertex,face);
64     distshapeshape.Perform();
65     if(!distshapeshape.IsDone()) return FAIL;
66     gp_Pnt point2= distshapeshape.PointOnShape2(1);
67     xyz2[0]=point2.X();
68     xyz2[1]=point2.Y();
69     xyz2[2]=point2.Z();
70     return OK;
71     #endif
72     }
73    
74    
75     void OT_GEOMETRIE::get_param_face(MG_FACE* mgface, double &umin, double &umax, double &vmin, double &vmax)
76     {
77     #ifdef ALL_OCC
78     TopoDS_Face face = ((OCC_FACE*)mgface)->get_TopoDS_Face();
79     ShapeAnalysis::GetFaceUVBounds(face,umin,umax,vmin,vmax);
80     #endif
81     }
82    
83     int OT_GEOMETRIE::get_distance_min_mg_volume_mg_volume(MG_VOLUME* mgvolume1, MG_VOLUME* mgvolume2,double &distance)
84     {
85     #ifdef ALL_OCC
86     TopoDS_Solid solid1 = ((OCC_VOLUME*)mgvolume1)->get_TopoDS_Solid();
87     TopoDS_Solid solid2 = ((OCC_VOLUME*)mgvolume2)->get_TopoDS_Solid();
88     BRepExtrema_DistShapeShape distshapeshape(solid1,solid2);
89     distshapeshape.Perform();
90     if(!distshapeshape.IsDone()) return FAIL;
91     distance=distshapeshape.Value();
92     return OK;
93     #endif
94     }
95    
96     int OT_GEOMETRIE::get_distance_min_mg_face_mg_volume(MG_FACE* mgface, MG_VOLUME* mgvolume, double& distance)
97     {
98     #ifdef ALL_OCC
99     TopoDS_Face face = ((OCC_FACE*)mgface)->get_TopoDS_Face();
100     TopoDS_Solid solid = ((OCC_VOLUME*)mgvolume)->get_TopoDS_Solid();
101     BRepExtrema_DistShapeShape distshapeshape(face,solid);
102     distshapeshape.Perform();
103     if(!distshapeshape.IsDone()) return FAIL;
104     distance=distshapeshape.Value();
105     return OK;
106     #endif
107     }
108    
109    
110     void OT_GEOMETRIE::get_map_mg_sommet_sous_jacent(MG_ELEMENT_TOPOLOGIQUE* mgeletopo, TPL_MAP_ENTITE< MG_SOMMET* >& map_sommet)
111     {
112     TPL_MAP_ENTITE<MG_ELEMENT_TOPOLOGIQUE*> map_ele_topo;
113     mgeletopo->get_topologie_sousjacente(&map_ele_topo);
114     TPL_MAP_ENTITE<MG_ELEMENT_TOPOLOGIQUE*>::ITERATEUR it;
115     for(MG_ELEMENT_TOPOLOGIQUE *ele=map_ele_topo.get_premier(it);ele!=NULL;ele=map_ele_topo.get_suivant(it))
116     {
117     if(ele->get_type()==MG_ELEMENT_TOPOLOGIQUE::TYPE_ELEMENT_TOPOLOGIQUE::SOMMET)
118     {
119     map_sommet.ajouter(dynamic_cast<MG_SOMMET*>(ele));
120     }
121     }
122     }
123    
124     void OT_GEOMETRIE::get_map_mg_arete_sous_jacent(MG_ELEMENT_TOPOLOGIQUE* mgeletopo, TPL_MAP_ENTITE< MG_ARETE* >& map_arete)
125     {
126     TPL_MAP_ENTITE<MG_ELEMENT_TOPOLOGIQUE*> map_ele_topo;
127     mgeletopo->get_topologie_sousjacente(&map_ele_topo);
128     TPL_MAP_ENTITE<MG_ELEMENT_TOPOLOGIQUE*>::ITERATEUR it;
129     for(MG_ELEMENT_TOPOLOGIQUE *ele=map_ele_topo.get_premier(it);ele!=NULL;ele=map_ele_topo.get_suivant(it))
130     {
131     if(ele->get_type()==MG_ELEMENT_TOPOLOGIQUE::TYPE_ELEMENT_TOPOLOGIQUE::ARETE)
132     {
133     map_arete.ajouter(dynamic_cast<MG_ARETE*>(ele));
134     }
135     }
136     }
137    
138     void OT_GEOMETRIE::get_map_mg_face_sous_jacent(MG_ELEMENT_TOPOLOGIQUE* mgeletopo, TPL_MAP_ENTITE< MG_FACE* >& map_face)
139     {
140     TPL_MAP_ENTITE<MG_ELEMENT_TOPOLOGIQUE*> map_ele_topo;
141     mgeletopo->get_topologie_sousjacente(&map_ele_topo);
142     TPL_MAP_ENTITE<MG_ELEMENT_TOPOLOGIQUE*>::ITERATEUR it;
143     for(MG_ELEMENT_TOPOLOGIQUE *ele=map_ele_topo.get_premier(it);ele!=NULL;ele=map_ele_topo.get_suivant(it))
144     {
145     if(ele->get_type()==MG_ELEMENT_TOPOLOGIQUE::TYPE_ELEMENT_TOPOLOGIQUE::FACE)
146     {
147     map_face.ajouter(dynamic_cast<MG_FACE*>(ele));
148     }
149     }
150     }
151    
152     void OT_GEOMETRIE::get_map_mg_point_sous_jacent(MG_ELEMENT_TOPOLOGIQUE* mgeletopo, TPL_MAP_ENTITE< MG_POINT* >& map_point)
153     {
154     TPL_MAP_ENTITE<MG_SOMMET*> map_sommet;
155     get_map_mg_sommet_sous_jacent(mgeletopo,map_sommet);
156     TPL_MAP_ENTITE<MG_SOMMET*>::ITERATEUR it;
157     for(MG_SOMMET* sommet=map_sommet.get_premier(it);sommet!=NULL;sommet=map_sommet.get_suivant(it))
158     map_point.ajouter(sommet->get_point());
159     }
160    
161     void OT_GEOMETRIE::get_map_mg_courbe_sous_jacent(MG_ELEMENT_TOPOLOGIQUE* mgeletopo, TPL_MAP_ENTITE< MG_COURBE* >& map_courbe)
162     {
163     TPL_MAP_ENTITE<MG_ARETE*> map_arete;
164     get_map_mg_arete_sous_jacent(mgeletopo,map_arete);
165     TPL_MAP_ENTITE<MG_ARETE*>::ITERATEUR it;
166     for(MG_ARETE* arete=map_arete.get_premier(it);arete!=NULL;arete=map_arete.get_suivant(it))
167     map_courbe.ajouter(arete->get_courbe());
168     }
169    
170     void OT_GEOMETRIE::get_map_mg_surface_sous_jacent(MG_ELEMENT_TOPOLOGIQUE* mgeletopo, TPL_MAP_ENTITE< MG_SURFACE* >& map_surface)
171     {
172     TPL_MAP_ENTITE<MG_FACE*> map_face;
173     get_map_mg_face_sous_jacent(mgeletopo,map_face);
174     TPL_MAP_ENTITE<MG_FACE*>::ITERATEUR it;
175     for(MG_FACE* face=map_face.get_premier(it);face!=NULL;face=map_face.get_suivant(it))
176     map_surface.ajouter(face->get_surface());
177     }
178    
179     void OT_GEOMETRIE::get_map_mg_element_sous_jacent(MG_SOMMET* sommet,
180     TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE* >* map_mg_element_topologique,
181     TPL_MAP_ENTITE< MG_ELEMENT_COTOPOLOGIQUE* >* map_mg_element_cotopologique,
182     TPL_MAP_ENTITE< MG_ELEMENT_GEOMETRIQUE* >* map_mg_element_geometrique)
183     {
184     if(map_mg_element_geometrique!=NULL) map_mg_element_geometrique->ajouter(sommet->get_point());
185     }
186    
187     void OT_GEOMETRIE::get_map_mg_element_sous_jacent(MG_COSOMMET* cosommet,
188     TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE* >* map_mg_element_topologique,
189     TPL_MAP_ENTITE< MG_ELEMENT_COTOPOLOGIQUE* >* map_mg_element_cotopologique,
190     TPL_MAP_ENTITE< MG_ELEMENT_GEOMETRIQUE* >* map_mg_element_geometrique)
191     {
192     if(map_mg_element_topologique!=NULL) map_mg_element_topologique->ajouter(cosommet->get_sommet());
193     get_map_mg_element_sous_jacent(cosommet->get_sommet(),
194     map_mg_element_topologique,
195     map_mg_element_cotopologique,
196     map_mg_element_geometrique);
197     }
198    
199     void OT_GEOMETRIE::get_map_mg_element_sous_jacent(MG_ARETE* arete,
200     TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE* >* map_mg_element_topologique,
201     TPL_MAP_ENTITE< MG_ELEMENT_COTOPOLOGIQUE* >* map_mg_element_cotopologique,
202     TPL_MAP_ENTITE< MG_ELEMENT_GEOMETRIQUE* >* map_mg_element_geometrique)
203     {
204     if(map_mg_element_cotopologique!=NULL)
205     {
206     map_mg_element_cotopologique->ajouter(arete->get_cosommet1());
207     map_mg_element_cotopologique->ajouter(arete->get_cosommet2());
208     }
209     if(map_mg_element_geometrique!=NULL) map_mg_element_geometrique->ajouter(arete->get_courbe());
210     get_map_mg_element_sous_jacent(arete->get_cosommet1(),
211     map_mg_element_topologique,
212     map_mg_element_cotopologique,
213     map_mg_element_geometrique);
214     get_map_mg_element_sous_jacent(arete->get_cosommet2(),
215     map_mg_element_topologique,
216     map_mg_element_cotopologique,
217     map_mg_element_geometrique);
218     }
219    
220     void OT_GEOMETRIE::get_map_mg_element_sous_jacent(MG_COARETE* coarete,
221     TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE* >* map_mg_element_topologique,
222     TPL_MAP_ENTITE< MG_ELEMENT_COTOPOLOGIQUE* >* map_mg_element_cotopologique,
223     TPL_MAP_ENTITE< MG_ELEMENT_GEOMETRIQUE* >* map_mg_element_geometrique)
224     {
225     if(map_mg_element_topologique!=NULL) map_mg_element_topologique->ajouter(coarete->get_arete());
226     get_map_mg_element_sous_jacent(coarete->get_arete(),
227     map_mg_element_topologique,
228     map_mg_element_cotopologique,
229     map_mg_element_geometrique);
230     }
231    
232     void OT_GEOMETRIE::get_map_mg_element_sous_jacent(MG_BOUCLE* boucle,
233     TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE* >* map_mg_element_topologique,
234     TPL_MAP_ENTITE< MG_ELEMENT_COTOPOLOGIQUE* >* map_mg_element_cotopologique,
235     TPL_MAP_ENTITE< MG_ELEMENT_GEOMETRIQUE* >* map_mg_element_geometrique)
236     {
237     for(int i=0;i<boucle->get_nb_mg_coarete();i++)
238     {
239     if(map_mg_element_cotopologique!=NULL) map_mg_element_cotopologique->ajouter(boucle->get_mg_coarete(i));
240     get_map_mg_element_sous_jacent(boucle->get_mg_coarete(i),
241     map_mg_element_topologique,
242     map_mg_element_cotopologique,
243     map_mg_element_geometrique);
244     }
245     }
246    
247     void OT_GEOMETRIE::get_map_mg_element_sous_jacent(MG_POUTRE* poutre,
248     TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE* >* map_mg_element_topologique,
249     TPL_MAP_ENTITE< MG_ELEMENT_COTOPOLOGIQUE* >* map_mg_element_cotopologique,
250     TPL_MAP_ENTITE< MG_ELEMENT_GEOMETRIQUE* >* map_mg_element_geometrique)
251     {
252     for(int i=0;i<poutre->get_nb_mg_boucle();i++)
253     {
254     if(map_mg_element_cotopologique!=NULL) map_mg_element_cotopologique->ajouter(poutre->get_mg_boucle(i));
255     get_map_mg_element_sous_jacent(poutre->get_mg_boucle(i),
256     map_mg_element_topologique,
257     map_mg_element_cotopologique,
258     map_mg_element_geometrique);
259     }
260     }
261    
262     void OT_GEOMETRIE::get_map_mg_element_sous_jacent(MG_FACE* face,
263     TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE* >* map_mg_element_topologique,
264     TPL_MAP_ENTITE< MG_ELEMENT_COTOPOLOGIQUE* >* map_mg_element_cotopologique,
265     TPL_MAP_ENTITE< MG_ELEMENT_GEOMETRIQUE* >* map_mg_element_geometrique)
266     {
267     for(int i=0;i<face->get_nb_mg_boucle();i++)
268     {
269     if(map_mg_element_cotopologique!=NULL) map_mg_element_cotopologique->ajouter(face->get_mg_boucle(i));
270     get_map_mg_element_sous_jacent(face->get_mg_boucle(i),
271     map_mg_element_topologique,
272     map_mg_element_cotopologique,
273     map_mg_element_geometrique);
274     }
275     if(map_mg_element_geometrique!=NULL) map_mg_element_geometrique->ajouter(face->get_surface());
276     }
277    
278     void OT_GEOMETRIE::get_map_mg_element_sous_jacent(MG_COFACE* coface,
279     TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE* >* map_mg_element_topologique,
280     TPL_MAP_ENTITE< MG_ELEMENT_COTOPOLOGIQUE* >* map_mg_element_cotopologique,
281     TPL_MAP_ENTITE< MG_ELEMENT_GEOMETRIQUE* >* map_mg_element_geometrique)
282     {
283     if(map_mg_element_topologique!=NULL) map_mg_element_topologique->ajouter(coface->get_face());
284     get_map_mg_element_sous_jacent(coface->get_face(),
285     map_mg_element_topologique,
286     map_mg_element_cotopologique,
287     map_mg_element_geometrique);
288     }
289    
290     void OT_GEOMETRIE::get_map_mg_element_sous_jacent(MG_COQUILLE* coquille,
291     TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE* >* map_mg_element_topologique,
292     TPL_MAP_ENTITE< MG_ELEMENT_COTOPOLOGIQUE* >* map_mg_element_cotopologique,
293     TPL_MAP_ENTITE< MG_ELEMENT_GEOMETRIQUE* >* map_mg_element_geometrique)
294     {
295     for(int i=0;i<coquille->get_nb_mg_coface();i++)
296     {
297     if(map_mg_element_cotopologique!=NULL) map_mg_element_cotopologique->ajouter(coquille->get_mg_coface(i));
298     get_map_mg_element_sous_jacent(coquille->get_mg_coface(i),
299     map_mg_element_topologique,
300     map_mg_element_cotopologique,
301     map_mg_element_geometrique);
302     }
303     }
304    
305     void OT_GEOMETRIE::get_map_mg_element_sous_jacent(MG_VOLUME* volume,
306     TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE* >* map_mg_element_topologique,
307     TPL_MAP_ENTITE< MG_ELEMENT_COTOPOLOGIQUE* >* map_mg_element_cotopologique,
308     TPL_MAP_ENTITE< MG_ELEMENT_GEOMETRIQUE* >* map_mg_element_geometrique)
309     {
310     for(int i=0;i<volume->get_nb_mg_coquille();i++)
311     {
312     if(map_mg_element_cotopologique!=NULL) map_mg_element_cotopologique->ajouter(volume->get_mg_coquille(i));
313     get_map_mg_element_sous_jacent(volume->get_mg_coquille(i),
314     map_mg_element_topologique,
315     map_mg_element_cotopologique,
316     map_mg_element_geometrique);
317     }
318     }
319    
320     void OT_GEOMETRIE::get_map_mg_element_sous_jacent(MG_COQUE* coque,
321     TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE* >* map_mg_element_topologique,
322     TPL_MAP_ENTITE< MG_ELEMENT_COTOPOLOGIQUE* >* map_mg_element_cotopologique,
323     TPL_MAP_ENTITE< MG_ELEMENT_GEOMETRIQUE* >* map_mg_element_geometrique)
324     {
325     for(int i=0;i<coque->get_nb_mg_coquille();i++)
326     {
327     if(map_mg_element_cotopologique!=NULL) map_mg_element_cotopologique->ajouter(coque->get_mg_coquille(i));
328     get_map_mg_element_sous_jacent(coque->get_mg_coquille(i),
329     map_mg_element_topologique,
330     map_mg_element_cotopologique,
331     map_mg_element_geometrique);
332     }
333     }
334    
335     void OT_GEOMETRIE::get_map_mg_element_sous_jacent(MG_ELEMENT_TOPOLOGIQUE* mg_element_topologique,
336     TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE* >* map_mg_element_topologique,
337     TPL_MAP_ENTITE< MG_ELEMENT_COTOPOLOGIQUE* >* map_mg_element_cotopologique,
338     TPL_MAP_ENTITE< MG_ELEMENT_GEOMETRIQUE* >* map_mg_element_geometrique)
339     {
340     switch(mg_element_topologique->get_type())
341     {
342     case MG_ELEMENT_TOPOLOGIQUE::TYPE_ELEMENT_TOPOLOGIQUE::SOMMET:
343     {
344     MG_SOMMET* sommet = (MG_SOMMET*)mg_element_topologique;
345     get_map_mg_element_sous_jacent(sommet,
346     map_mg_element_topologique,
347     map_mg_element_cotopologique,
348     map_mg_element_geometrique);
349     break;
350     }
351     case MG_ELEMENT_TOPOLOGIQUE::TYPE_ELEMENT_TOPOLOGIQUE::ARETE:
352     {
353     MG_ARETE* arete = (MG_ARETE*)mg_element_topologique;
354     get_map_mg_element_sous_jacent(arete,
355     map_mg_element_topologique,
356     map_mg_element_cotopologique,
357     map_mg_element_geometrique);
358     break;
359     }
360     case MG_ELEMENT_TOPOLOGIQUE::TYPE_ELEMENT_TOPOLOGIQUE::FACE:
361     {
362     MG_FACE* face = (MG_FACE*)mg_element_topologique;
363     get_map_mg_element_sous_jacent(face,
364     map_mg_element_topologique,
365     map_mg_element_cotopologique,
366     map_mg_element_geometrique);
367     break;
368     }
369     case MG_ELEMENT_TOPOLOGIQUE::TYPE_ELEMENT_TOPOLOGIQUE::VOLUME:
370     {
371     MG_VOLUME* volume = (MG_VOLUME*)mg_element_topologique;
372     get_map_mg_element_sous_jacent(volume,
373     map_mg_element_topologique,
374     map_mg_element_cotopologique,
375     map_mg_element_geometrique);
376     break;
377     }
378     case MG_ELEMENT_TOPOLOGIQUE::TYPE_ELEMENT_TOPOLOGIQUE::COQUE:
379     {
380     MG_COQUE* coque = (MG_COQUE*)mg_element_topologique;
381     get_map_mg_element_sous_jacent(coque,
382     map_mg_element_topologique,
383     map_mg_element_cotopologique,
384     map_mg_element_geometrique);
385     break;
386     }
387     case MG_ELEMENT_TOPOLOGIQUE::TYPE_ELEMENT_TOPOLOGIQUE::POUTRE:
388     {
389     MG_POUTRE* poutre = (MG_POUTRE*)mg_element_topologique;
390     get_map_mg_element_sous_jacent(poutre,
391     map_mg_element_topologique,
392     map_mg_element_cotopologique,
393     map_mg_element_geometrique);
394     break;
395     }
396     }
397     }
398    
399     void OT_GEOMETRIE::get_map_mg_element_sous_jacent(MG_ELEMENT_COTOPOLOGIQUE* mg_element_cotopologique,
400     TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE* >* map_mg_element_topologique,
401     TPL_MAP_ENTITE< MG_ELEMENT_COTOPOLOGIQUE* >* map_mg_element_cotopologique,
402     TPL_MAP_ENTITE< MG_ELEMENT_GEOMETRIQUE* >* map_mg_element_geometrique)
403     {
404     switch(mg_element_cotopologique->get_type())
405     {
406     case MG_ELEMENT_COTOPOLOGIQUE::TYPE_ELEMENT_COTOPOLOGIQUE::COSOMMET:
407     {
408     MG_COSOMMET* cosommet = (MG_COSOMMET*)mg_element_cotopologique;
409     get_map_mg_element_sous_jacent(cosommet,
410     map_mg_element_topologique,
411     map_mg_element_cotopologique,
412     map_mg_element_geometrique);
413     break;
414     }
415     case MG_ELEMENT_COTOPOLOGIQUE::TYPE_ELEMENT_COTOPOLOGIQUE::COARETE:
416     {
417     MG_COARETE* coarete = (MG_COARETE*)mg_element_cotopologique;
418     get_map_mg_element_sous_jacent(coarete,
419     map_mg_element_topologique,
420     map_mg_element_cotopologique,
421     map_mg_element_geometrique);
422     break;
423     }
424     case MG_ELEMENT_COTOPOLOGIQUE::TYPE_ELEMENT_COTOPOLOGIQUE::BOUCLE:
425     {
426     MG_BOUCLE* boucle = (MG_BOUCLE*)mg_element_cotopologique;
427     get_map_mg_element_sous_jacent(boucle,
428     map_mg_element_topologique,
429     map_mg_element_cotopologique,
430     map_mg_element_geometrique);
431     break;
432     }
433     case MG_ELEMENT_COTOPOLOGIQUE::TYPE_ELEMENT_COTOPOLOGIQUE::COFACE:
434     {
435     MG_COFACE* coface = (MG_COFACE*)mg_element_cotopologique;
436     get_map_mg_element_sous_jacent(coface,
437     map_mg_element_topologique,
438     map_mg_element_cotopologique,
439     map_mg_element_geometrique);
440     break;
441     }
442     case MG_ELEMENT_COTOPOLOGIQUE::TYPE_ELEMENT_COTOPOLOGIQUE::COQUILLE:
443     {
444     MG_COQUILLE* coquille = (MG_COQUILLE*)mg_element_cotopologique;
445     get_map_mg_element_sous_jacent(coquille,
446     map_mg_element_topologique,
447     map_mg_element_cotopologique,
448     map_mg_element_geometrique);
449     break;
450     }
451     }
452     }
453    
454    
455    
456    
457    
458    
459    
460    
461