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 
MAILLEUR0D::mg_sommet
MG_SOMMET * mg_sommet
Definition: mailleur0d.h:48
gestionversion.h
MG_GROUPE_TOPOLOGIQUE::get_suivant
virtual MG_ELEMENT_TOPOLOGIQUE * get_suivant(std::map< class MG_ELEMENT_TOPOLOGIQUE *, MG_ELEMENT_TOPOLOGIQUE * >::iterator &it)
Definition: mg_groupe_topologique.cpp:106
TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE * >
FAIL
const int FAIL
Definition: mg_definition.h:39
MG_IDENTIFICATEUR::get_id
unsigned long get_id()
Definition: mg_identificateur.cpp:53
TPL_MAP_ENTITE::existe
virtual int existe(X x)
Definition: tpl_map_entite.h:61
MG_GEOMETRIE::get_mg_sommet
MG_SOMMET * get_mg_sommet(unsigned int num)
Definition: mg_geometrie.cpp:539
OK
const int OK
Definition: mg_definition.h:38
MAILLEUR0D::mg_geometrie
MG_GEOMETRIE * mg_geometrie
Definition: mailleur0d.h:47
MG_ELEMENT_TOPOLOGIQUE::get_lien_maillage
virtual TPL_SET< MG_ELEMENT_MAILLAGE * > * get_lien_maillage(void)
Definition: mg_element_topologique.cpp:62
MG_ELEMENT_TOPOLOGIQUE
Definition: mg_element_topologique.h:51
TPL_SET::ajouter
void ajouter(X x)
Definition: tpl_set.h:55
MG_NOEUD
Definition: mg_noeud.h:41
TPL_SET::get_nb
int get_nb(void)
Definition: tpl_set.h:78
MAILLEUR0D::mg_maillage
MG_MAILLAGE * mg_maillage
Definition: mailleur0d.h:46
MG_SOMMET::get_point
virtual MG_POINT * get_point(void)
Definition: mg_sommet.cpp:52
MG_MAILLAGE::get_mg_noeudid
MG_NOEUD * get_mg_noeudid(unsigned long num)
Definition: mg_maillage.cpp:451
TPL_MAP_ENTITE::ajouter
virtual void ajouter(X x)
Definition: tpl_map_entite.h:55
TPL_SET::get
X get(int num)
Definition: tpl_set.h:84
MG_GROUPE_TOPOLOGIQUE
Definition: mg_groupe_topologique.h:31
MG_ELEMENT_MAILLAGE::get_lien_topologie
MG_ELEMENT_TOPOLOGIQUE * get_lien_topologie(void)
Definition: mg_element_maillage.cpp:51
MAILLEUR
Definition: mailleur.h:33
MG_GEOMETRIE
Definition: mg_geometrie.h:84
MAILLEUR0D::MAILLEUR0D
MAILLEUR0D(MG_MAILLAGE *mgmai, MG_GEOMETRIE *mggeo, MG_SOMMET *mgsom=NULL)
Definition: mailleur0d.cpp:30
MG_MAILLAGE
Definition: mg_maillage.h:62
MAILLEUR0D::adapte
void adapte(void)
Definition: mailleur0d.cpp:85
MG_GROUPE_TOPOLOGIQUE::get_premier
virtual MG_ELEMENT_TOPOLOGIQUE * get_premier(std::map< class MG_ELEMENT_TOPOLOGIQUE *, MG_ELEMENT_TOPOLOGIQUE * >::iterator &it)
Definition: mg_groupe_topologique.cpp:98
MG_SOMMET
Definition: mg_sommet.h:35
MAILLEUR0D::~MAILLEUR0D
~MAILLEUR0D()
Definition: mailleur0d.cpp:36
MAGIC::ORIGINE::MAILLEUR_AUTO
@ MAILLEUR_AUTO
Definition: mg_definition.h:79
MAILLEUR0D::maille
int maille(MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
Definition: mailleur0d.cpp:43
MG_POINT::evaluer
virtual void evaluer(double *xyz)=0
mailleur0d.h
MG_GEOMETRIE::get_nb_mg_sommet
unsigned int get_nb_mg_sommet(void)
Definition: mg_geometrie.cpp:552
MG_MAILLAGE::ajouter_mg_noeud
MG_NOEUD * ajouter_mg_noeud(MG_ELEMENT_TOPOLOGIQUE *topo, double xx, double yy, double zz, int origine, unsigned long num=0)
Definition: mg_maillage.cpp:421