ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/geometrie/src/mg_geometrie.h
Revision: 919
Committed: Tue Mar 6 17:51:54 2018 UTC (7 years, 2 months ago) by couturad
Content type: text/plain
File size: 16640 byte(s)
Log Message:
Correction des bugs lors de l'execution en mode RELWITHDEBINFO.
Ajouts de fichiers pour la librairie MICROSTRUCTURE

File Contents

# User Rev Content
1 francois 283 //------------------------------------------------------------
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 couturad 740 #include "gestionversion.h"
37 francois 283 #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 francois 711 #include "mg_geom_fonction.h"
64 francois 283
65 couturad 740 #ifdef BREP_SAT
66     #include "sat_gestionnaire.h"
67     #endif
68     #ifdef BREP_STEP
69     #include "st_gestionnaire.h"
70     #endif
71    
72 francois 375 #include "mg_definition.h"
73 francois 283
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 francois 711 typedef std::map<unsigned long,MG_GEOM_FONCTION*,std::less<unsigned long> > LISTE_MG_GEOM_FONCTION;
93 francois 283
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 couturad 906 virtual ~MG_GEOMETRIE();
103    
104 francois 283
105 couturad 906 virtual int ajouter_mg_point(MG_POINT *mgpt);
106 francois 283 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 couturad 906 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 francois 283
115 couturad 906 virtual int ajouter_mg_courbe(MG_COURBE *mgcrb);
116 francois 283 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 couturad 906 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 francois 283
125 couturad 906 virtual int ajouter_mg_surface(MG_SURFACE *mgsrf);
126 francois 283 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 couturad 906 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 francois 283
135 couturad 906 virtual int ajouter_mg_sommet(MG_SOMMET *mgsom);
136     virtual class MG_SOMMET_NOEUD* ajouter_mg_sommet_noeud(MG_NOEUD *noeud);
137 francois 283 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 couturad 906 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 francois 283
147 couturad 906 virtual int ajouter_mg_arete(MG_ARETE *mgarete);
148 francois 283 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 couturad 906 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 francois 283
158 couturad 906 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 francois 283 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 couturad 906 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 francois 283
170 couturad 906 virtual int ajouter_mg_face(MG_FACE *mgface);
171 francois 283 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 couturad 906 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 francois 283
181 couturad 906 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 francois 283 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 couturad 906 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 francois 283
193 couturad 906 virtual int ajouter_mg_volume(MG_VOLUME *mgvol);
194 francois 283 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 couturad 906 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 francois 283
204 couturad 906 virtual int ajouter_mg_coque(MG_COQUE *mgcoque);
205 francois 283 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 couturad 906 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 francois 283 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 couturad 906 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 francois 283
226 couturad 906 virtual int ajouter_mg_groupe_topologique(MG_GROUPE_TOPOLOGIQUE *mggroupe_topologique);
227 francois 283 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 couturad 906 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 francois 711
236 couturad 906 virtual int ajouter_mg_geom_fonction(MG_GEOM_FONCTION *mggeofon);
237 francois 711 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 couturad 906 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 francois 283
257 couturad 906 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 francois 283
267 couturad 906 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 francois 711
277 couturad 906 virtual int ajouter_mg_visu_courbe(MG_VISU_COURBE *mgvcrb);
278 francois 283 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 couturad 906 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 francois 283
299     void change_gest_materiau(char* nom);
300     char* get_gest_materiau(void);
301    
302 francois 763 virtual void enregistrer(std::ostream& o,double version);
303 francois 283 friend std::ostream& operator << (std::ostream& o,MG_GEOMETRIE& geo);
304 francois 910 virtual void get_fichier_dependant(std::vector<std::string> &liste_fichier);
305 francois 283
306 francois 910
307 francois 283 char* get_nom_du_fichier(void);
308     char* get_type_geometrie(void);
309 francois 775 bool est_virtuelle(void);
310 francois 283 void cree_entite_visuel(double facteur=1.);
311    
312     void change_gestionnaire(class MG_GESTIONNAIRE* mggest);
313     double get_valeur_unite(void);
314     void change_valeur_unite(double val);
315     double get_valeur_precision(void);
316     void change_valeur_precision(double val);
317    
318 couturad 906 void construit_vectorisation(void);
319 couturad 740 #ifdef BREP_SAT
320     class SAT_GESTIONNAIRE& get_gest_sat(void);
321     #endif
322     #ifdef BREP_STEP
323     class ST_GESTIONNAIRE& get_gest_step(void);
324     #endif
325     #ifdef BREP_OCC
326     class OCC_FONCTION& get_occ_fonction(void);
327     #endif
328    
329 couturad 919 bool est_construction(void);
330     void change_est_construction(bool val);
331    
332 couturad 906 protected:
333 couturad 740 void ini(char *type,char *nom);
334 francois 283 char *nom_du_fichier;
335 couturad 919 char type_geo[16];
336 francois 283
337     double precision;
338    
339     std::string gest_materiau;
340    
341     LISTE_ENTITE lst_entite;
342     LISTE_MG_POINT lst_mg_point;
343     LISTE_MG_COURBE lst_mg_courbe;
344     LISTE_MG_SURFACE lst_mg_surface;
345     LISTE_MG_SOMMET lst_mg_sommet;
346     LISTE_MG_COSOMMET lst_mg_cosommet;
347     LISTE_MG_ARETE lst_mg_arete;
348     LISTE_MG_COARETE lst_mg_coarete;
349     LISTE_MG_BOUCLE lst_mg_boucle;
350     LISTE_MG_FACE lst_mg_face;
351     LISTE_MG_COFACE lst_mg_coface;
352     LISTE_MG_COQUILLE lst_mg_coquille;
353     LISTE_MG_VOLUME lst_mg_volume;
354     LISTE_MG_COQUE lst_mg_coque;
355     LISTE_MG_POUTRE lst_mg_poutre;
356     LISTE_MG_GROUPE_TOPOLOGIQUE lst_mg_groupe_topologique;
357 francois 711 LISTE_MG_GEOM_FONCTION lst_mg_geom_fonction;
358 francois 283 LISTE_MG_VISU_COURBE lst_mg_visu_courbe;
359     MG_GESTIONNAIRE *gest;
360 couturad 906 double valeur_unite;
361 couturad 740
362     #ifdef BREP_SAT
363     SAT_GESTIONNAIRE fichsat;
364     #endif
365     #ifdef BREP_STEP
366     ST_GESTIONNAIRE fichstep;
367     #endif
368     #ifdef BREP_OCC
369     OCC_FONCTION* fonction1;
370     #endif
371 couturad 919 bool geometrie_construction;
372 couturad 740
373 francois 283 };
374    
375    
376    
377     #endif
378    
379    
380    
381