MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mg_assemblage.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_assemblage.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:54 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #ifdef CSG_OCC
23 
24 #include "gestionversion.h"
25 #include "mg_definition.h"
26 #include "mg_assemblage.h"
27 #include "mg_primitive.h"
28 #include "mg_arbre.h"
29 
30 MG_ASSEMBLAGE::MG_ASSEMBLAGE(std::string nm): MG_CONSTRUCTION_GEOMETRIQUE(), nom(nm)
31 {
32 
33 }
34 
35 MG_ASSEMBLAGE::MG_ASSEMBLAGE(long unsigned int num,std::string nm): MG_CONSTRUCTION_GEOMETRIQUE(num), nom(nm)
36 {
37 
38 }
39 
40 MG_ASSEMBLAGE::MG_ASSEMBLAGE(MG_ASSEMBLAGE& mdd): MG_CONSTRUCTION_GEOMETRIQUE(mdd), nom(mdd.nom)
41 {
42 
43 }
44 
45 MG_ASSEMBLAGE::~MG_ASSEMBLAGE()
46 {
47 supprimer_tout_mg_primitive();
48 }
49 
50 int MG_ASSEMBLAGE::ajouter_mg_primitive(MG_PRIMITIVE* mgprim)
51 {
52  std::pair<const unsigned long,MG_PRIMITIVE*> tmp(mgprim->get_id(),mgprim);
53  std::pair<LISTE_MG_PRIMITIVE::iterator,bool> p = lst_mg_primitive.insert(tmp);
54  if(!p.second)
55  {
56  return FAIL;
57  }
58  return OK;
59 }
60 int MG_ASSEMBLAGE::ajouter_mg_primitive(unsigned long id)
61 {
62  lst_mg_primitive_id.push_back(id);
63  return 0;
64 }
65 void MG_ASSEMBLAGE::ini_donne(MG_ARBRE* arb)
66 {
67 int nb=lst_mg_primitive_id.size();
68 for (int i=0;i<nb;i++)
69  {
70  MG_PRIMITIVE* prim=arb->get_mg_primitiveid(lst_mg_primitive_id[i]);
71  ajouter_mg_primitive(prim);
72  }
73 }
74 MG_PRIMITIVE* MG_ASSEMBLAGE::get_mg_primitiveid(long unsigned int num)
75 {
76  LISTE_MG_PRIMITIVE::iterator i=lst_mg_primitive.find(num);
77  if (i==lst_mg_primitive.end())
78  {
79  return NULL;
80  }
81  return ((*i).second);
82 }
83 
84 MG_PRIMITIVE* MG_ASSEMBLAGE::get_mg_primitive(unsigned int num)
85 {
86  if (!(num<lst_mg_primitive.size()))
87  {
88  return NULL;
89  }
90  LISTE_MG_PRIMITIVE::iterator i=lst_mg_primitive.begin();
91  for (unsigned long j=0;j<num;j++) i++;
92  return ((*i).second);
93 }
94 
95 MG_PRIMITIVE* MG_ASSEMBLAGE::get_premier_primitive(LISTE_MG_PRIMITIVE::iterator & it)
96 {
97  it = lst_mg_primitive.begin();
98  if (it == lst_mg_primitive.end())
99  return NULL;
100  return it->second;
101 }
102 
103 MG_PRIMITIVE* MG_ASSEMBLAGE::get_suivant_primitive(LISTE_MG_PRIMITIVE::iterator & it)
104 {
105  it++;
106  if (it == lst_mg_primitive.end())
107  return NULL;
108  return it->second;
109 }
110 
111 unsigned int MG_ASSEMBLAGE::get_nb_mg_primitive(void)
112 {
113  return lst_mg_primitive.size();
114 }
115 
116 int MG_ASSEMBLAGE::supprimer_mg_primitiveid(long unsigned int num)
117 {
118  MG_PRIMITIVE* mgprim=get_mg_primitiveid(num);
119  if (mgprim==NULL)
120  {
121  return FAIL;
122  }
123  LISTE_MG_PRIMITIVE::iterator j=lst_mg_primitive.find(num);
124  lst_mg_primitive.erase(j);
125  delete mgprim;
126  return OK;
127 }
128 
129 int MG_ASSEMBLAGE::supprimer_mg_primitive(unsigned int num)
130 {
131  MG_PRIMITIVE* mgprim=get_mg_primitive(num);
132  if (mgprim==NULL)
133  {
134  return FAIL;
135  }
136  LISTE_MG_PRIMITIVE::iterator j=lst_mg_primitive.begin();
137  for (unsigned int k=0;k<num;k++) j++;
138  lst_mg_primitive.erase(j);
139  delete mgprim;
140  return OK;
141 }
142 
143 void MG_ASSEMBLAGE::supprimer_tout_mg_primitive(void)
144 {
145  while (get_nb_mg_primitive()!=0)
146  {
147  LISTE_MG_PRIMITIVE::iterator j=lst_mg_primitive.begin();
148  MG_PRIMITIVE* mgprim=(*j).second;
149  lst_mg_primitive.erase(j);
150  delete mgprim;
151  }
152 }
153 
154 void MG_ASSEMBLAGE::enregistrer(std::ostream& o,double version)
155 {
156  o << "%" << get_id()
157  << "=ASSEMBLAGE("
158  << nom.c_str()
159  <<"," << get_nb_mg_primitive()
160  << ",(";
161  for( long i=0;i<get_nb_mg_primitive();i++)
162  {
163  o << "$" << get_mg_primitive(i)->get_id();
164  if(i!=get_nb_mg_primitive()-1) o << ",";
165  else o << ")";
166  }
167  o << ");"<< std::endl;
168 }
169 
170 int MG_ASSEMBLAGE::get_type_mg_construction_geometrique(void)
171 {
172  return TYPE_MG_CONSTRUCTION_GEOMETRIQUE::ASSEMBLAGE;
173 }
174 
175 
176 
177 
178 
179 
180 
181 
182 #endif
183 
const int OK
Definition: mg_definition.h:38
const int FAIL
Definition: mg_definition.h:39