ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/geometrie/src/mg_geometrie.h
Revision: 906
Committed: Mon Nov 13 22:30:18 2017 UTC (7 years, 9 months ago) by couturad
Content type: text/plain
File size: 16442 byte(s)
Log Message:
Nouveau opencascade commit 1

File Contents

# Content
1 //------------------------------------------------------------
2 //------------------------------------------------------------
3 // MAGiC
4 // Jean Christophe Cuilli�re et Vincent FRANCOIS
5 // D�partement de G�nie M�canique - UQTR
6 //------------------------------------------------------------
7 // Le projet MAGIC est un projet de recherche du d�partement
8 // de g�nie m�canique de l'Universit� du Qu�bec �
9 // Trois Rivi�res
10 // Les librairies ne peuvent �tre utilis�es sans l'accord
11 // des auteurs (contact : francois@uqtr.ca)
12 //------------------------------------------------------------
13 //------------------------------------------------------------
14 //
15 // mg_geometrie.h
16 //
17 //------------------------------------------------------------
18 //------------------------------------------------------------
19 // COPYRIGHT 2000
20 // Version du 02/03/2006 � 11H22
21 //------------------------------------------------------------
22 //------------------------------------------------------------
23 #ifndef __MGGEOMETRIE_
24 #define __MGGEOMETRIE_
25
26 #ifdef WINDOWS_VERSION
27 #ifdef BUILT_DLL_GEOMETRIE
28 #define DLLPORTGEOMETRIE __declspec(dllexport)
29 #else
30 #define DLLPORTGEOMETRIE __declspec(dllimport)
31 #endif
32 #else
33 #define DLLPORTGEOMETRIE
34 #endif
35
36 #include "gestionversion.h"
37 #ifdef BORLANDCPP
38 #include <map.h>
39 #include <set.h>
40 #else
41 #include <map>
42 #include <set>
43 #endif
44
45
46 #include "mg_identificateur.h"
47 #include "mg_point.h"
48 #include "mg_courbe.h"
49 #include "mg_surface.h"
50 #include "mg_sommet.h"
51 #include "mg_cosommet.h"
52 #include "mg_arete.h"
53 #include "mg_coarete.h"
54 #include "mg_boucle.h"
55 #include "mg_coface.h"
56 #include "mg_face.h"
57 #include "mg_coquille.h"
58 #include "mg_volume.h"
59 #include "mg_poutre.h"
60 #include "mg_coque.h"
61 #include "mg_visu_courbe.h"
62 #include "mg_groupe_topologique.h"
63 #include "mg_geom_fonction.h"
64
65 #ifdef BREP_SAT
66 #include "sat_gestionnaire.h"
67 #endif
68 #ifdef BREP_STEP
69 #include "st_gestionnaire.h"
70 #endif
71
72 #include "mg_definition.h"
73
74
75 typedef std::set<MG_IDENTIFICATEUR*,inf<MG_IDENTIFICATEUR*> > LISTE_ENTITE;
76 typedef std::map<unsigned long,MG_POINT*,std::less<unsigned long> > LISTE_MG_POINT;
77 typedef std::map<unsigned long,MG_COURBE*,std::less<unsigned long> > LISTE_MG_COURBE;
78 typedef std::map<unsigned long,MG_SURFACE*,std::less<unsigned long> > LISTE_MG_SURFACE;
79 typedef std::map<unsigned long,MG_SOMMET*,std::less<unsigned long> > LISTE_MG_SOMMET;
80 typedef std::map<unsigned long,MG_COSOMMET*,std::less<unsigned long> > LISTE_MG_COSOMMET;
81 typedef std::map<unsigned long,MG_ARETE*,std::less<unsigned long> > LISTE_MG_ARETE;
82 typedef std::map<unsigned long,MG_COARETE*,std::less<unsigned long> > LISTE_MG_COARETE;
83 typedef std::map<unsigned long,MG_BOUCLE*,std::less<unsigned long> > LISTE_MG_BOUCLE;
84 typedef std::map<unsigned long,MG_FACE*,std::less<unsigned long> > LISTE_MG_FACE;
85 typedef std::map<unsigned long,MG_COFACE*,std::less<unsigned long> > LISTE_MG_COFACE;
86 typedef std::map<unsigned long,MG_COQUILLE*,std::less<unsigned long> > LISTE_MG_COQUILLE;
87 typedef std::map<unsigned long,MG_VOLUME*,std::less<unsigned long> > LISTE_MG_VOLUME;
88 typedef std::map<unsigned long,MG_COQUE*,std::less<unsigned long> > LISTE_MG_COQUE;
89 typedef std::map<unsigned long,MG_POUTRE*,std::less<unsigned long> > LISTE_MG_POUTRE;
90 typedef std::map<unsigned long,MG_VISU_COURBE*,std::less<unsigned long> > LISTE_MG_VISU_COURBE;
91 typedef std::map<unsigned long,MG_GROUPE_TOPOLOGIQUE*,std::less<unsigned long> > LISTE_MG_GROUPE_TOPOLOGIQUE;
92 typedef std::map<unsigned long,MG_GEOM_FONCTION*,std::less<unsigned long> > LISTE_MG_GEOM_FONCTION;
93
94
95 DLLPORTGEOMETRIE std::ostream& operator << (std::ostream& o,class MG_GEOMETRIE& geo);
96
97 class DLLPORTGEOMETRIE MG_GEOMETRIE : public MG_IDENTIFICATEUR
98 {
99 public:
100 MG_GEOMETRIE(char *type,const char *nom=NULL,double unite=1.0,double eps=1e-6);
101 MG_GEOMETRIE(char *type,unsigned long num,const char *nom=NULL,double unite=1.0,double eps=1e-6);
102 virtual ~MG_GEOMETRIE();
103
104
105 virtual int ajouter_mg_point(MG_POINT *mgpt);
106 MG_POINT* get_mg_pointid(unsigned long num);
107 MG_POINT* get_mg_point(unsigned int num);
108 MG_POINT* get_premier_point(LISTE_MG_POINT::iterator & it);
109 MG_POINT* get_suivant_point(LISTE_MG_POINT::iterator & it);
110 unsigned int get_nb_mg_point(void);
111 virtual int supprimer_mg_pointid(unsigned long num);
112 virtual int supprimer_mg_point(unsigned int num);
113 virtual void supprimer_tout_mg_point(void);
114
115 virtual int ajouter_mg_courbe(MG_COURBE *mgcrb);
116 MG_COURBE* get_mg_courbeid(unsigned long num);
117 MG_COURBE* get_mg_courbe(unsigned int num);
118 MG_COURBE* get_premier_courbe(LISTE_MG_COURBE::iterator & it) ;
119 MG_COURBE* get_suivant_courbe(LISTE_MG_COURBE::iterator & it) ;
120 unsigned int get_nb_mg_courbe(void);
121 virtual int supprimer_mg_courbeid(unsigned long num);
122 virtual int supprimer_mg_courbe(unsigned int num);
123 virtual void supprimer_tout_mg_courbe(void);
124
125 virtual int ajouter_mg_surface(MG_SURFACE *mgsrf);
126 MG_SURFACE* get_mg_surfaceid(unsigned long num);
127 MG_SURFACE* get_mg_surface(unsigned int num);
128 MG_SURFACE* get_premier_surface(LISTE_MG_SURFACE::iterator & it);
129 MG_SURFACE* get_suivant_surface(LISTE_MG_SURFACE::iterator & it);
130 unsigned int get_nb_mg_surface(void);
131 virtual int supprimer_mg_surfaceid(unsigned long num);
132 virtual int supprimer_mg_surface(unsigned int num);
133 virtual void supprimer_tout_mg_surface(void);
134
135 virtual int ajouter_mg_sommet(MG_SOMMET *mgsom);
136 virtual class MG_SOMMET_NOEUD* ajouter_mg_sommet_noeud(MG_NOEUD *noeud);
137 MG_SOMMET* get_mg_sommetid(unsigned long num);
138 MG_SOMMET* get_mg_sommetid(std::string id);
139 MG_SOMMET* get_mg_sommet(unsigned int num);
140 MG_SOMMET* get_premier_sommet(LISTE_MG_SOMMET::iterator & it) ;
141 MG_SOMMET* get_suivant_sommet(LISTE_MG_SOMMET::iterator & it) ;
142 unsigned int get_nb_mg_sommet(void);
143 virtual int supprimer_mg_sommetid(unsigned long num);
144 virtual int supprimer_mg_sommet(unsigned int num);
145 virtual void supprimer_tout_mg_sommet(void);
146
147 virtual int ajouter_mg_arete(MG_ARETE *mgarete);
148 MG_ARETE* get_mg_areteid(unsigned long num);
149 MG_ARETE* get_mg_areteid(std::string id);
150 MG_ARETE* get_mg_arete(unsigned int num);
151 MG_ARETE* get_premier_arete(LISTE_MG_ARETE::iterator & it);
152 MG_ARETE* get_suivant_arete(LISTE_MG_ARETE::iterator & it);
153 unsigned int get_nb_mg_arete(void);
154 virtual int supprimer_mg_areteid(unsigned long num);
155 virtual int supprimer_mg_arete(unsigned int num);
156 virtual void supprimer_tout_mg_arete(void);
157
158 virtual int ajouter_mg_boucle(MG_BOUCLE *mgboucle);
159 virtual int ajouter_mg_boucle(MG_BOUCLE *mgboucle,MG_FACE* mgface);
160 virtual int ajouter_mg_boucle(MG_BOUCLE *mgboucle,MG_POUTRE* mgpoutre);
161 MG_BOUCLE* get_mg_boucleid(unsigned long num);
162 MG_BOUCLE* get_mg_boucle(unsigned int num);
163 MG_BOUCLE* get_premier_boucle(LISTE_MG_BOUCLE::iterator & it);
164 MG_BOUCLE* get_suivant_boucle(LISTE_MG_BOUCLE::iterator & it);
165 unsigned int get_nb_mg_boucle(void);
166 virtual int supprimer_mg_boucleid(unsigned long num);
167 virtual int supprimer_mg_boucle(unsigned int num);
168 virtual void supprimer_tout_mg_boucle(void);
169
170 virtual int ajouter_mg_face(MG_FACE *mgface);
171 MG_FACE* get_mg_faceid(unsigned long num);
172 MG_FACE* get_mg_faceid(std::string num);
173 MG_FACE* get_mg_face(unsigned int num);
174 MG_FACE* get_premier_face(LISTE_MG_FACE::iterator & it);
175 MG_FACE* get_suivant_face(LISTE_MG_FACE::iterator & it);
176 unsigned int get_nb_mg_face(void);
177 virtual int supprimer_mg_faceid(unsigned long num);
178 virtual int supprimer_mg_face(unsigned int num);
179 virtual void supprimer_tout_mg_face(void);
180
181 virtual int ajouter_mg_coquille(MG_COQUILLE *mgcoq);
182 virtual int ajouter_mg_coquille(MG_COQUILLE *mgcoq,MG_VOLUME *mgvol);
183 virtual int ajouter_mg_coquille(MG_COQUILLE *mgcoq,MG_COQUE *mgcoque);
184 MG_COQUILLE* get_mg_coquilleid(unsigned long num);
185 MG_COQUILLE* get_mg_coquille(unsigned int num);
186 MG_COQUILLE* get_premier_coquille(LISTE_MG_COQUILLE::iterator & it);
187 MG_COQUILLE* get_suivant_coquille(LISTE_MG_COQUILLE::iterator & it) ;
188 unsigned int get_nb_mg_coquille(void);
189 virtual int supprimer_mg_coquilleid(unsigned long num);
190 virtual int supprimer_mg_coquille(unsigned int num);
191 virtual void supprimer_tout_mg_coquille(void);
192
193 virtual int ajouter_mg_volume(MG_VOLUME *mgvol);
194 MG_VOLUME* get_mg_volumeid(unsigned long num);
195 MG_VOLUME* get_mg_volumeid(std::string id);
196 MG_VOLUME* get_mg_volume(unsigned int num);
197 MG_VOLUME* get_premier_volume(LISTE_MG_VOLUME::iterator & it) ;
198 MG_VOLUME* get_suivant_volume(LISTE_MG_VOLUME::iterator & it) ;
199 unsigned int get_nb_mg_volume(void);
200 virtual int supprimer_mg_volumeid(unsigned long num);
201 virtual int supprimer_mg_volume(unsigned int num);
202 virtual void supprimer_tout_mg_volume(void);
203
204 virtual int ajouter_mg_coque(MG_COQUE *mgcoque);
205 MG_COQUE* get_mg_coqueid(unsigned long num);
206 MG_COQUE* get_mg_coqueid(std::string id);
207 MG_COQUE* get_mg_coque(unsigned int num);
208 MG_COQUE* get_premier_coque(LISTE_MG_COQUE::iterator & it);
209 MG_COQUE* get_suivant_coque(LISTE_MG_COQUE::iterator & it) ;
210 unsigned int get_nb_mg_coque(void);
211 virtual int supprimer_mg_coqueid(unsigned long num);
212 virtual int supprimer_mg_coque(unsigned int num);
213 virtual void supprimer_tout_mg_coque(void);
214
215 virtual int ajouter_mg_poutre(MG_POUTRE *mgpoutre);
216 MG_POUTRE* get_mg_poutreid(unsigned long num);
217 MG_POUTRE* get_mg_poutreid(std::string id);
218 MG_POUTRE* get_mg_poutre(unsigned int num);
219 MG_POUTRE* get_premier_poutre(LISTE_MG_POUTRE::iterator & it) ;
220 MG_POUTRE* get_suivant_poutre(LISTE_MG_POUTRE::iterator & it) ;
221 unsigned int get_nb_mg_poutre(void);
222 virtual int supprimer_mg_poutreid(unsigned long num);
223 virtual int supprimer_mg_poutre(unsigned int num);
224 virtual void supprimer_tout_mg_poutre(void);
225
226 virtual int ajouter_mg_groupe_topologique(MG_GROUPE_TOPOLOGIQUE *mggroupe_topologique);
227 MG_GROUPE_TOPOLOGIQUE* get_mg_groupe_topologiqueid(unsigned long num);
228 MG_GROUPE_TOPOLOGIQUE* get_mg_groupe_topologique(unsigned int num);
229 MG_GROUPE_TOPOLOGIQUE* get_premier_groupe_topologique(LISTE_MG_GROUPE_TOPOLOGIQUE::iterator & it) ;
230 MG_GROUPE_TOPOLOGIQUE* get_suivant_groupe_topologique(LISTE_MG_GROUPE_TOPOLOGIQUE::iterator & it) ;
231 unsigned int get_nb_mg_groupe_topologique(void);
232 virtual int supprimer_mg_groupe_topologiqueid(unsigned long num);
233 virtual int supprimer_mg_groupe_topologique(unsigned int num);
234 virtual void supprimer_tout_mg_groupe_topologique(void);
235
236 virtual int ajouter_mg_geom_fonction(MG_GEOM_FONCTION *mggeofon);
237 MG_GEOM_FONCTION* get_mg_geom_fonctionid(unsigned long num);
238 MG_GEOM_FONCTION* get_mg_geom_fonction(unsigned int num);
239 MG_GEOM_FONCTION* get_premier_geom_fonction(LISTE_MG_GEOM_FONCTION::iterator & it) ;
240 MG_GEOM_FONCTION* get_suivant_geom_fonction(LISTE_MG_GEOM_FONCTION::iterator & it) ;
241 unsigned int get_nb_mg_geom_fonction(void);
242 virtual int supprimer_mg_geom_fonctionid(unsigned long num);
243 virtual int supprimer_mg_geom_fonction(unsigned int num);
244 virtual void supprimer_tout_mg_geom_fonction(void);
245
246
247 virtual int ajouter_mg_cosommet(MG_COSOMMET* mgcosom);
248 virtual MG_COSOMMET* ajouter_mg_cosommet(MG_ARETE *mgarete,MG_SOMMET *mgsom);
249 virtual MG_COSOMMET* ajouter_mg_cosommet(unsigned long num,MG_ARETE *mgarete,MG_SOMMET *mgsom);
250 virtual int supprimer_mg_cosommet(MG_COSOMMET* mgcosom);
251 virtual int supprimer_mg_cosommetid(long num);
252 unsigned int get_nb_cosommet(void);
253 MG_COSOMMET* get_premier_cosommet(LISTE_MG_COSOMMET::iterator &it);
254 MG_COSOMMET* get_suivant_cosommet(LISTE_MG_COSOMMET::iterator &it);
255 MG_COSOMMET* get_mg_cosommetid(long num);
256
257 virtual int ajouter_mg_coarete(MG_COARETE* mgcoarete);
258 virtual MG_COARETE* ajouter_mg_coarete(MG_ARETE *mgarete,MG_BOUCLE *mgboucle,int sens);
259 virtual MG_COARETE* ajouter_mg_coarete(unsigned long num,MG_ARETE *mgarete,MG_BOUCLE *mgboucle,int sens);
260 virtual int supprimer_mg_coarete(MG_COARETE* mgcoarete);
261 virtual int supprimer_mg_coareteid(long num);
262 unsigned int get_nb_coarete(void);
263 MG_COARETE* get_premier_coarete(LISTE_MG_COARETE::iterator &it);
264 MG_COARETE* get_suivant_coarete(LISTE_MG_COARETE::iterator &it);
265 MG_COARETE* get_mg_coareteid(long num);
266
267 virtual int ajouter_mg_coface(MG_COFACE* mgcoface);
268 virtual MG_COFACE* ajouter_mg_coface(MG_FACE *mgface,MG_COQUILLE *mgcoq,int sens);
269 virtual MG_COFACE* ajouter_mg_coface(unsigned long num,MG_FACE *mgface,MG_COQUILLE *mgcoq,int sens);
270 virtual int supprimer_mg_coface(MG_COFACE* mgcoface);
271 virtual int supprimer_mg_cofaceid(long num);
272 unsigned int get_nb_coface(void);
273 MG_COFACE* get_premier_coface(LISTE_MG_COFACE::iterator &it);
274 MG_COFACE* get_suivant_coface(LISTE_MG_COFACE::iterator &it);
275 MG_COFACE* get_mg_cofaceid(long num);
276
277 virtual int ajouter_mg_visu_courbe(MG_VISU_COURBE *mgvcrb);
278 MG_VISU_COURBE* get_mg_visu_courbeid(unsigned long num);
279 MG_VISU_COURBE* get_mg_visu_courbe(unsigned int num);
280 unsigned int get_nb_mg_visu_courbe(void);
281 MG_VISU_COURBE* get_premier_visu_courbe(LISTE_MG_VISU_COURBE::iterator &it);
282 MG_VISU_COURBE* get_suivant_visu_courbe(LISTE_MG_VISU_COURBE::iterator &it);
283 virtual int supprimer_mg_visu_courbeid(unsigned long num);
284 virtual int supprimer_mg_visu_courbe(unsigned int num);
285 virtual void supprimer_tout_mg_visu_courbe(void);
286
287 virtual int ajouter_mg_element_topologique(MG_ELEMENT_TOPOLOGIQUE* mg_element_topologique);
288 virtual int ajouter_mg_element_cotopologique(MG_ELEMENT_COTOPOLOGIQUE* mg_element_cotopologique);
289 virtual int ajouter_mg_element_geometrique(MG_ELEMENT_GEOMETRIQUE* mg_element_geometrique);
290 virtual int supprimer_mg_element_topologique(MG_ELEMENT_TOPOLOGIQUE* mg_element_topologique);
291 virtual int supprimer_mg_element_cotopologique(MG_ELEMENT_COTOPOLOGIQUE* mg_element_cotopologique);
292 virtual int supprimer_mg_element_geometrique(MG_ELEMENT_GEOMETRIQUE* mg_element_geometrique);
293
294 virtual MG_ELEMENT_TOPOLOGIQUE* get_mg_element_topologiqueid(long num);
295 virtual MG_ELEMENT_COTOPOLOGIQUE* get_mg_element_cotopologiqueid(long num);
296
297 virtual void remplir_mg_groupe_topologique(MG_GROUPE_TOPOLOGIQUE* mg_groupe_topologique);
298
299 void change_gest_materiau(char* nom);
300 char* get_gest_materiau(void);
301
302 virtual void enregistrer(std::ostream& o,double version);
303 friend std::ostream& operator << (std::ostream& o,MG_GEOMETRIE& geo);
304
305 char* get_nom_du_fichier(void);
306 char* get_type_geometrie(void);
307 bool est_virtuelle(void);
308 void cree_entite_visuel(double facteur=1.);
309
310 void change_gestionnaire(class MG_GESTIONNAIRE* mggest);
311 double get_valeur_unite(void);
312 void change_valeur_unite(double val);
313 double get_valeur_precision(void);
314 void change_valeur_precision(double val);
315
316 void construit_vectorisation(void);
317 #ifdef BREP_SAT
318 class SAT_GESTIONNAIRE& get_gest_sat(void);
319 #endif
320 #ifdef BREP_STEP
321 class ST_GESTIONNAIRE& get_gest_step(void);
322 #endif
323 #ifdef BREP_OCC
324 class OCC_FONCTION& get_occ_fonction(void);
325 #endif
326
327 protected:
328 void ini(char *type,char *nom);
329 char *nom_du_fichier;
330 char type_geo[8];
331
332 double precision;
333
334 std::string gest_materiau;
335
336 LISTE_ENTITE lst_entite;
337 LISTE_MG_POINT lst_mg_point;
338 LISTE_MG_COURBE lst_mg_courbe;
339 LISTE_MG_SURFACE lst_mg_surface;
340 LISTE_MG_SOMMET lst_mg_sommet;
341 LISTE_MG_COSOMMET lst_mg_cosommet;
342 LISTE_MG_ARETE lst_mg_arete;
343 LISTE_MG_COARETE lst_mg_coarete;
344 LISTE_MG_BOUCLE lst_mg_boucle;
345 LISTE_MG_FACE lst_mg_face;
346 LISTE_MG_COFACE lst_mg_coface;
347 LISTE_MG_COQUILLE lst_mg_coquille;
348 LISTE_MG_VOLUME lst_mg_volume;
349 LISTE_MG_COQUE lst_mg_coque;
350 LISTE_MG_POUTRE lst_mg_poutre;
351 LISTE_MG_GROUPE_TOPOLOGIQUE lst_mg_groupe_topologique;
352 LISTE_MG_GEOM_FONCTION lst_mg_geom_fonction;
353 LISTE_MG_VISU_COURBE lst_mg_visu_courbe;
354 MG_GESTIONNAIRE *gest;
355 double valeur_unite;
356
357 #ifdef BREP_SAT
358 SAT_GESTIONNAIRE fichsat;
359 #endif
360 #ifdef BREP_STEP
361 ST_GESTIONNAIRE fichstep;
362 #endif
363 #ifdef BREP_OCC
364 OCC_FONCTION* fonction1;
365 #endif
366
367 };
368
369
370
371 #endif
372
373
374
375