MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mg_cg_operateur.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 //####// mg_cg_operateur.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:54 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #include "mg_cg_operateur.h"
23 #include "mg_cg_forme.h"
24 #include "mg_definition.h"
25 #include "mg_cg_modele.h"
26 
27 MG_CG_OPERATEUR::MG_CG_OPERATEUR(MG_CG_MODELE* mgcg_modele,int semantique): MG_CONSTRUCTION_GEOMETRIQUE(),m_semantique(semantique)
28 {
29  mgcg_modele->ajouter_mgcg_operateur(this);
31  m_etat=MG_CG_OPERATEUR::ETAT_OPERATEUR::NON_CONSTRUIT;
32 }
33 
34 MG_CG_OPERATEUR::MG_CG_OPERATEUR(MG_CG_MODELE* mgcg_modele,int semantique, int etat, long unsigned int num): MG_CONSTRUCTION_GEOMETRIQUE(num),m_semantique(semantique),m_etat(etat)
35 {
36  mgcg_modele->ajouter_mgcg_operateur(this);
38 }
39 
41 {
43  m_etat=MG_CG_OPERATEUR::ETAT_OPERATEUR::NON_CONSTRUIT;
44  std::map<long,MG_CG_FORME*>::iterator it_forme;
45  for(MG_CG_FORME* forme=mdd.get_premiere_mgcg_forme_entree(it_forme);forme!=NULL;forme=mdd.get_suivante_mgcg_forme_entree(it_forme))
46  {
48  }
49 }
50 
52 {
53  std::map<long,MG_CG_FORME*>::iterator it_forme;
54  for(MG_CG_FORME* forme=get_premiere_mgcg_forme_entree(it_forme);forme!=NULL;forme=get_suivante_mgcg_forme_entree(it_forme))
55  {
56  forme->retirer_mgcg_operateur_dependant(this);
57  }
58  for(MG_CG_FORME* forme=get_premiere_mgcg_forme_sortie(it_forme);forme!=NULL;forme=get_suivante_mgcg_forme_sortie(it_forme))
59  {
60  forme->change_mgcg_operateur_parent(NULL);
61  }
62 }
63 
65 {
66  m_mgcg_modele=mgcg_modele;
67 }
68 
70 {
71  return m_mgcg_modele;
72 }
73 
74 void MG_CG_OPERATEUR::change_etat(int etat_operateur)
75 {
76  m_etat=etat_operateur;
77 }
78 
80 {
81  return m_etat;
82 }
83 
85 {
86  return m_semantique;
87 }
88 
90 {
91  m_semantique=semantique;
92 }
93 
95 {
106 }
107 
109 {
110  return m_map_mgcg_forme_entree.size();
111 }
112 
114 {
115  std::pair<std::map<long,MG_CG_FORME*>::iterator,bool> p=m_map_mgcg_forme_entree.insert(std::pair<long,MG_CG_FORME*>(mgcg_forme->get_id(),mgcg_forme));
116  if (!p.second)
117  return FAIL;
118  mgcg_forme->ajouter_mgcg_operateur_dependant(this);
119  return OK;
120 }
121 
123 {
124  std::map<long,MG_CG_FORME*>::iterator it;
125  it=m_map_mgcg_forme_entree.find(mgcg_forme->get_id());
126  if(it!=m_map_mgcg_forme_entree.end())
127  {
128  (it->second)->retirer_mgcg_operateur_dependant(this);
129  m_map_mgcg_forme_entree.erase(it);
130 
131  return OK;
132  }
133  else return FAIL;
134 }
135 
137 {
138  std::map<long,MG_CG_FORME*>::iterator it;
139  it=m_map_mgcg_forme_entree.find(id);
140  if(it!=m_map_mgcg_forme_entree.end())
141  {
142  (it->second)->retirer_mgcg_operateur_dependant(this);
143  m_map_mgcg_forme_entree.erase(it);
144  return OK;
145  }
146  else return FAIL;
147 }
148 
150 {
151  std::map<long,MG_CG_FORME*>::iterator it;
152  for(MG_CG_FORME* mgcg_forme=get_premiere_mgcg_forme_entree(it);mgcg_forme!=NULL;mgcg_forme=get_suivante_mgcg_forme_entree(it)) mgcg_forme->retirer_mgcg_operateur_dependant(this);
153  m_map_mgcg_forme_entree.clear();
154 }
155 
156 MG_CG_FORME* MG_CG_OPERATEUR::get_premiere_mgcg_forme_entree(std::map<long,MG_CG_FORME*>::iterator& it)
157 {
158  it=m_map_mgcg_forme_entree.begin();
159  if(it==m_map_mgcg_forme_entree.end())
160  return NULL;
161  return it->second;
162 }
163 
164 MG_CG_FORME* MG_CG_OPERATEUR::get_suivante_mgcg_forme_entree(std::map<long,MG_CG_FORME*>::iterator& it)
165 {
166  it++;
167  if(it==m_map_mgcg_forme_entree.end())
168  return NULL;
169  return it->second;
170 }
171 
173 {
174  std::map<long,MG_CG_FORME*>::iterator it=m_map_mgcg_forme_entree.find(id);
175  if (it==m_map_mgcg_forme_entree.end())
176  {
177  return NULL;
178  }
179  return ((*it).second);
180 }
181 
183 {
184  return m_map_mgcg_forme_sortie.size();
185 }
186 
188 {
189  std::pair<std::map<long,MG_CG_FORME*>::iterator,bool> p=m_map_mgcg_forme_sortie.insert(std::pair<long,MG_CG_FORME*>(mgcg_forme->get_id(),mgcg_forme));
190  if (!p.second)
191  return FAIL;
192  return OK;
193 }
194 
196 {
197  std::map<long,MG_CG_FORME*>::iterator it;
198  it=m_map_mgcg_forme_sortie.find(mgcg_forme->get_id());
199  if(it!=m_map_mgcg_forme_sortie.end())
200  {
201  m_map_mgcg_forme_sortie.erase(it);
202  return OK;
203  }
204  else return FAIL;
205 }
206 
208 {
209  std::map<long,MG_CG_FORME*>::iterator it;
210  it=m_map_mgcg_forme_sortie.find(id);
211  if(it!=m_map_mgcg_forme_sortie.end())
212  {
213  m_map_mgcg_forme_sortie.erase(it);
214  return OK;
215  }
216  else return FAIL;
217 }
218 
220 {
221  m_map_mgcg_forme_sortie.clear();
222 }
223 
224 MG_CG_FORME* MG_CG_OPERATEUR::get_premiere_mgcg_forme_sortie(std::map<long,MG_CG_FORME*>::iterator& it)
225 {
226  it=m_map_mgcg_forme_sortie.begin();
227  if(it==m_map_mgcg_forme_sortie.end())
228  return NULL;
229  return it->second;
230 }
231 
232 MG_CG_FORME* MG_CG_OPERATEUR::get_suivante_mgcg_forme_sortie(std::map<long,MG_CG_FORME*>::iterator& it)
233 {
234  it++;
235  if(it==m_map_mgcg_forme_sortie.end())
236  return NULL;
237  return it->second;
238 }
239 
241 {
242  std::map<long,MG_CG_FORME*>::iterator it=m_map_mgcg_forme_sortie.find(id);
243  if (it==m_map_mgcg_forme_sortie.end())
244  {
245  return NULL;
246  }
247  return ((*it).second);
248 }
249 
251 {
252  return TYPE_MG_CONSTRUCTION_GEOMETRIQUE::MGCG_OPERATEUR;
253 }
254 
MG_CG_OPERATEUR::get_mgcg_modele
virtual MG_CG_MODELE * get_mgcg_modele(void)
Definition: mg_cg_operateur.cpp:69
MG_CG_OPERATEUR::ajouter_mgcg_forme_entree
virtual int ajouter_mgcg_forme_entree(MG_CG_FORME *mgcg_forme)
Definition: mg_cg_operateur.cpp:113
mg_cg_forme.h
MG_CG_OPERATEUR::get_suivante_mgcg_forme_sortie
virtual MG_CG_FORME * get_suivante_mgcg_forme_sortie(std::map< long, MG_CG_FORME * >::iterator &it)
Definition: mg_cg_operateur.cpp:232
MG_CG_OPERATEUR::ajouter_mgcg_forme_sortie
virtual int ajouter_mgcg_forme_sortie(MG_CG_FORME *mgcg_forme)
Definition: mg_cg_operateur.cpp:187
FAIL
const int FAIL
Definition: mg_definition.h:39
MG_CG_OPERATEUR::change_etat
virtual void change_etat(int etat_operateur)
Definition: mg_cg_operateur.cpp:74
MG_CG_OPERATEUR::get_premiere_mgcg_forme_entree
virtual MG_CG_FORME * get_premiere_mgcg_forme_entree(std::map< long, MG_CG_FORME * >::iterator &it)
Definition: mg_cg_operateur.cpp:156
MAGIC::SEMANTIQUECSG::CHAMFREIN
@ CHAMFREIN
Definition: mg_definition.h:177
MAGIC::SEMANTIQUECSG::FRAGMENT
@ FRAGMENT
Definition: mg_definition.h:177
MG_CG_OPERATEUR::m_mgcg_modele
MG_CG_MODELE * m_mgcg_modele
Definition: mg_cg_operateur.h:81
MG_CG_OPERATEUR::get_nb_mgcg_forme_entree
virtual long get_nb_mgcg_forme_entree(void)
Definition: mg_cg_operateur.cpp:108
MAGIC::SEMANTIQUECSG::PERCAGE
@ PERCAGE
Definition: mg_definition.h:177
MG_CG_OPERATEUR::get_mgcg_forme_entreeid
virtual MG_CG_FORME * get_mgcg_forme_entreeid(long id)
Definition: mg_cg_operateur.cpp:172
MG_CG_OPERATEUR::change_semantique
virtual void change_semantique(int semantique)
Definition: mg_cg_operateur.cpp:89
MG_CG_OPERATEUR::get_nb_mgcg_forme_sortie
virtual long get_nb_mgcg_forme_sortie(void)
Definition: mg_cg_operateur.cpp:182
MAGIC::SEMANTIQUECSG::ERREUR
@ ERREUR
Definition: mg_definition.h:177
OK
const int OK
Definition: mg_definition.h:38
MG_CG_OPERATEUR::retirer_mgcg_forme_entreeid
virtual int retirer_mgcg_forme_entreeid(long id)
Definition: mg_cg_operateur.cpp:136
MAGIC::SEMANTIQUECSG::UNION
@ UNION
Definition: mg_definition.h:177
MG_CG_OPERATEUR::get_etat
virtual int get_etat(void)
Definition: mg_cg_operateur.cpp:79
MAGIC::SEMANTIQUECSG::CONGE
@ CONGE
Definition: mg_definition.h:177
mg_cg_operateur.h
MAGIC::SEMANTIQUECSG::EXTRUSION
@ EXTRUSION
Definition: mg_definition.h:177
MG_CG_MODELE::ajouter_mgcg_operateur
virtual int ajouter_mgcg_operateur(MG_CG_OPERATEUR *mgcg_operateur)
Definition: mg_cg_modele.cpp:118
MG_CG_FORME
Definition: mg_cg_forme.h:41
MG_CG_OPERATEUR
Definition: mg_cg_operateur.h:34
MG_CG_OPERATEUR::~MG_CG_OPERATEUR
virtual ~MG_CG_OPERATEUR()
Definition: mg_cg_operateur.cpp:51
MG_CG_MODELE
Definition: mg_cg_modele.h:41
MAGIC::SEMANTIQUECSG::INTERSECTION
@ INTERSECTION
Definition: mg_definition.h:177
MAGIC::SEMANTIQUECSG::SANS
@ SANS
Definition: mg_definition.h:177
MG_CG_OPERATEUR::retirer_mgcg_forme_sortieid
virtual int retirer_mgcg_forme_sortieid(long id)
Definition: mg_cg_operateur.cpp:207
MG_CG_OPERATEUR::m_map_mgcg_forme_sortie
std::map< long, MG_CG_FORME * > m_map_mgcg_forme_sortie
Definition: mg_cg_operateur.h:85
MG_CG_OPERATEUR::get_premiere_mgcg_forme_sortie
virtual MG_CG_FORME * get_premiere_mgcg_forme_sortie(std::map< long, MG_CG_FORME * >::iterator &it)
Definition: mg_cg_operateur.cpp:224
MG_CG_OPERATEUR::m_etat
int m_etat
Definition: mg_cg_operateur.h:82
mg_cg_modele.h
MG_CG_OPERATEUR::m_semantique
int m_semantique
Definition: mg_cg_operateur.h:83
MG_CG_OPERATEUR::verifie_semantique
virtual void verifie_semantique(void)
Definition: mg_cg_operateur.cpp:94
MAGIC::SEMANTIQUECSG::SOUSTRACTION
@ SOUSTRACTION
Definition: mg_definition.h:177
MG_CG_OPERATEUR::retirer_mgcg_forme_sortie
virtual int retirer_mgcg_forme_sortie(MG_CG_FORME *mgcg_forme)
Definition: mg_cg_operateur.cpp:195
MG_CG_OPERATEUR::MG_CG_OPERATEUR
MG_CG_OPERATEUR(MG_CG_MODELE *mgcg_modele, int semantique)
Definition: mg_cg_operateur.cpp:27
MG_CG_OPERATEUR::get_semantique
virtual int get_semantique(void)
Definition: mg_cg_operateur.cpp:84
MG_CG_OPERATEUR::retirer_tout_mgcg_forme_entree
virtual void retirer_tout_mgcg_forme_entree(void)
Definition: mg_cg_operateur.cpp:149
MG_CG_OPERATEUR::get_mgcg_forme_sortieid
virtual MG_CG_FORME * get_mgcg_forme_sortieid(long id)
Definition: mg_cg_operateur.cpp:240
MG_CG_OPERATEUR::get_type_mg_construction_geometrique
virtual int get_type_mg_construction_geometrique(void)
Definition: mg_cg_operateur.cpp:250
mg_definition.h
MG_CG_OPERATEUR::change_mgcg_modele
virtual void change_mgcg_modele(MG_CG_MODELE *mgcg_modele)
Definition: mg_cg_operateur.cpp:64
MG_CG_FORME::ajouter_mgcg_operateur_dependant
virtual int ajouter_mgcg_operateur_dependant(MG_CG_OPERATEUR *mgcg_operateur)
Definition: mg_cg_forme.cpp:101
MG_CG_OPERATEUR::get_suivante_mgcg_forme_entree
virtual MG_CG_FORME * get_suivante_mgcg_forme_entree(std::map< long, MG_CG_FORME * >::iterator &it)
Definition: mg_cg_operateur.cpp:164
MG_CG_OPERATEUR::m_map_mgcg_forme_entree
std::map< long, MG_CG_FORME * > m_map_mgcg_forme_entree
Definition: mg_cg_operateur.h:84
MG_CG_OPERATEUR::retirer_tout_mgcg_forme_sortie
virtual void retirer_tout_mgcg_forme_sortie(void)
Definition: mg_cg_operateur.cpp:219
MG_CG_OPERATEUR::retirer_mgcg_forme_entree
virtual int retirer_mgcg_forme_entree(MG_CG_FORME *mgcg_forme)
Definition: mg_cg_operateur.cpp:122