77 PIR_IMPORT::PIR_IMPORT()
84 if (fichier.analyser_syntaxe()!=0)
return NULL;
87 P__IDENTIFICATEUR idgeo(geo);
88 PG_GEOMETRIE *pggeo=fichier.trouver_geometrie(idgeo);
91 afficheur << ERRGEOMETRIE << enderr;
98 PG_VOLUME *pgvol=pggeo->trouver_volume(*volume);
99 importer_volume(mggeo,pggeo,pgvol);
101 else importer_volume(mggeo,pggeo);
110 PIR_IMPORT::~PIR_IMPORT()
116 void PIR_IMPORT::importer_volume(
MG_GEOMETRIE* mggeo,PG_GEOMETRIE* pggeo,PG_VOLUME* pgvoldesire)
118 for (
int nbvol=0;nbvol<pggeo->get_nbvolumes();nbvol++)
120 PG_VOLUME* pgvol=pggeo->get_volume(nbvol);
121 if ((pgvoldesire==NULL)||((pgvoldesire!=NULL)&&(pgvol==pgvoldesire)))
125 for (
int ii=0;ii<pgvol->get_nbcoquilles();ii++)
127 const PG_COQUILLE* pgcoq=pgvol->get_coquille(ii);
130 for (
int jj=0;jj<pgcoq->get_nbfacesassociees();jj++)
132 const PG_FACE_ASSOCIEE* pgfaceass=pgcoq->get_faceassociee(jj);
133 const PG_FACE& pgface=pgfaceass->get_face();
134 const PG_SURFACE& pgsurface=pgface.get_position()->get_surface();
135 MG_SURFACE* mgsrf=trouver((PG_SURFACE*)&pgsurface);
138 PIR_SURFACE* pirsrf=
new PIR_SURFACE((PG_SURFACE*)&pgsurface);
141 relation((PG_SURFACE*)&pgsurface,mgsrf);
143 MG_FACE* mgface=trouver((PG_FACE*)&pgface);
148 relation((PG_FACE*)&pgface,mgface);
151 if (pgfaceass->get_orientation()==1) sens=1;
155 for (
int i=0;i<pgface.get_nbboucles();i++)
157 const PG_BOUCLE* pgboucle=pgface.get_boucle(i);
160 for (
int j=0;j<pgboucle->get_nbaretesassociees();j++)
162 const PG_ARETE_ASSOCIEE* pgareteass=pgboucle->get_areteassociee(j);
163 const PG_ARETE& pgarete=pgareteass->get_arete();
164 const PG_POSITION1D *pos1d=pgarete.get_position();
165 const PG_COURBE& pcrb=pos1d->get_courbe();
166 MG_COURBE* mgcrb=trouver((PG_COURBE*)&pcrb);
169 PIR_COURBE *pircrb=
new PIR_COURBE((PG_COURBE* )&pcrb);
172 relation((PG_COURBE*)&pcrb,mgcrb);
174 const PG_SOMMET& psom1=pgarete.get_sommetassocie1()->get_sommet();
175 const PG_SOMMET& psom2=pgarete.get_sommetassocie2()->get_sommet();
177 MG_SOMMET* mgsom=trouver((PG_SOMMET*)&psom1);
180 psom1.get_position()->get_coord(coo);
186 relation((PG_SOMMET*)&psom1,mgsom);
188 MG_SOMMET* mgsom2=trouver((PG_SOMMET*)&psom2);
191 psom2.get_position()->get_coord(coo);
197 relation((PG_SOMMET*)&psom2,mgsom2);
199 MG_ARETE* mgarete=trouver((PG_ARETE*)&pgarete);
204 relation((PG_ARETE*)&pgarete,mgarete);
211 if (pgareteass->get_orientation_arete()==1) sens=1;
226 void PIR_IMPORT::transferer_maillage_arete(
MG_GEOMETRIE& mggeo,PM_MAILLAGE& mai,
int *arete)
233 if ((mgarete==NULL) || (mgarete_courante==mgarete))
235 PG_ARETE* pgarete=trouver(mgarete_courante);
236 P__IDENTIFICATEUR nomZone(
"dicretisationDeLArete");
237 nomZone += pgarete->get_id();
238 P_TMPL_CHAMP_MEMOIRE_REF<int> cnc;
239 PM_ZONE* pmzone=mai.ajouter_zone( nomZone,*PT_INTERPOLANT_LAGRANGE::getLagrLigne02(), &cnc, pgarete->get_id() );
249 pmzone->ajouter_cncelement( cncDeElm );
256 void PIR_IMPORT::transferer_maillage_face(
MG_GEOMETRIE& mggeo,PM_MAILLAGE& mai,
int *face)
263 if ((mgface==NULL) || (mgface_courante==mgface))
265 PG_FACE* pgface=trouver(mgface_courante);
266 P__IDENTIFICATEUR nomZone(
"dicretisationDeLaFace");
267 nomZone += pgface->get_id();
268 P_TMPL_CHAMP_MEMOIRE_REF<int> cnc;
269 PM_ZONE* pmzone=mai.ajouter_zone( nomZone,*PT_INTERPOLANT_LAGRANGE::getLagrTrian03(), &cnc, pgface->get_id() );
280 pmzone->ajouter_cncelement( cncDeElm );
288 void PIR_IMPORT::transferer_noeud(
MG_MAILLAGE& mgmai,PM_MAILLAGE& pmmai)
290 P_TMPL_CHAMP_MEMOIRE_REF<double> coord(
"", P__CHAMP_REF_DATA(3));
291 P_TMPL_CHAMP_MEMOIRE_REF<int> codes(
"", P__CHAMP_REF_DATA(1));
295 double coordDuNoeud[3];
297 coord.ajouter_groupes(coordDuNoeud);
304 code=trouver((
MG_SOMMET*)mg_topo)->get_id();
307 code=trouver((
MG_ARETE*)mg_topo)->get_id();
310 code=trouver((
MG_FACE*)mg_topo)->get_id();
314 codes.ajouter_groupes(&code);
316 pmmai.changer_champ_coordonnees(&coord);
317 pmmai.changer_champ_codesnoeuds(&codes);
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 void ajouter_mg_coface(class MG_COFACE *mgcoface)
virtual int get_nouveau_numero(void)
MG_ELEMENT_TOPOLOGIQUE * get_lien_topologie(void)
virtual void change_nouveau_numero(int num)
virtual TPL_SET< MG_ELEMENT_MAILLAGE * > * get_lien_maillage(void)
virtual int get_dimension(void)=0
virtual int ajouter_mg_courbe(MG_COURBE *mgcrb)
unsigned int get_nb_mg_arete(void)
virtual int ajouter_mg_face(MG_FACE *mgface)
virtual int ajouter_mg_coquille(MG_COQUILLE *mgcoq)
unsigned int get_nb_mg_face(void)
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)
virtual int ajouter_mg_arete(MG_ARETE *mgarete)
MG_ARETE * get_mg_arete(unsigned int num)
MG_FACE * get_mg_face(unsigned int num)
virtual int ajouter_mg_cosommet(MG_COSOMMET *mgcosom)
MG_FACE * get_mg_faceid(unsigned long num)
virtual int ajouter_mg_boucle(MG_BOUCLE *mgboucle)
virtual int ajouter_mg_sommet(MG_SOMMET *mgsom)
MG_ARETE * get_mg_areteid(unsigned long num)
virtual int ajouter_mg_coface(MG_COFACE *mgcoface)
int ajouter_mg_geometrie(MG_GEOMETRIE *mggeo)
unsigned int get_nb_mg_noeud(void)
MG_NOEUD * get_mg_noeud(unsigned int num)
virtual double * get_coord(void)
virtual MG_NOEUD * get_noeud1(void)
virtual MG_NOEUD * get_noeud2(void)
virtual MG_NOEUD * get_noeud3(void)
virtual MG_NOEUD * get_noeud1(void)
virtual MG_NOEUD * get_noeud2(void)
virtual X get_premier(ITERATEUR &it)
virtual X get_suivant(ITERATEUR &it)
std::map< unsigned long, X, std::less< unsigned long > >::iterator ITERATEUR