MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mailleur0d.cpp
Aller à la documentation de ce fichier.
1 //####//------------------------------------------------------------
2 //####//------------------------------------------------------------
3 //####// MAGiC
4 //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5 //####// Departement de Genie Mecanique - UQTR
6 //####//------------------------------------------------------------
7 //####// MAGIC est un projet de recherche de l equipe ERICCA
8 //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9 //####// http://www.uqtr.ca/ericca
10 //####// http://www.uqtr.ca/
11 //####//------------------------------------------------------------
12 //####//------------------------------------------------------------
13 //####//
14 //####// mailleur0d.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:55 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 
23 
24 #include "gestionversion.h"
25 #include "mailleur0d.h"
26 
27 
28 
29 
30 MAILLEUR0D::MAILLEUR0D(MG_MAILLAGE* mgmai,MG_GEOMETRIE *mggeo,MG_SOMMET* mgsom):MAILLEUR(false),mg_maillage(mgmai),mg_geometrie(mggeo),mg_sommet(mgsom)
31 {
32 }
33 
34 
35 
37 {
38 }
39 
40 
41 
42 
44 {
45  if (mg_sommet!=NULL)
46  {
47  if(maille(mg_sommet)==FAIL) return FAIL;
48  }
49  else
50  {
52  if (mggt!=NULL)
53  {
54  std::map<MG_ELEMENT_TOPOLOGIQUE*,MG_ELEMENT_TOPOLOGIQUE*>::iterator it;
55  for(MG_ELEMENT_TOPOLOGIQUE* ele=mggt->get_premier(it);ele!=NULL;ele=mggt->get_suivant(it))
56  {
57  lst.ajouter(ele);
58  ele->get_topologie_sousjacente(&lst);
59  }
60  }
61  int nb_sommet=mg_geometrie->get_nb_mg_sommet();
62  for (int i=0;i<nb_sommet;i++)
63  {
65  if (mggt!=NULL)
66  if (lst.existe(mgsom)==0) continue;
67  if(maille(mgsom)==FAIL) return FAIL;
68  }
69  }
70  return OK;
71 }
72 
73 
75 {
76  double coo[3];
77  mgsom->get_point()->evaluer(coo);
78  MG_NOEUD* mgnoeud=new MG_NOEUD(mgsom,coo[0],coo[1],coo[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
79  mg_maillage->ajouter_mg_noeud(mgnoeud);
80  mgnoeud->get_lien_topologie()->get_lien_maillage()->ajouter(mgnoeud);
81  return OK;
82 }
83 
84 
86 {
87  if (mg_sommet!=NULL) adapte(mg_sommet);
88  else
89  {
90  int nb_sommet=mg_geometrie->get_nb_mg_sommet();
91  for (int i=0;i<nb_sommet;i++)
92  {
94  adapte(mgsom);
95  }
96  }
97 }
98 
99 
101 {
102  int nb_noeud=mgsom->get_lien_maillage()->get_nb();
103  for (int i=0;i<nb_noeud;i++)
104  {
105  MG_NOEUD* noeud=(MG_NOEUD*)mgsom->get_lien_maillage()->get(i);
106  MG_NOEUD* noeudtmp=mg_maillage->get_mg_noeudid(noeud->get_id());
107  if (noeudtmp!=NULL) return;
108  }
109  double coo[3];
110  mgsom->get_point()->evaluer(coo);
111  MG_NOEUD* mgnoeud=new MG_NOEUD(mgsom,coo[0],coo[1],coo[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
112  mg_maillage->ajouter_mg_noeud(mgnoeud);
113  mgnoeud->get_lien_topologie()->get_lien_maillage()->ajouter(mgnoeud);
114 }
115 
116 
117 
118 
119 
void adapte(void)
Definition: mailleur0d.cpp:85
MAILLEUR0D(MG_MAILLAGE *mgmai, MG_GEOMETRIE *mggeo, MG_SOMMET *mgsom=NULL)
Definition: mailleur0d.cpp:30
MG_MAILLAGE * mg_maillage
Definition: mailleur0d.h:46
int maille(MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
Definition: mailleur0d.cpp:43
MG_SOMMET * mg_sommet
Definition: mailleur0d.h:48
MG_GEOMETRIE * mg_geometrie
Definition: mailleur0d.h:47
MG_ELEMENT_TOPOLOGIQUE * get_lien_topologie(void)
virtual TPL_SET< MG_ELEMENT_MAILLAGE * > * get_lien_maillage(void)
MG_SOMMET * get_mg_sommet(unsigned int num)
unsigned int get_nb_mg_sommet(void)
virtual MG_ELEMENT_TOPOLOGIQUE * get_premier(std::map< class MG_ELEMENT_TOPOLOGIQUE *, MG_ELEMENT_TOPOLOGIQUE * >::iterator &it)
virtual MG_ELEMENT_TOPOLOGIQUE * get_suivant(std::map< class MG_ELEMENT_TOPOLOGIQUE *, MG_ELEMENT_TOPOLOGIQUE * >::iterator &it)
unsigned long get_id()
MG_NOEUD * get_mg_noeudid(unsigned long num)
MG_NOEUD * ajouter_mg_noeud(MG_ELEMENT_TOPOLOGIQUE *topo, double xx, double yy, double zz, int origine, unsigned long num=0)
virtual void evaluer(double *xyz)=0
virtual MG_POINT * get_point(void)
Definition: mg_sommet.cpp:52
virtual void ajouter(X x)
virtual int existe(X x)
int get_nb(void)
Definition: tpl_set.h:78
X get(int num)
Definition: tpl_set.h:84
void ajouter(X x)
Definition: tpl_set.h:55
const int OK
Definition: mg_definition.h:38
const int FAIL
Definition: mg_definition.h:39