ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/criaqoperation/src/criaqoperators.cpp
Revision: 600
Committed: Wed Nov 19 02:57:26 2014 UTC (10 years, 8 months ago) by sattarpa
File size: 52279 byte(s)
Log Message:
remove a bug in maillour2d_ins_noeud, and modification in criaqoperation

File Contents

# User Rev Content
1 sattarpa 554 #include <stdio.h>
2     #include "mg_file.h"
3     #include "criaqoperators.h"
4 sattarpa 596 #include "tpl_grille.h"
5     #include "ot_mathematique.h"
6     #include <math.h>
7     #include "tpl_octree.h"
8 sattarpa 554
9 sattarpa 596 CRIAQOPERATORS::CRIAQOPERATORS():MAILLEUR(false)
10 sattarpa 554 {
11     }
12 sattarpa 596
13     CRIAQOPERATORS::~CRIAQOPERATORS()
14 sattarpa 554 {
15     }
16 sattarpa 596 void CRIAQOPERATORS::meshdistance_compare(char* referencemagicfilename,int refmeshno,char* comparemagicfilename,int compmeshno,char* outputcomparefile)
17 sattarpa 554 {
18 sattarpa 596 MG_FILE refgest(referencemagicfilename);
19     MG_MAILLAGE* refmgmai;
20 sattarpa 600 if (refmeshno==0) refmgmai=refgest.get_mg_maillage(refmeshno); else refmgmai=refgest.get_mg_maillageid(refmeshno);
21 sattarpa 596 MG_FILE compgest(comparemagicfilename);
22     MG_MAILLAGE* compmgmai;
23 sattarpa 600 if (compmeshno==0) compmgmai=compgest.get_mg_maillage(compmeshno); else compmgmai=compgest.get_mg_maillageid(compmeshno);
24 sattarpa 596 /*MG_FILE refgest((char*)"cad_caseA_1mmesh_winspbc.magic");
25     MG_FILE compgest((char*)"deformedgnifcad_caseA_1mmesh_winspbc_removedmodified.magic");
26     MG_MAILLAGE* refmgmai=refgest.get_mg_maillageid(319270);
27     MG_MAILLAGE* compmgmai=compgest.get_mg_maillageid(1);*/
28     //octree initialization
29     double xmin=1e308,ymin=1e308,zmin=1e308,xmax=-1e308,ymax=-1e308,zmax=-1e308;
30     TPL_MAP_ENTITE<MG_NOEUD*> lstnoeud;
31     LISTE_MG_NOEUD::iterator it;
32     for (MG_NOEUD* no=refmgmai->get_premier_noeud(it);no!=NULL;no=refmgmai->get_suivant_noeud(it))
33     {
34     if (no->get_x()<xmin) xmin=no->get_x();
35     if (no->get_y()<ymin) ymin=no->get_y();
36     if (no->get_z()<zmin) zmin=no->get_z();
37     if (no->get_x()>xmax) xmax=no->get_x();
38     if (no->get_y()>ymax) ymax=no->get_y();
39     if (no->get_z()>zmax) zmax=no->get_z();
40     }
41     for (MG_NOEUD* no=compmgmai->get_premier_noeud(it);no!=NULL;no=compmgmai->get_suivant_noeud(it))
42     {
43     if (no->get_x()<xmin) xmin=no->get_x();
44     if (no->get_y()<ymin) ymin=no->get_y();
45     if (no->get_z()<zmin) zmin=no->get_z();
46     if (no->get_x()>xmax) xmax=no->get_x();
47     if (no->get_y()>ymax) ymax=no->get_y();
48     if (no->get_z()>zmax) zmax=no->get_z();
49     lstnoeud.ajouter(no);
50     }
51     OT_VECTEUR_3D vecmin(xmin,ymin,zmin);OT_VECTEUR_3D vecmmax(xmax,ymax,zmax);
52     OT_VECTEUR_3D vec(vecmmax,vecmin);
53    
54     //double search_radius=0.001*(vec.get_longueur());
55     double search_radius=3.;
56     OT_VECTEUR_3D min(xmin,ymin,zmin); OT_VECTEUR_3D max(xmax,ymax,zmax); OT_VECTEUR_3D average=(min+max)/2.; OT_VECTEUR_3D lengthvec(min,max);
57     double length=sqrt(lengthvec*lengthvec); double bxr=1.1;
58     xmin=average.get_x()-(length*bxr);ymin=average.get_y()-(length*bxr);zmin=average.get_z()-(length*bxr);
59     xmax=average.get_x()+(length*bxr);ymax=average.get_y()+(length*bxr);zmax=average.get_z()+(length*bxr);
60    
61     TPL_OCTREE<MG_NOEUD*,MG_NOEUD*> octree;
62     octree.initialiser(&lstnoeud,1,xmin,ymin,zmin,xmax,ymax,zmax);
63     for (MG_NOEUD* no=compmgmai->get_premier_noeud(it);no!=NULL;no=compmgmai->get_suivant_noeud(it))
64     octree.inserer(no);
65    
66     MG_SOLUTION* mgsol=new MG_SOLUTION(refmgmai,1,"distance.sol",1,"Normaldistance",MAGIC::ENTITE_SOLUTION::ENTITE_NOEUD,MAGIC::TYPE_SOLUTION::SCALAIRE);
67     refgest.ajouter_mg_solution(mgsol);
68     mgsol->change_legende(0,"Normaldistance");
69     int i=0;
70     for (MG_NOEUD* nop=refmgmai->get_premier_noeud(it);nop!=NULL;nop=refmgmai->get_suivant_noeud(it))
71     {
72     TPL_MAP_ENTITE<MG_NOEUD*> lstneiclose;
73     int neindnb=lstneiclose.get_nb();
74     while(neindnb==0)
75     {
76     octree.rechercher(nop->get_x(),nop->get_y(),nop->get_z(),search_radius,lstneiclose);
77     neindnb=lstneiclose.get_nb();
78     }
79     map<double,MG_NOEUD*,std::less<double> > lstdist;
80     TPL_MAP_ENTITE<MG_NOEUD*>::ITERATEUR itnop;
81     for(MG_NOEUD* no=lstneiclose.get_premier(itnop);no!=NULL;no=lstneiclose.get_suivant(itnop))
82     {
83     double distns=sqrt(pow(nop->get_x()-no->get_x(),2)+pow(nop->get_y()-no->get_y(),2)+pow(nop->get_z()-no->get_z(),2));
84    
85     OT_VECTEUR_3D w_n_tot(0.,0.,0.);
86     double norme_w_n_tot=0.;
87     OT_VECTEUR_3D w2_n_tot(0.,0.,0.);
88     double norme_w2_n_tot=0.;
89     int nbtri=nop->get_lien_triangle()->get_nb();
90     for (int i=0;i<nbtri;i++)
91     {
92     MG_TRIANGLE* tri=(MG_TRIANGLE*)nop->get_lien_triangle()->get(i);
93    
94     double *xyzn1=tri->get_noeud1()->get_coord();
95     double *xyzn2=tri->get_noeud2()->get_coord();
96     double *xyzn3=tri->get_noeud3()->get_coord();
97    
98     OT_VECTEUR_3D vec1(xyzn1,xyzn3);
99     OT_VECTEUR_3D vec2(xyzn1,xyzn2);
100     OT_VECTEUR_3D n_tri=vec1&vec2; // Normale au triangle
101    
102     double w=n_tri.get_longueur(); // 2 fois l'aire du triangle (pour éviter une division par 2)
103     n_tri.norme();
104     OT_VECTEUR_3D w_n=w*n_tri;
105     double norme_w_n=w_n.get_longueur();
106     w_n_tot=w_n_tot+w_n;
107     norme_w_n_tot=norme_w_n_tot+norme_w_n;
108     }
109    
110     OT_VECTEUR_3D n=w_n_tot/norme_w_n_tot; // Normale à la surface au noeud
111     n.norme();
112     OT_VECTEUR_3D distvec(nop->get_coord(),no->get_coord());
113     double normaldistance=distvec*n;
114     double normaldistanceabs=fabs(normaldistance);
115     //cout<<"normaldistanceabs= "<<normaldistanceabs<<endl;
116     lstdist.insert(pair<double,MG_NOEUD*>(normaldistanceabs,nop));
117     }
118     map<double,MG_NOEUD*,std::less<double> >::iterator itlstdist=lstdist.begin();
119     double distnsclos=(*itlstdist).first;
120     MG_NOEUD* nodcls=(*itlstdist).second;
121     //cout<<"distnsclos= "<<distnsclos<<endl;
122     mgsol->ecrire(distnsclos,i,0,0);
123     //mgsol->ecrire(distnsclos,1,0,0);
124     i++;
125 sattarpa 554 }
126 sattarpa 596 refgest.enregistrer(outputcomparefile);
127     }
128 sattarpa 554
129 sattarpa 596
130     void CRIAQOPERATORS::fems_analysis(int femmeshno,char* magicfilename,int femsolid,int femsubsolno,char* gnifinspointfile,char* out_gnifinspointfile_removondefect)
131 sattarpa 554 {
132     MG_FILE gest(magicfilename);
133 sattarpa 596 FEM_MAILLAGE* femmai;
134     if (femmeshno==0) femmai=gest.get_fem_maillage(femmeshno); else femmai=gest.get_fem_maillageid(femmeshno);
135     FEM_SOLUTION* femsol=gest.get_fem_solutionid(femsolid);
136     femsol->active_solution(femsubsolno);
137    
138     std::map<double,FEM_NOEUD*,std::greater<double> > mpsol;
139     LISTE_FEM_NOEUD::iterator itfemnds;
140     for(FEM_NOEUD* nod=femmai->get_premier_noeud(itfemnds);nod!=NULL;nod=femmai->get_suivant_noeud(itfemnds))
141     {
142     mpsol.insert(pair<double,FEM_NOEUD*> (nod->get_solution(),nod));
143     //cout<<"nod->get_solution()= "<<nod->get_solution()<<endl;
144     //if(nod->get_solution()<=1.e-20 && nod->get_solution()!=0.)
145     //cout<<nod->get_id()<<" : "<<nod->get_solution()<<endl;
146     }
147     std::map<double,FEM_NOEUD*,std::greater<double> >::iterator itmpsol=mpsol.begin();
148    
149     double maxi=(*itmpsol).first;
150     itmpsol=mpsol.end();
151     double mini=(*itmpsol).first;
152     double crit=(maxi+mini)/2.;
153     //cout<<"critreion value= "<<crit<<endl;
154     std::vector<double*> lstpinsert;
155     //std::map<double*,double*,std::less<double*> > lstpinsert;
156     double prop=0.001;
157     FILE *in=fopen(gnifinspointfile,"rt");
158     if (in==NULL) cout<<"file is not available"<<endl;
159     while (!feof(in))
160     {
161     char chaine[500];
162     fgets(chaine,500,in);
163     double x,y,z;
164     double q1,q2,q3;
165     int nb=sscanf(chaine,"%le %le %le %le %le %le",&x,&y,&z,&q1,&q2,&q3);
166     q1=prop*q1;
167     q2=prop*q2;
168     q3=prop*q3;
169     if (nb!=-1 && nb!=6) cout<<"Wrong file format"<<endl;
170     else if (nb==6)
171     {
172     double* pcoordbc=new double[6];
173     //double* bc=new double[3];
174     pcoordbc[0]=x; pcoordbc[1]=y; pcoordbc[2]=z; pcoordbc[3]=q1; pcoordbc[4]=q2; pcoordbc[5]=q3;
175     lstpinsert.push_back(pcoordbc);
176     //lstpinsert.insert(pcoordbc);
177     //bc[0]=q1; bc[1]=q2; bc[2]=q3;"gnif_output_smplpbc_casevahid.txt"
178     // lstpinsert.insert(pair<double*,double*,std::less<double*> > (pcoordbc,bc));
179     }
180     }
181     fclose(in);
182    
183    
184     //octree initialization
185     double xmin=1e308,ymin=1e308,zmin=1e308,xmax=-1e308,ymax=-1e308,zmax=-1e308;
186     TPL_MAP_ENTITE<FEM_NOEUD*> lstnoeud;
187     LISTE_FEM_NOEUD::iterator it;
188     for (FEM_NOEUD* no=femmai->get_premier_noeud(it);no!=NULL;no=femmai->get_suivant_noeud(it))
189     {
190     if (no->get_x()<xmin) xmin=no->get_x();
191     if (no->get_y()<ymin) ymin=no->get_y();
192     if (no->get_z()<zmin) zmin=no->get_z();
193     if (no->get_x()>xmax) xmax=no->get_x();
194     if (no->get_y()>ymax) ymax=no->get_y();
195     if (no->get_z()>zmax) zmax=no->get_z();
196     lstnoeud.ajouter(no);
197     }
198     OT_VECTEUR_3D vecmin(xmin,ymin,zmin);OT_VECTEUR_3D vecmmax(xmax,ymax,zmax);
199     OT_VECTEUR_3D vec(vecmmax,vecmin);
200    
201     //double search_radius=0.001*(vec.get_longueur());
202     double search_radius=3.;
203     OT_VECTEUR_3D min(xmin,ymin,zmin); OT_VECTEUR_3D max(xmax,ymax,zmax); OT_VECTEUR_3D average=(min+max)/2.; OT_VECTEUR_3D lengthvec(min,max);
204     double length=sqrt(lengthvec*lengthvec); double bxr=1.1;
205     xmin=average.get_x()-(length*bxr);ymin=average.get_y()-(length*bxr);zmin=average.get_z()-(length*bxr);
206     xmax=average.get_x()+(length*bxr);ymax=average.get_y()+(length*bxr);zmax=average.get_z()+(length*bxr);
207    
208     TPL_OCTREE<FEM_NOEUD*,FEM_NOEUD*> octree;
209     octree.initialiser(&lstnoeud,1,xmin,ymin,zmin,xmax,ymax,zmax);
210     for (FEM_NOEUD* no=femmai->get_premier_noeud(it);no!=NULL;no=femmai->get_suivant_noeud(it))
211     octree.inserer(no);
212    
213    
214    
215     for (itmpsol=mpsol.begin();itmpsol!=mpsol.end();itmpsol++)
216     {
217     if(crit<(*itmpsol).first)
218     {
219     FEM_NOEUD* pdefect=(*itmpsol).second;
220     TPL_MAP_ENTITE<FEM_NOEUD*> lstneipdefect;
221     int neindnb=lstneipdefect.get_nb();
222     while(neindnb==0)
223     {
224     octree.rechercher(pdefect->get_x(),pdefect->get_y(),pdefect->get_z(),search_radius,lstneipdefect);
225     neindnb=lstneipdefect.get_nb();
226     search_radius=search_radius+0.1*search_radius;
227     }
228     TPL_MAP_ENTITE<FEM_NOEUD*>::ITERATEUR itfendnei;
229     for(FEM_NOEUD* fendnei=lstneipdefect.get_premier(itfendnei);fendnei!=NULL;fendnei=lstneipdefect.get_suivant(itfendnei))
230     {
231     // std::map<double*,double*,std::less<double*> >::iterator itlstpinsert=lstpinsert.begin();//itlstpinsert!=lstpinsert.end();itlstpinsert++
232     for(std::vector<double*>::iterator itlstpinsert=lstpinsert.begin();itlstpinsert!=lstpinsert.end();itlstpinsert++)
233     {
234     double* xyzpins;
235     xyzpins=(*itlstpinsert);
236     if(fendnei->get_x()==xyzpins[0] && fendnei->get_y()==xyzpins[1] && fendnei->get_z()==xyzpins[2])
237     {
238     //cout<<"fendnei->get_x()==xyzpins[0] && fendnei->get_y()==xyzpins[1] && fendnei->get_z()==xyzpins[2]"<<endl;
239     lstpinsert.erase(itlstpinsert);
240     }
241     }
242     }
243    
244     }
245    
246     }
247    
248     FILE* in1=fopen(out_gnifinspointfile_removondefect,"wt");
249     for(std::vector<double*>::iterator itlstpinsert=lstpinsert.begin();itlstpinsert!=lstpinsert.end();itlstpinsert++)
250     {
251     double* xyzpins1;
252     xyzpins1=(*itlstpinsert);
253     fprintf(in1,"%lf %lf %lf %lf %lf %lf\n",xyzpins1[0],xyzpins1[1],xyzpins1[2],xyzpins1[3]*1000.,xyzpins1[4]*1000.,xyzpins1[5]*1000.);
254     }
255     fclose(in1);
256     }
257    
258     void CRIAQOPERATORS::surfmaker_e1(char* outputfilename,int meshno,char* magicfilename)
259     {
260     MG_FILE gest(magicfilename);
261 sattarpa 554 MG_GEOMETRIE* geo=gest.get_mg_geometrie(0);
262     MG_MAILLAGE* mai;
263     if (meshno==0) mai=gest.get_mg_maillage(meshno); else mai=gest.get_mg_maillageid(meshno);
264     //MG_FILE gest((char*)"longflxprtwithpockets_3d_3mm.magic");
265     //MG_GEOMETRIE* geo=gest.get_mg_geometrieid(1);
266     //MG_MAILLAGE* mai=gest.get_mg_maillageid(5674824);
267     MG_GESTIONNAIRE* gestnew=new MG_GESTIONNAIRE();
268     MG_GEOMETRIE* geonew=mai->get_mg_geometrie();
269     gestnew->ajouter_mg_geometrie(geonew);
270     MG_MAILLAGE* mainew=new MG_MAILLAGE(geonew);
271     gestnew->ajouter_mg_maillage(mainew);
272    
273     LISTE_MG_NOEUD::iterator itnod;
274     for (MG_NOEUD* vertices=mai->get_premier_noeud(itnod);vertices!=NULL;vertices=mai->get_suivant_noeud(itnod))
275     {
276     MG_ELEMENT_TOPOLOGIQUE *topnd=vertices->get_lien_topologie();
277     MG_FACE* facevert=(MG_FACE*) (vertices->get_lien_topologie());
278     MG_ARETE* aretver=(MG_ARETE*) (vertices->get_lien_topologie());
279     MG_SOMMET* sometver=(MG_SOMMET*) (vertices->get_lien_topologie());
280 sattarpa 596
281     if(facevert->get_id()==76
282     || aretver->get_id()==84 || aretver->get_id()==103|| aretver->get_id()==91|| aretver->get_id()==13 || aretver->get_id()==110||aretver->get_id()==98
283     || aretver->get_id()==81 || aretver->get_id()==83 || aretver->get_id()==10|| aretver->get_id()==12|| aretver->get_id()==90|| aretver->get_id()==97
284     /* facevert->get_id()==133
285 sattarpa 554 || aretver->get_id()==355 || aretver->get_id()==362|| aretver->get_id()==374|| aretver->get_id()==298 || aretver->get_id()==291||aretver->get_id()==338
286     || aretver->get_id()==326 || aretver->get_id()==333|| aretver->get_id()==319|| aretver->get_id()==312 || aretver->get_id()==305||aretver->get_id()==169
287     || aretver->get_id()==162 || aretver->get_id()==141|| aretver->get_id()==174|| aretver->get_id()==148 || aretver->get_id()==155||aretver->get_id()==217
288     || aretver->get_id()==212 || aretver->get_id()==191|| aretver->get_id()==184|| aretver->get_id()==64 || aretver->get_id()==280||aretver->get_id()==32
289     || aretver->get_id()==387 || aretver->get_id()==198|| aretver->get_id()==205|| aretver->get_id()==269 || aretver->get_id()==262||aretver->get_id()==234
290     || aretver->get_id()==227 || aretver->get_id()==255|| aretver->get_id()==248|| aretver->get_id()==241 || aretver->get_id()==380||aretver->get_id()==96
291     || aretver->get_id()==369 || aretver->get_id()==344|| aretver->get_id()==128|| aretver->get_id()==274
292     || sometver->get_id()==368|| sometver->get_id()==361|| sometver->get_id()==106|| sometver->get_id()==122|| sometver->get_id()==74|| sometver->get_id()==90
293     || sometver->get_id()==233|| sometver->get_id()==240|| sometver->get_id()==247|| sometver->get_id()==254|| sometver->get_id()==261|| sometver->get_id()==268
294     || sometver->get_id()==226|| sometver->get_id()==224|| sometver->get_id()==190|| sometver->get_id()==197|| sometver->get_id()==204|| sometver->get_id()==211
295     || sometver->get_id()==183|| sometver->get_id()==181|| sometver->get_id()==154|| sometver->get_id()==147|| sometver->get_id()==140|| sometver->get_id()==161
296     || sometver->get_id()==168|| sometver->get_id()==138|| sometver->get_id()==318|| sometver->get_id()==311|| sometver->get_id()==304|| sometver->get_id()==297
297     || sometver->get_id()==325|| sometver->get_id()==332|| sometver->get_id()==290|| sometver->get_id()==288|| sometver->get_id()==42|| sometver->get_id()==58
298 sattarpa 596 || sometver->get_id()==352|| sometver->get_id()==354|| sometver->get_id()==10|| sometver->get_id()==26*/
299    
300     )
301 sattarpa 554 {
302     double x=vertices->get_x();
303     double y=vertices->get_y();
304     double z=vertices->get_z();
305     //MG_NOEUD *newno=new MG_NOEUD(NULL,x,y,z,vertices->get_origine());
306     MG_NOEUD *newno=new MG_NOEUD(vertices->get_lien_topologie(),x,y,z,vertices->get_origine());
307     mainew->ajouter_mg_noeud(newno);
308     vertices->change_nouveau_numero(newno->get_id()); // what does this do?
309     }
310     }
311    
312     LISTE_MG_SEGMENT::iterator itSeg;
313     for (MG_SEGMENT * segment =mai->get_premier_segment(itSeg); segment; segment=mai->get_suivant_segment(itSeg))
314     {
315     //%275=NOEUD($10,93.94800850483597,-250.0000000000000,0.000000000000000,1010);
316     //NOEUD linked with a topology (get_lien_topologie => $10 ) -> and %10=SOMMET(1,$9,0); %9=POINT_OCC(1);
317     //%390=SEGMENT($13,$275,$277,1010); => %13=ARETE(3,$8,$14,$15,1,0); %275=NOEUD($10,93.94800850483597,-250.0000000000000,0.000000000000000,1010); %277=NOEUD($13,89.09047601136933,-249.4243468871926,0.000000000000000,1010);
318     MG_FACE* faceseg=(MG_FACE*) (segment->get_lien_topologie());
319     MG_ARETE* aretver=(MG_ARETE*) (segment->get_lien_topologie());
320 sattarpa 596 if (faceseg->get_id()==76
321     || aretver->get_id()==84 || aretver->get_id()==103|| aretver->get_id()==91|| aretver->get_id()==13 || aretver->get_id()==110||aretver->get_id()==98
322     //faceseg->get_id()==133
323     //|| aretver->get_id()==355 || aretver->get_id()==362|| aretver->get_id()==374|| aretver->get_id()==298 || aretver->get_id()==291||aretver->get_id()==338
324     //|| aretver->get_id()==326 || aretver->get_id()==333|| aretver->get_id()==319|| aretver->get_id()==312 || aretver->get_id()==305||aretver->get_id()==169
325     //|| aretver->get_id()==162 || aretver->get_id()==141|| aretver->get_id()==174|| aretver->get_id()==148 || aretver->get_id()==155||aretver->get_id()==217
326     //|| aretver->get_id()==212 || aretver->get_id()==191|| aretver->get_id()==184|| aretver->get_id()==64 || aretver->get_id()==280||aretver->get_id()==32
327     //|| aretver->get_id()==387 || aretver->get_id()==198|| aretver->get_id()==205|| aretver->get_id()==269 || aretver->get_id()==262||aretver->get_id()==234
328     // || aretver->get_id()==227 || aretver->get_id()==255|| aretver->get_id()==248|| aretver->get_id()==241 || aretver->get_id()==380||aretver->get_id()==96
329     // || aretver->get_id()==369 || aretver->get_id()==344|| aretver->get_id()==128|| aretver->get_id()==274
330    
331     )
332 sattarpa 554 {
333     MG_NOEUD* no1=mainew->get_mg_noeudid(segment->get_noeud1()->get_nouveau_numero());
334     MG_NOEUD* no2=mainew->get_mg_noeudid(segment->get_noeud2()->get_nouveau_numero());
335     MG_SEGMENT *seg=new MG_SEGMENT(segment->get_lien_topologie(),no1,no2,segment->get_origine());
336     //MG_SEGMENT *seg=new MG_SEGMENT(NULL,no1,no2,segment->get_origine());
337     mainew->ajouter_mg_segment(seg);
338     }
339     }
340    
341     LISTE_MG_TRIANGLE::iterator itTri;
342     for (MG_TRIANGLE * triangle =mai->get_premier_triangle(itTri); triangle; triangle=mai->get_suivant_triangle(itTri))
343     {
344     MG_FACE* facetri=(MG_FACE*) (triangle->get_lien_topologie());
345 sattarpa 596 if (facetri->get_id()==76)
346 sattarpa 554 {
347     MG_NOEUD* no1=mainew->get_mg_noeudid(triangle->get_noeud1()->get_nouveau_numero());
348     MG_NOEUD* no2=mainew->get_mg_noeudid(triangle->get_noeud2()->get_nouveau_numero());
349     MG_NOEUD* no3=mainew->get_mg_noeudid(triangle->get_noeud3()->get_nouveau_numero());
350     mainew->ajouter_mg_triangle(triangle->get_lien_topologie(),no1,no2,no3,triangle->get_origine());
351     }
352     }
353    
354     //gestnew->enregistrer("scnsurf_longflxprtwithpockets_3d_3mm_8mmdef_0bump.magic");
355     gestnew->enregistrer(outputfilename);
356     //////////////////
357    
358     ////////////////////////
359    
360    
361     /*
362     mainew->supprimer_mg_triangleid(106625);
363     mainew->supprimer_mg_triangleid(106662);
364     mainew->supprimer_mg_triangleid(106626);
365     mainew->supprimer_mg_triangleid(106701);
366     mainew->supprimer_mg_triangleid(106702);
367     mainew->supprimer_mg_triangleid(106639);*/
368     //cout<<"output mesh no.= 495557 "<<endl;
369     //gest.enregistrer("2dsurfmesh_cad.magic"); //CAD model output
370     //scanned part output
371    
372    
373     }
374     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
375 sattarpa 596 void CRIAQOPERATORS::surfmaker_e2(char* outputfilename,int meshno,char* magicfilename)
376 sattarpa 554 {
377     // surfmeshgenerator a partially scanned (deformed CAD model) for GNIF examples for simple exam with hole (badisplacenmentvector + smplwithpocket)
378     MG_FILE gest(magicfilename);
379     MG_GEOMETRIE* geo=gest.get_mg_geometrie(0);
380     MG_MAILLAGE* mai;
381     if (meshno==0) mai=gest.get_mg_maillage(meshno); else mai=gest.get_mg_maillageid(meshno);
382     //MG_FILE gest((char*)"2d_smplwithole_23mm.magic");
383     //MG_GEOMETRIE* geo=gest.get_mg_geometrieid(1);
384     //MG_MAILLAGE* mai=gest.get_mg_maillageid(1197);
385     MG_GESTIONNAIRE* gestnew=new MG_GESTIONNAIRE();
386     MG_GEOMETRIE* geonew=mai->get_mg_geometrie();
387     gestnew->ajouter_mg_geometrie(geonew);
388     MG_MAILLAGE* mainew=new MG_MAILLAGE(geonew);
389     gestnew->ajouter_mg_maillage(mainew);
390    
391     LISTE_MG_NOEUD::iterator itnod;
392     for (MG_NOEUD* vertices=mai->get_premier_noeud(itnod);vertices!=NULL;vertices=mai->get_suivant_noeud(itnod))
393     {
394     MG_ELEMENT_TOPOLOGIQUE *topnd=vertices->get_lien_topologie();
395     MG_FACE* facevert=(MG_FACE*) (vertices->get_lien_topologie());
396     MG_ARETE* aretver=(MG_ARETE*) (vertices->get_lien_topologie());
397     MG_SOMMET* sometver=(MG_SOMMET*) (vertices->get_lien_topologie());
398     if(facevert->get_id()==76
399     || aretver->get_id()==84 || aretver->get_id()==103|| aretver->get_id()==91|| aretver->get_id()==98 || aretver->get_id()==13||aretver->get_id()==110
400     || sometver->get_id()==10|| sometver->get_id()==12|| sometver->get_id()==81|| sometver->get_id()==83|| sometver->get_id()==90|| sometver->get_id()==97)
401     {
402     double x=vertices->get_x();
403     double y=vertices->get_y();
404     double z=vertices->get_z();
405     //MG_NOEUD *newno=new MG_NOEUD(NULL,x,y,z,vertices->get_origine());
406     MG_NOEUD *newno=new MG_NOEUD(vertices->get_lien_topologie(),x,y,z,vertices->get_origine());
407     mainew->ajouter_mg_noeud(newno);
408     vertices->change_nouveau_numero(newno->get_id()); // what does this do?
409     }
410     }
411    
412     LISTE_MG_SEGMENT::iterator itSeg;
413     for (MG_SEGMENT * segment =mai->get_premier_segment(itSeg); segment; segment=mai->get_suivant_segment(itSeg))
414     {
415     //%275=NOEUD($10,93.94800850483597,-250.0000000000000,0.000000000000000,1010);
416     //NOEUD linked with a topology (get_lien_topologie => $10 ) -> and %10=SOMMET(1,$9,0); %9=POINT_OCC(1);
417     //%390=SEGMENT($13,$275,$277,1010); => %13=ARETE(3,$8,$14,$15,1,0); %275=NOEUD($10,93.94800850483597,-250.0000000000000,0.000000000000000,1010); %277=NOEUD($13,89.09047601136933,-249.4243468871926,0.000000000000000,1010);
418     MG_FACE* faceseg=(MG_FACE*) (segment->get_lien_topologie());
419     //cout<<"faceseg->get_id()= "<<faceseg->get_id()<<endl;
420     MG_ARETE* aretver=(MG_ARETE*) (segment->get_lien_topologie());
421     //cout<<"aretver->get_id()= "<<aretver->get_id()<<endl;
422     if (faceseg->get_id()==76 ||
423     aretver->get_id()==84 || aretver->get_id()==103|| aretver->get_id()==91|| aretver->get_id()==98 || aretver->get_id()==13|| aretver->get_id()==110)
424     {
425     MG_NOEUD* no1=mainew->get_mg_noeudid(segment->get_noeud1()->get_nouveau_numero());
426     MG_NOEUD* no2=mainew->get_mg_noeudid(segment->get_noeud2()->get_nouveau_numero());
427     MG_SEGMENT *seg=new MG_SEGMENT(segment->get_lien_topologie(),no1,no2,segment->get_origine());
428     //MG_SEGMENT *seg=new MG_SEGMENT(NULL,no1,no2,segment->get_origine());
429     mainew->ajouter_mg_segment(seg);
430     }
431     }
432    
433     LISTE_MG_TRIANGLE::iterator itTri;
434     for (MG_TRIANGLE * triangle =mai->get_premier_triangle(itTri); triangle; triangle=mai->get_suivant_triangle(itTri))
435     {
436     MG_FACE* facetri=(MG_FACE*) (triangle->get_lien_topologie());
437     if (facetri->get_id()==76)
438     {
439     MG_NOEUD* no1=mainew->get_mg_noeudid(triangle->get_noeud1()->get_nouveau_numero());
440     MG_NOEUD* no2=mainew->get_mg_noeudid(triangle->get_noeud2()->get_nouveau_numero());
441     MG_NOEUD* no3=mainew->get_mg_noeudid(triangle->get_noeud3()->get_nouveau_numero());
442     mainew->ajouter_mg_triangle(triangle->get_lien_topologie(),no1,no2,no3,triangle->get_origine());
443     }
444     }
445    
446     //gestnew->enregistrer("cadsurfmsh_smplwithole_23mm.magic");
447     gestnew->enregistrer(outputfilename);
448     }
449 sattarpa 596 void CRIAQOPERATORS::surfmaker_e2t(char* outputfilename,int meshno,char* magicfilename)
450 sattarpa 554 {
451     // surfmeshgenerator a partially scanned (deformed CAD model) for GNIF examples for simple exam with hole (badisplacenmentvector + smplwithpocket)
452     MG_FILE gest(magicfilename);
453     MG_GEOMETRIE* geo=gest.get_mg_geometrie(0);
454     MG_MAILLAGE* mai;
455     if (meshno==0) mai=gest.get_mg_maillage(meshno); else mai=gest.get_mg_maillageid(meshno);
456     //MG_FILE gest((char*)"2d_smplwithole_23mm.magic");
457     //MG_GEOMETRIE* geo=gest.get_mg_geometrieid(1);
458     //MG_MAILLAGE* mai=gest.get_mg_maillageid(1197);
459     MG_GESTIONNAIRE* gestnew=new MG_GESTIONNAIRE();
460     MG_GEOMETRIE* geonew=mai->get_mg_geometrie();
461     gestnew->ajouter_mg_geometrie(geonew);
462     MG_MAILLAGE* mainew=new MG_MAILLAGE(geonew);
463     gestnew->ajouter_mg_maillage(mainew);
464    
465     LISTE_MG_NOEUD::iterator itnod;
466     for (MG_NOEUD* vertices=mai->get_premier_noeud(itnod);vertices!=NULL;vertices=mai->get_suivant_noeud(itnod))
467     {
468     MG_ELEMENT_TOPOLOGIQUE *topnd=vertices->get_lien_topologie();
469     MG_FACE* facevert=(MG_FACE*) (vertices->get_lien_topologie());
470     MG_ARETE* aretver=(MG_ARETE*) (vertices->get_lien_topologie());
471     MG_SOMMET* sometver=(MG_SOMMET*) (vertices->get_lien_topologie());
472     if(facevert->get_id()==37
473     || aretver->get_id()==20 || aretver->get_id()==108|| aretver->get_id()==113|| aretver->get_id()==101 || aretver->get_id()==59||aretver->get_id()==64
474     || aretver->get_id()==45 || aretver->get_id()==52|| aretver->get_id()==93|| aretver->get_id()==74 || aretver->get_id()==81||aretver->get_id()==88
475     || sometver->get_id()==10|| sometver->get_id()==19|| sometver->get_id()==51|| sometver->get_id()==58|| sometver->get_id()==42|| sometver->get_id()==44
476     || sometver->get_id()==87|| sometver->get_id()==73|| sometver->get_id()==80|| sometver->get_id()==71|| sometver->get_id()==100|| sometver->get_id()==107
477     //for e2t
478     //|| aretver->get_id()==20 || aretver->get_id()==141|| aretver->get_id()==129|| aretver->get_id()==136 || aretver->get_id()==66||aretver->get_id()==59
479     //|| aretver->get_id()==73 || aretver->get_id()==78|| aretver->get_id()==45|| aretver->get_id()==52 || aretver->get_id()==95||aretver->get_id()==102
480     //|| aretver->get_id()==88 || aretver->get_id()==121|| aretver->get_id()==116|| aretver->get_id()==109
481     //|| sometver->get_id()==10|| sometver->get_id()==19|| sometver->get_id()==65|| sometver->get_id()==58|| sometver->get_id()==51|| sometver->get_id()==42
482     //|| sometver->get_id()==44|| sometver->get_id()==72|| sometver->get_id()==115|| sometver->get_id()==87|| sometver->get_id()==108|| sometver->get_id()==101
483     //|| sometver->get_id()==94|| sometver->get_id()==85|| sometver->get_id()==128|| sometver->get_id()==135
484     )
485     {
486     double x=vertices->get_x();
487     double y=vertices->get_y();
488     double z=vertices->get_z();
489     //MG_NOEUD *newno=new MG_NOEUD(NULL,x,y,z,vertices->get_origine());
490     MG_NOEUD *newno=new MG_NOEUD(vertices->get_lien_topologie(),x,y,z,vertices->get_origine());
491     mainew->ajouter_mg_noeud(newno);
492     vertices->change_nouveau_numero(newno->get_id()); // what does this do?
493     }
494     }
495    
496     LISTE_MG_SEGMENT::iterator itSeg;
497     for (MG_SEGMENT * segment =mai->get_premier_segment(itSeg); segment; segment=mai->get_suivant_segment(itSeg))
498     {
499     //%275=NOEUD($10,93.94800850483597,-250.0000000000000,0.000000000000000,1010);
500     //NOEUD linked with a topology (get_lien_topologie => $10 ) -> and %10=SOMMET(1,$9,0); %9=POINT_OCC(1);
501     //%390=SEGMENT($13,$275,$277,1010); => %13=ARETE(3,$8,$14,$15,1,0); %275=NOEUD($10,93.94800850483597,-250.0000000000000,0.000000000000000,1010); %277=NOEUD($13,89.09047601136933,-249.4243468871926,0.000000000000000,1010);
502     MG_FACE* faceseg=(MG_FACE*) (segment->get_lien_topologie());
503     //cout<<"faceseg->get_id()= "<<faceseg->get_id()<<endl;
504     MG_ARETE* aretver=(MG_ARETE*) (segment->get_lien_topologie());
505     //cout<<"aretver->get_id()= "<<aretver->get_id()<<endl;
506     if (faceseg->get_id()==37
507     || aretver->get_id()==20 || aretver->get_id()==108|| aretver->get_id()==113|| aretver->get_id()==101 || aretver->get_id()==59||aretver->get_id()==64
508     || aretver->get_id()==45 || aretver->get_id()==52|| aretver->get_id()==93|| aretver->get_id()==74 || aretver->get_id()==81||aretver->get_id()==88
509     //|| aretver->get_id()==20 || aretver->get_id()==141|| aretver->get_id()==129|| aretver->get_id()==136 || aretver->get_id()==66||aretver->get_id()==59
510     //|| aretver->get_id()==73 || aretver->get_id()==78|| aretver->get_id()==45|| aretver->get_id()==52 || aretver->get_id()==95||aretver->get_id()==102
511     //|| aretver->get_id()==88 || aretver->get_id()==121|| aretver->get_id()==116|| aretver->get_id()==109
512    
513     )
514     {
515     MG_NOEUD* no1=mainew->get_mg_noeudid(segment->get_noeud1()->get_nouveau_numero());
516     MG_NOEUD* no2=mainew->get_mg_noeudid(segment->get_noeud2()->get_nouveau_numero());
517     MG_SEGMENT *seg=new MG_SEGMENT(segment->get_lien_topologie(),no1,no2,segment->get_origine());
518     //MG_SEGMENT *seg=new MG_SEGMENT(NULL,no1,no2,segment->get_origine());
519     mainew->ajouter_mg_segment(seg);
520     }
521     }
522    
523     LISTE_MG_TRIANGLE::iterator itTri;
524     for (MG_TRIANGLE * triangle =mai->get_premier_triangle(itTri); triangle; triangle=mai->get_suivant_triangle(itTri))
525     {
526     MG_FACE* facetri=(MG_FACE*) (triangle->get_lien_topologie());
527     if (facetri->get_id()==37)
528     {
529     MG_NOEUD* no1=mainew->get_mg_noeudid(triangle->get_noeud1()->get_nouveau_numero());
530     MG_NOEUD* no2=mainew->get_mg_noeudid(triangle->get_noeud2()->get_nouveau_numero());
531     MG_NOEUD* no3=mainew->get_mg_noeudid(triangle->get_noeud3()->get_nouveau_numero());
532     mainew->ajouter_mg_triangle(triangle->get_lien_topologie(),no1,no2,no3,triangle->get_origine());
533     }
534     }
535    
536     //gestnew->enregistrer("cadsurfmsh_smplwithole_23mm.magic");
537     gestnew->enregistrer(outputfilename);
538     }
539     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
540 sattarpa 596 void CRIAQOPERATORS::surfmaker_e3(char* outputfilename,int meshno,char* magicfilename)
541 sattarpa 554 {
542     //surfmesh maker (smplwithpocket+smpl withpocket)
543     MG_FILE gest(magicfilename);
544     MG_GEOMETRIE* geo=gest.get_mg_geometrie(0);
545     MG_MAILLAGE* mai;
546     if (meshno==0) mai=gest.get_mg_maillage(meshno); else mai=gest.get_mg_maillageid(meshno);
547     //MG_FILE gest((char*)"smplwithpocket_3d_13mm.magic");
548     //MG_GEOMETRIE* geo=gest.get_mg_geometrieid(1);
549     //MG_MAILLAGE* mai=gest.get_mg_maillageid(2982821);
550     MG_GESTIONNAIRE* gestnew=new MG_GESTIONNAIRE();
551     MG_GEOMETRIE* geonew=mai->get_mg_geometrie();
552     gestnew->ajouter_mg_geometrie(geonew);
553     MG_MAILLAGE* mainew=new MG_MAILLAGE(geonew);
554     gestnew->ajouter_mg_maillage(mainew);
555    
556     LISTE_MG_NOEUD::iterator itnod;
557     for (MG_NOEUD* vertices=mai->get_premier_noeud(itnod);vertices!=NULL;vertices=mai->get_suivant_noeud(itnod))
558     {
559     MG_ELEMENT_TOPOLOGIQUE *topnd=vertices->get_lien_topologie();
560     MG_FACE* facevert=(MG_FACE*) (vertices->get_lien_topologie());
561     MG_ARETE* aretver=(MG_ARETE*) (vertices->get_lien_topologie());
562     MG_SOMMET* sometver=(MG_SOMMET*) (vertices->get_lien_topologie());
563     if(facevert->get_id()==5
564     || aretver->get_id()==32 || aretver->get_id()==61|| aretver->get_id()==42|| aretver->get_id()==56 || aretver->get_id()==49||aretver->get_id()==27
565     || aretver->get_id()==85 || aretver->get_id()==90|| aretver->get_id()==78|| aretver->get_id()==71 || aretver->get_id()==20||aretver->get_id()==13
566     || sometver->get_id()==10|| sometver->get_id()==26|| sometver->get_id()==41|| sometver->get_id()==55|| sometver->get_id()==39|| sometver->get_id()==48
567     || sometver->get_id()==84|| sometver->get_id()==77|| sometver->get_id()==70|| sometver->get_id()==68|| sometver->get_id()==12|| sometver->get_id()==19)
568     {
569     double x=vertices->get_x();
570     double y=vertices->get_y();
571     double z=vertices->get_z();
572     //MG_NOEUD *newno=new MG_NOEUD(NULL,x,y,z,vertices->get_origine());
573     MG_NOEUD *newno=new MG_NOEUD(vertices->get_lien_topologie(),x,y,z,vertices->get_origine());
574     mainew->ajouter_mg_noeud(newno);
575     vertices->change_nouveau_numero(newno->get_id()); // what does this do?
576     }
577     }
578    
579     LISTE_MG_SEGMENT::iterator itSeg;
580     for (MG_SEGMENT * segment =mai->get_premier_segment(itSeg); segment; segment=mai->get_suivant_segment(itSeg))
581     {
582     //%275=NOEUD($10,93.94800850483597,-250.0000000000000,0.000000000000000,1010);
583     //NOEUD linked with a topology (get_lien_topologie => $10 ) -> and %10=SOMMET(1,$9,0); %9=POINT_OCC(1);
584     //%390=SEGMENT($13,$275,$277,1010); => %13=ARETE(3,$8,$14,$15,1,0); %275=NOEUD($10,93.94800850483597,-250.0000000000000,0.000000000000000,1010); %277=NOEUD($13,89.09047601136933,-249.4243468871926,0.000000000000000,1010);
585     MG_FACE* faceseg=(MG_FACE*) (segment->get_lien_topologie());
586     //cout<<"faceseg->get_id()= "<<faceseg->get_id()<<endl;
587     MG_ARETE* aretver=(MG_ARETE*) (segment->get_lien_topologie());
588     //cout<<"aretver->get_id()= "<<aretver->get_id()<<endl;
589     if (faceseg->get_id()==5
590     || aretver->get_id()==32 || aretver->get_id()==61|| aretver->get_id()==42|| aretver->get_id()==56 || aretver->get_id()==49||aretver->get_id()==27
591     || aretver->get_id()==85 || aretver->get_id()==90|| aretver->get_id()==78|| aretver->get_id()==71 || aretver->get_id()==20||aretver->get_id()==13)
592     {
593     MG_NOEUD* no1=mainew->get_mg_noeudid(segment->get_noeud1()->get_nouveau_numero());
594     MG_NOEUD* no2=mainew->get_mg_noeudid(segment->get_noeud2()->get_nouveau_numero());
595     MG_SEGMENT *seg=new MG_SEGMENT(segment->get_lien_topologie(),no1,no2,segment->get_origine());
596     //MG_SEGMENT *seg=new MG_SEGMENT(NULL,no1,no2,segment->get_origine());
597     mainew->ajouter_mg_segment(seg);
598     }
599     }
600    
601     LISTE_MG_TRIANGLE::iterator itTri;
602     for (MG_TRIANGLE * triangle =mai->get_premier_triangle(itTri); triangle; triangle=mai->get_suivant_triangle(itTri))
603     {
604     MG_FACE* facetri=(MG_FACE*) (triangle->get_lien_topologie());
605     if (facetri->get_id()==5)
606     {
607     MG_NOEUD* no1=mainew->get_mg_noeudid(triangle->get_noeud1()->get_nouveau_numero());
608     MG_NOEUD* no2=mainew->get_mg_noeudid(triangle->get_noeud2()->get_nouveau_numero());
609     MG_NOEUD* no3=mainew->get_mg_noeudid(triangle->get_noeud3()->get_nouveau_numero());
610     mainew->ajouter_mg_triangle(triangle->get_lien_topologie(),no1,no2,no3,triangle->get_origine());
611     }
612     }
613    
614     //gestnew->enregistrer("scnsurf_smplwithpocket_3d_13mm_232mmdeform.magic");
615     gestnew->enregistrer(outputfilename);
616     }
617     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
618 sattarpa 596 void CRIAQOPERATORS::gnifformatmaker(char* elementxtoutfile,char* nodtxtoutfile,int meshno,char* magicfilename)
619 sattarpa 554 {
620     // gnifformatmaker
621     MG_FILE gest(magicfilename);
622     MG_MAILLAGE* mai;
623     if (meshno==0) mai=gest.get_mg_maillage(meshno); else mai=gest.get_mg_maillageid(meshno);
624     //MG_FILE gest((char*)"scnsurf_longflxprtwithpockets_3d_3mm_8mmdef_0bump.magic");
625     // MG_MAILLAGE* mai=gest.get_mg_maillageid(2);
626     //std::string fichiermaillage="CAD_output_elements.txt";
627     //FILE* in=fopen(fichiermaillage.c_str(),"wt");
628     //FILE* in1=fopen("scnsurf_longflxprtwithpockets_3d_3mm_8mmdef_0bump_nodes.txt","wt");
629     FILE* in1=fopen(nodtxtoutfile,"wt");
630     //FILE* in1=fopen("scannedsurface_nodes.txt","wt");
631     LISTE_MG_NOEUD::iterator itnod;
632     unsigned long firstno=mai->get_premier_noeud(itnod)->get_id();
633     firstno=firstno-1;
634     cout<<firstno<<endl;
635     int counter1=1;
636     cout<<"mai->get_nb_mg_noeud()="<<mai->get_nb_mg_noeud()<<endl;
637     for (MG_NOEUD* nod=mai->get_premier_noeud(itnod);nod!=NULL;nod=mai->get_suivant_noeud(itnod))
638     {
639     nod->change_nouveau_numero(counter1);
640     //nod->change_id(counter1);
641     //fprintf(in1,"%d node coordinate %le %le %le\n",nod->get_id(), nod->get_x(),nod->get_y(), nod->get_z() );
642     //fprintf(in,"%d node coordinate %lf %lf %le\n",nod->get_id(), nod->get_x(),nod->get_y(), nod->get_z() );
643     fprintf(in1,"%19d%32.9lf%16.9lf%8d\n",nod->get_nouveau_numero(), nod->get_x(),nod->get_y(),nod->get_nouveau_numero());
644     fprintf(in1,"%7d%16.9lf\n",nod->get_nouveau_numero(), nod->get_z());
645     counter1++;
646     }
647     //FILE* in2=fopen("scnsurf_longflxprtwithpockets_3d_3mm_8mmdef_0bump_elements.txt","wt"); // CAD text output elements
648     FILE* in2=fopen(elementxtoutfile,"wt");
649     //FILE* in2=fopen("scannedsurface_elements.txt","wt"); //scanned text output elements
650     int counter=1;
651     LISTE_MG_TRIANGLE::iterator ittri;
652     for (MG_TRIANGLE* tri=mai->get_premier_triangle(ittri);tri!=NULL;tri=mai->get_suivant_triangle(ittri))
653     {
654     fprintf(in2,"%10d 1%8d%8d%8d\n",counter,tri->get_noeud1()->get_nouveau_numero(),tri->get_noeud2()->get_nouveau_numero(),tri->get_noeud3()->get_nouveau_numero() );
655     counter++;
656     }
657     fclose(in1);
658     fclose(in2);
659     }
660     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
661 sattarpa 596 void CRIAQOPERATORS::rmovscnprtfromdefrmdcad(char* outputfilename,int meshno,char* magicfilename)
662 sattarpa 554 {
663     MG_FILE gest(magicfilename);
664     MG_MAILLAGE* mai;
665     if (meshno==0) mai=gest.get_mg_maillage(meshno); else mai=gest.get_mg_maillageid(meshno);
666 sattarpa 596 MG_GESTIONNAIRE* newgest=new MG_GESTIONNAIRE();
667 sattarpa 554 MG_GEOMETRIE* geonew=mai->get_mg_geometrie();
668 sattarpa 596 newgest->ajouter_mg_geometrie(geonew);
669 sattarpa 554 MG_MAILLAGE* mainew=new MG_MAILLAGE(geonew);
670 sattarpa 596 newgest->ajouter_mg_maillage(mainew);
671    
672 sattarpa 554 LISTE_MG_NOEUD::iterator itnod;
673     for (MG_NOEUD* vertices=mai->get_premier_noeud(itnod);vertices!=NULL;vertices=mai->get_suivant_noeud(itnod))
674     {
675     MG_ELEMENT_TOPOLOGIQUE *topnd=vertices->get_lien_topologie();
676     MG_FACE* facevert=(MG_FACE*) (vertices->get_lien_topologie());
677 sattarpa 596 //if(facevert->get_id()!=76 && topnd->get_dimension()!=3) //e1
678     //if(facevert->get_id()!=5 && topnd->get_dimension()!=3) //e2
679 sattarpa 554 {
680     double x=vertices->get_x();
681     double y=vertices->get_y();
682     double z=vertices->get_z();
683     MG_NOEUD *newno=new MG_NOEUD(vertices->get_lien_topologie(),x,y,z,vertices->get_origine());
684     mainew->ajouter_mg_noeud(newno);
685     vertices->change_nouveau_numero(newno->get_id()); // what does this do?
686     }
687     }
688 sattarpa 596
689 sattarpa 554 LISTE_MG_SEGMENT::iterator itSeg;
690     for (MG_SEGMENT * segment =mai->get_premier_segment(itSeg); segment; segment=mai->get_suivant_segment(itSeg))
691     {
692     MG_ELEMENT_TOPOLOGIQUE *topseg=segment->get_lien_topologie();
693     MG_FACE* faceseg=(MG_FACE*) (segment->get_lien_topologie());
694 sattarpa 596 //if (faceseg->get_id()!=76 && topseg->get_dimension()!=3)
695     if(faceseg->get_id()!=5 && topseg->get_dimension()!=3) //e2
696 sattarpa 554 {
697     MG_NOEUD* no1=mainew->get_mg_noeudid(segment->get_noeud1()->get_nouveau_numero());
698     MG_NOEUD* no2=mainew->get_mg_noeudid(segment->get_noeud2()->get_nouveau_numero());
699     MG_SEGMENT *seg=new MG_SEGMENT(segment->get_lien_topologie(),no1,no2,segment->get_origine());
700     mainew->ajouter_mg_segment(seg);
701     }
702     }
703 sattarpa 596
704 sattarpa 554 LISTE_MG_TRIANGLE::iterator itTri;
705     for (MG_TRIANGLE * triangle =mai->get_premier_triangle(itTri); triangle; triangle=mai->get_suivant_triangle(itTri))
706     {
707     MG_ELEMENT_TOPOLOGIQUE *toptri=triangle->get_lien_topologie();
708     MG_FACE* facetri=(MG_FACE*) (triangle->get_lien_topologie());
709 sattarpa 596 // if (facetri->get_id()!=76 && toptri->get_dimension()!=3)
710     if (facetri->get_id()!=5 && toptri->get_dimension()!=3) //e2
711 sattarpa 554 {
712     MG_NOEUD* no1=mainew->get_mg_noeudid(triangle->get_noeud1()->get_nouveau_numero());
713     MG_NOEUD* no2=mainew->get_mg_noeudid(triangle->get_noeud2()->get_nouveau_numero());
714     MG_NOEUD* no3=mainew->get_mg_noeudid(triangle->get_noeud3()->get_nouveau_numero());
715     mainew->ajouter_mg_triangle(triangle->get_lien_topologie(),no1,no2,no3,triangle->get_origine());
716     }
717     }
718 sattarpa 596 newgest->enregistrer(outputfilename);
719 sattarpa 554 //gest.enregistrer("deformedcad_sansscannedpart.magic");
720    
721     }
722     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
723    
724 sattarpa 596 void CRIAQOPERATORS::msh2dmakerfrommsh3d(char* outputfilename,int meshno,char* magicfilename)
725 sattarpa 554 {
726     //to make a 2D mesh out of 3D mesh :)
727     /*
728     MG_MAILLAGE* mainew=mai->dupliquer(&gest);
729     LISTE_MG_TETRA::iterator ittet;
730     for(MG_TETRA* )
731     {
732    
733     }
734    
735     cout<<"mainew->get_nb_mg_noeud()= "<<mainew->get_nb_mg_noeud()<<endl;
736     cout<<"mainew->get_nb_mg_segment()= "<<mainew->get_nb_mg_segment()<<endl;
737     cout<<"mainew->get_nb_mg_triangle()= "<<mainew->get_nb_mg_triangle()<<endl;
738     cout<<"mainew->get_nb_mg_tetra()= "<<mainew->get_nb_mg_tetra()<<endl;
739    
740     LISTE_MG_TRIANGLE::iterator ittri;
741     for (MG_TRIANGLE* triangle=mainew->get_premier_triangle(ittri);triangle!=NULL;triangle=mainew->get_suivant_triangle(ittri))
742     {
743     MG_ELEMENT_TOPOLOGIQUE *top=triangle->get_lien_topologie();
744     int topdimension=top->get_dimension();
745     if (topdimension==3)
746     mainew->supprimer_mg_triangleid(triangle->get_id());
747     }
748    
749     LISTE_MG_TETRA::iterator ittet;
750     for (MG_TETRA* tetra=mainew->get_premier_tetra(ittet);tetra!=NULL;tetra=mainew->get_suivant_tetra(ittet))
751     mainew->supprimer_mg_tetraid(tetra->get_id());
752     //MG_FACE* face=geo->get_mg_faceid(5);
753    
754    
755     LISTE_MG_SEGMENT::iterator itseg;
756     for (MG_SEGMENT* segment=mainew->get_premier_segment(itseg);segment!=NULL;segment=mainew->get_suivant_segment(itseg))
757     {
758     MG_FACE* faceseg=(MG_FACE*) (segment->get_lien_topologie());
759     if (faceseg->get_id()!=181)
760     mainew->supprimer_mg_segmentid(segment->get_id());
761    
762     MG_ELEMENT_TOPOLOGIQUE *topseg=segment->get_lien_topologie();
763     if(topseg->get_dimension()==3)
764     cout<<"topseg->get_dimension()==3"<<endl;
765     }
766    
767     LISTE_MG_NOEUD::iterator itnod;
768     for (MG_NOEUD* vertices=mainew->get_premier_noeud(itnod);vertices!=NULL;vertices=mainew->get_suivant_noeud(itnod))
769     {
770     MG_ELEMENT_TOPOLOGIQUE *topnd=vertices->get_lien_topologie();
771     MG_FACE* facevert=(MG_FACE*) (vertices->get_lien_topologie());
772     //if (facevert->get_id()!=181)
773     if (topnd->get_dimension()==0)
774     mainew->supprimer_mg_segmentid(vertices->get_id());
775     }
776    
777     for (MG_TRIANGLE* triangle=mainew->get_premier_triangle(ittri);triangle!=NULL;triangle=mainew->get_suivant_triangle(ittri))
778     {
779     MG_FACE* facetri=(MG_FACE*) (triangle->get_lien_topologie());
780     if (facetri->get_id()!=181)
781     mainew->supprimer_mg_triangleid(triangle->get_id());
782     }
783     */
784 sattarpa 596
785     MG_FILE gest(magicfilename);
786     MG_MAILLAGE* mai;
787     if (meshno==0) mai=gest.get_mg_maillage(meshno); else mai=gest.get_mg_maillageid(meshno);
788 sattarpa 554 MG_GESTIONNAIRE* newgest=new MG_GESTIONNAIRE();
789     MG_GEOMETRIE* geonew=mai->get_mg_geometrie();
790     newgest->ajouter_mg_geometrie(geonew);
791     MG_MAILLAGE* mainew=new MG_MAILLAGE(geonew);
792     newgest->ajouter_mg_maillage(mainew);
793    
794     LISTE_MG_NOEUD::iterator itNod;
795     for (MG_NOEUD* nd=mai->get_premier_noeud(itNod);nd!=NULL;nd=mai->get_suivant_noeud(itNod))
796     {
797     MG_ELEMENT_TOPOLOGIQUE *topnd=nd->get_lien_topologie();
798     if(topnd->get_dimension()<3)
799     {
800     double x=nd->get_x();
801     double y=nd->get_y();
802     double z=nd->get_z();
803     MG_NOEUD *newno=new MG_NOEUD(nd->get_lien_topologie(),x,y,z,nd->get_origine());
804     mainew->ajouter_mg_noeud(newno);
805     nd->change_nouveau_numero(newno->get_id());
806     }
807     }
808     LISTE_MG_SEGMENT::iterator itSeg;
809     for (MG_SEGMENT* segment =mai->get_premier_segment(itSeg); segment; segment=mai->get_suivant_segment(itSeg))
810     {
811     MG_ELEMENT_TOPOLOGIQUE *topseg=segment->get_lien_topologie();
812     if(topseg->get_dimension()<3)
813     {
814     MG_NOEUD* no1=mainew->get_mg_noeudid(segment->get_noeud1()->get_nouveau_numero());
815     MG_NOEUD* no2=mainew->get_mg_noeudid(segment->get_noeud2()->get_nouveau_numero());
816     MG_SEGMENT *seg=new MG_SEGMENT(segment->get_lien_topologie(),no1,no2,segment->get_origine());
817     mainew->ajouter_mg_segment(seg);
818     }
819     }
820     LISTE_MG_TRIANGLE::iterator itTri;
821     for (MG_TRIANGLE * triangle =mai->get_premier_triangle(itTri); triangle; triangle=mai->get_suivant_triangle(itTri))
822     {
823     MG_ELEMENT_TOPOLOGIQUE *toptri=triangle->get_lien_topologie();
824     if(toptri->get_dimension()<3)
825     {
826     MG_NOEUD* no1=mainew->get_mg_noeudid(triangle->get_noeud1()->get_nouveau_numero());
827     MG_NOEUD* no2=mainew->get_mg_noeudid(triangle->get_noeud2()->get_nouveau_numero());
828     MG_NOEUD* no3=mainew->get_mg_noeudid(triangle->get_noeud3()->get_nouveau_numero());
829     mainew->ajouter_mg_triangle(triangle->get_lien_topologie(),no1,no2,no3,triangle->get_origine());
830     }
831     }
832 sattarpa 596 newgest->enregistrer(outputfilename);
833 sattarpa 554 }
834     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
835 sattarpa 596 void CRIAQOPERATORS::bumpmaker(char* outputfilename,int bumpndid, double bumptip,int meshno,char* magicfilename)
836 sattarpa 554 {
837     MG_FILE gest(magicfilename);
838     //MG_GEOMETRIE* geo=gest.get_mg_geometrie(0);
839     MG_MAILLAGE* mai;
840     if (meshno==0) mai=gest.get_mg_maillage(meshno); else mai=gest.get_mg_maillageid(meshno);
841     //MG_FILE gest((char*)"scnsurf_smplwithpocket_3d_13mm_64mmdeform.magic");
842     //MG_GEOMETRIE* geo=gest.get_mg_geometrieid(1);
843     //MG_MAILLAGE* mai=gest.get_mg_maillageid(2);
844     MG_NOEUD* bptipnd;
845     TPL_MAP_ENTITE<MG_NOEUD*> usednd;
846     LISTE_MG_NOEUD::iterator itnod;
847     for (MG_NOEUD* nd=mai->get_premier_noeud(itnod);nd!=NULL;nd=mai->get_suivant_noeud(itnod))
848     {
849     MG_ELEMENT_TOPOLOGIQUE *topnd=nd->get_lien_topologie();
850     if (topnd->get_dimension() <3 && nd->get_id()==bumpndid)
851     {
852     bptipnd=nd;
853     double new_xyz[3];
854     new_xyz[0]=nd->get_x(); new_xyz[1]=nd->get_y(); new_xyz[2]=nd->get_z()+bumptip;
855     nd->change_coord(new_xyz);
856     usednd.ajouter(nd);
857     }
858     }
859     TPL_MAP_ENTITE<MG_NOEUD*> usedndnd;
860     TPL_MAP_ENTITE<MG_NOEUD*> neignd;
861     for(int ineignd=0;ineignd<bptipnd->get_lien_segment()->get_nb();ineignd++)
862     {
863     MG_SEGMENT* segnei=bptipnd->get_lien_segment()->get(ineignd);
864     if(segnei->get_noeud1()!=bptipnd) neignd.ajouter(segnei->get_noeud1());
865     else if(segnei->get_noeud2()!=bptipnd) neignd.ajouter(segnei->get_noeud2());
866     }
867     TPL_MAP_ENTITE<MG_NOEUD*>::ITERATEUR itneignd;
868     for (MG_NOEUD* nd=neignd.get_premier(itneignd);nd!=NULL;nd=neignd.get_suivant(itneignd))
869     {
870     double new_xyz[3];
871     new_xyz[0]=nd->get_x(); new_xyz[1]=nd->get_y(); new_xyz[2]=nd->get_z()+(bumptip*3./4.);
872     nd->change_coord(new_xyz);
873     usednd.ajouter(nd);
874     usedndnd.ajouter(nd);
875     }
876    
877     TPL_MAP_ENTITE<MG_NOEUD*> neignd1;
878     TPL_MAP_ENTITE<MG_NOEUD*> usedndnd1;
879     TPL_MAP_ENTITE<MG_NOEUD*>::ITERATEUR itusednd;
880     TPL_MAP_ENTITE<MG_NOEUD*>::ITERATEUR itusedndnd;
881     for(MG_NOEUD* nd=usedndnd.get_premier(itusedndnd);nd!=NULL;nd=usedndnd.get_suivant(itusedndnd))
882     {
883     for(int ineignd=0;ineignd<nd->get_lien_segment()->get_nb();ineignd++)
884     {
885     MG_SEGMENT* segnei=nd->get_lien_segment()->get(ineignd);
886     int sgnd1=0;
887     int sgnd2=0;
888     for(MG_NOEUD* nd1=usednd.get_premier(itusednd);nd1!=NULL;nd1=usednd.get_suivant(itusednd))
889     {
890     if(segnei->get_noeud1()==nd1) sgnd1++;
891     }
892     for(MG_NOEUD* nd1=usednd.get_premier(itusednd);nd1!=NULL;nd1=usednd.get_suivant(itusednd))
893     {
894     if(segnei->get_noeud2()==nd1) sgnd2++;
895     }
896     if(sgnd1==0) neignd1.ajouter(segnei->get_noeud1());
897     else if(sgnd2==0) neignd1.ajouter(segnei->get_noeud2());
898     }
899     }
900     TPL_MAP_ENTITE<MG_NOEUD*>::ITERATEUR itneignd1;
901     for (MG_NOEUD* nd=neignd1.get_premier(itneignd1);nd!=NULL;nd=neignd1.get_suivant(itneignd1))
902     {
903     double new_xyz[3];
904     new_xyz[0]=nd->get_x(); new_xyz[1]=nd->get_y(); new_xyz[2]=nd->get_z()+(bumptip*2./4.);
905     nd->change_coord(new_xyz);
906     usednd.ajouter(nd);
907     usedndnd1.ajouter(nd);
908     }
909    
910     TPL_MAP_ENTITE<MG_NOEUD*> neignd2;
911     TPL_MAP_ENTITE<MG_NOEUD*>::ITERATEUR itusedndnd1;
912     for(MG_NOEUD* nd=usedndnd1.get_premier(itusedndnd1);nd!=NULL;nd=usedndnd1.get_suivant(itusedndnd1))
913     {
914     for(int ineignd=0;ineignd<nd->get_lien_segment()->get_nb();ineignd++)
915     {
916     MG_SEGMENT* segnei=nd->get_lien_segment()->get(ineignd);
917     int sgnd1=0;
918     int sgnd2=0;
919     for(MG_NOEUD* nd1=usednd.get_premier(itusednd);nd1!=NULL;nd1=usednd.get_suivant(itusednd))
920     {
921     if(segnei->get_noeud1()==nd1) sgnd1++;
922     }
923     for(MG_NOEUD* nd1=usednd.get_premier(itusednd);nd1!=NULL;nd1=usednd.get_suivant(itusednd))
924     {
925     if(segnei->get_noeud2()==nd1) sgnd2++;
926     }
927     if(sgnd1==0) neignd2.ajouter(segnei->get_noeud1());
928     else if(sgnd2==0) neignd2.ajouter(segnei->get_noeud2());
929     }
930     }
931     TPL_MAP_ENTITE<MG_NOEUD*>::ITERATEUR itneignd2;
932     for (MG_NOEUD* nd=neignd2.get_premier(itneignd2);nd!=NULL;nd=neignd2.get_suivant(itneignd2))
933     {
934     double new_xyz[3];
935     new_xyz[0]=nd->get_x(); new_xyz[1]=nd->get_y(); new_xyz[2]=nd->get_z()+(bumptip*1./4.);
936     nd->change_coord(new_xyz);
937     }
938    
939    
940     //gest.enregistrer("scnsurf_smplwithpocket_3d_13mm_64mmdeform_withbump5mm.magic");
941     gest.enregistrer(outputfilename);
942     }
943 sattarpa 596 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
944     int CRIAQOPERATORS::import_triangulation_gnif(char* outputfilename,char* triangulationfile)
945     {
946     FILE* in=fopen(triangulationfile,"rt");
947     if (in==NULL) return 0;
948 sattarpa 554
949    
950 sattarpa 596 MG_GESTIONNAIRE gesttmp;
951     MG_MAILLAGE* mai=new MG_MAILLAGE(NULL);
952     gesttmp.ajouter_mg_maillage(mai);
953     char mess[500];
954 sattarpa 554
955 sattarpa 596 double xmax=-1e308;
956     double xmin=1e308;
957     double ymax=-1e308;
958     double ymin=1e308;
959     double zmax=-1e308;
960     double zmin=1e308;
961     while (!feof(in))
962     {
963     double x,y,z;
964     char nom[20];
965     char *res=fgets(mess,500,in);
966     if (feof(in)) break;
967     //cout<<"mes1= "<<mess<<endl;
968     sscanf(mess,"%lf %lf %lf",&x,&y,&z);
969     if (x<xmin) xmin=x;
970     if (x>xmax) xmax=x;
971     if (y<ymin) ymin=y;
972     if (y>ymax) ymax=y;
973     if (z<zmin) zmin=z;
974     if (z>zmax) zmax=z;
975     if (feof(in)) return 1;
976     MG_NOEUD* noeud1=mai->ajouter_mg_noeud(NULL,x,y,z,TRIANGULATION);
977     noeud1->change_nouveau_numero(-1);
978     res=fgets(mess,500,in);
979     if (feof(in)) break;
980     //cout<<"mes2= "<<mess<<endl;
981     sscanf(mess,"%lf %lf %lf",&x,&y,&z);
982     if (x<xmin) xmin=x;
983     if (x>xmax) xmax=x;
984     if (y<ymin) ymin=y;
985     if (y>ymax) ymax=y;
986     if (z<zmin) zmin=z;
987     if (z>zmax) zmax=z;
988     if (feof(in)) return 1;
989     res=fgets(mess,500,in);
990     if (feof(in)) break;
991     //cout<<"mes3= "<<mess<<endl;
992     MG_NOEUD* noeud2=mai->ajouter_mg_noeud(NULL,x,y,z,TRIANGULATION);
993     noeud2->change_nouveau_numero(-1);
994     sscanf(mess,"%lf %lf %lf",&x,&y,&z);
995     if (x<xmin) xmin=x;
996     if (x>xmax) xmax=x;
997     if (y<ymin) ymin=y;
998     if (y>ymax) ymax=y;
999     if (z<zmin) zmin=z;
1000     if (z>zmax) zmax=z;
1001     if (feof(in)) return 1;
1002     MG_NOEUD* noeud3=mai->ajouter_mg_noeud(NULL,x,y,z,TRIANGULATION);
1003     noeud3->change_nouveau_numero(-1);
1004     mai->ajouter_mg_triangle(NULL,noeud1,noeud2,noeud3,TRIANGULATION);
1005     //cout<<"feof(in)= "<<feof(in)<<endl;
1006     }
1007     fclose(in);
1008     //to merge the nodes of each triangulation which are close (the same)
1009     double eps=1e-4;
1010     BOITE_3D boite(xmin,ymin,zmin,xmax,ymax,zmax);
1011     double rayon=boite.get_rayon()*1.1;
1012     double x=boite.get_xcentre();
1013     double y=boite.get_ycentre();
1014     double z=boite.get_zcentre();
1015     boite.reinit(x-rayon,y-rayon,z-rayon,x+rayon,y+rayon,z+rayon);
1016     TPL_GRILLE<MG_NOEUD*> grille;
1017     int nb_noeud=mai->get_nb_mg_noeud();
1018     int pas=(int)(pow(nb_noeud,0.33333333333333333))+1;
1019     grille.initialiser(boite.get_xmin(),boite.get_ymin(),boite.get_zmin(),boite.get_xmax(),boite.get_ymax(),boite.get_zmax(),pas,pas,pas);
1020     std::vector<MG_NOEUD*> lst_noeud;
1021     LISTE_MG_NOEUD::iterator it;
1022     int i=0;
1023     for (MG_NOEUD* noeud=mai->get_premier_noeud(it);noeud!=NULL;noeud=mai->get_suivant_noeud(it))
1024     {
1025     //MG_NOEUD* noeud=mai->get_mg_noeud(i);
1026     grille.inserer(noeud);
1027     noeud->change_nouveau_numero(i);
1028     lst_noeud.insert(lst_noeud.end(),noeud);
1029     i++;
1030     }
1031 sattarpa 554
1032 sattarpa 596 int nb_cell=grille.get_nb_cellule();
1033     for (int i=0;i<nb_cell;i++)
1034     {
1035     TPL_CELLULE_GRILLE<MG_NOEUD*> *cell=grille.get_cellule(i);
1036     int nb_noeud_cell=cell->get_nb_entite();
1037     for (int j=0;j<nb_noeud_cell;j++)
1038     {
1039     MG_NOEUD* noeud1=cell->get_entite(j);
1040     // if (noeud1->get_nouveau_numero()!=(-1)) continue;
1041     // noeud1->change_nouveau_numero(noeud1->get_id());
1042     double *xyz1=noeud1->get_coord();
1043     int nb=noeud1->get_lien_segment()->get_nb();
1044     double longref=0.;
1045     for (int jj=0;jj<nb;jj++)
1046     longref=longref+noeud1->get_lien_segment()->get(jj)->get_longueur();
1047     longref=longref/nb;
1048     for (int k=j+1;k<nb_noeud_cell;k++)
1049     {
1050     MG_NOEUD* noeud2=cell->get_entite(k);
1051     double *xyz2=noeud2->get_coord();
1052     OT_VECTEUR_3D vec(xyz1,xyz2);
1053     double longueur=vec.get_longueur();
1054     if (longueur<eps*longref)
1055     {
1056     lst_noeud[noeud2->get_nouveau_numero()]=noeud1;
1057     }
1058     }
1059     }
1060     }
1061     MG_GESTIONNAIRE gest;
1062     MG_MAILLAGE* mai2=new MG_MAILLAGE(NULL);
1063     gest.ajouter_mg_maillage(mai2);
1064     for (int i=0;i<nb_noeud;i++)
1065     {
1066     MG_NOEUD* noeud=lst_noeud[i];
1067     MG_NOEUD* nvnoeud;
1068     if (noeud->get_nouveau_numero()==i) nvnoeud=mai2->ajouter_mg_noeud(NULL,noeud->get_x(),noeud->get_y(),noeud->get_z(),TRIANGULATION);
1069     else nvnoeud=lst_noeud[noeud->get_nouveau_numero()];
1070     lst_noeud[i]=nvnoeud;
1071     }
1072     int nb_tri=mai->get_nb_mg_triangle();
1073     for (int i=0;i<nb_tri;i++)
1074     {
1075     MG_TRIANGLE* tri=mai->get_mg_triangle(i);
1076     MG_NOEUD* noeud1=tri->get_noeud1();
1077     MG_NOEUD* noeud2=tri->get_noeud2();
1078     MG_NOEUD* noeud3=tri->get_noeud3();
1079     mai2->ajouter_mg_triangle(NULL,lst_noeud[noeud1->get_nouveau_numero()],lst_noeud[noeud2->get_nouveau_numero()],lst_noeud[noeud3->get_nouveau_numero()],TRIANGULATION);
1080     }
1081     gest.enregistrer(outputfilename);
1082     return 1;
1083     }
1084 sattarpa 554
1085    
1086    
1087    
1088    
1089    
1090    
1091    
1092    
1093    
1094    
1095    
1096    
1097    
1098    
1099    
1100    
1101    
1102    
1103    
1104    
1105    
1106    
1107 sattarpa 596
1108    
1109    
1110