ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/mtu/src/mg_geometrie.h
Revision: 1158
Committed: Thu Jun 13 22:18:49 2024 UTC (11 months, 4 weeks ago) by francois
Content type: text/plain
File size: 16486 byte(s)
Log Message:
compatibilité Ubuntu 22.04
Suppression des refeences à Windows
Ajout d'une banière

File Contents

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