ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/geometrie/src/mg_geometrie.h
Revision: 763
Committed: Wed Dec 2 19:55:53 2015 UTC (9 years, 6 months ago) by francois
Content type: text/plain
File size: 13727 byte(s)
Log Message:
Le fichier MAGiC est maintenant versionné. LA version actuelle est 2.0. L'ancienne version est 1.0.
Tout est transparent pour l'utilisateur. Les vieilles versions sont lisibles mais les nouveaux enregistrements sont dans la version la plus récente.
Changement des conditions aux limites : ajout d'un parametre pour dire si la condition numerique est une valeur ou une formule ou un lien vers une autre entité magic.
Les parametres pour saisir sont maintenant -ccf -ccfi -ccff -ccft -ccfit -ccfft

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    
66 couturad 740 #ifdef BREP_SAT
67     #include "sat_gestionnaire.h"
68     #endif
69     #ifdef BREP_STEP
70     #include "st_gestionnaire.h"
71     #endif
72    
73 francois 375 #include "mg_definition.h"
74 francois 283
75    
76     typedef std::set<MG_IDENTIFICATEUR*,inf<MG_IDENTIFICATEUR*> > LISTE_ENTITE;
77     typedef std::map<unsigned long,MG_POINT*,std::less<unsigned long> > LISTE_MG_POINT;
78     typedef std::map<unsigned long,MG_COURBE*,std::less<unsigned long> > LISTE_MG_COURBE;
79     typedef std::map<unsigned long,MG_SURFACE*,std::less<unsigned long> > LISTE_MG_SURFACE;
80     typedef std::map<unsigned long,MG_SOMMET*,std::less<unsigned long> > LISTE_MG_SOMMET;
81     typedef std::map<unsigned long,MG_COSOMMET*,std::less<unsigned long> > LISTE_MG_COSOMMET;
82     typedef std::map<unsigned long,MG_ARETE*,std::less<unsigned long> > LISTE_MG_ARETE;
83     typedef std::map<unsigned long,MG_COARETE*,std::less<unsigned long> > LISTE_MG_COARETE;
84     typedef std::map<unsigned long,MG_BOUCLE*,std::less<unsigned long> > LISTE_MG_BOUCLE;
85     typedef std::map<unsigned long,MG_FACE*,std::less<unsigned long> > LISTE_MG_FACE;
86     typedef std::map<unsigned long,MG_COFACE*,std::less<unsigned long> > LISTE_MG_COFACE;
87     typedef std::map<unsigned long,MG_COQUILLE*,std::less<unsigned long> > LISTE_MG_COQUILLE;
88     typedef std::map<unsigned long,MG_VOLUME*,std::less<unsigned long> > LISTE_MG_VOLUME;
89     typedef std::map<unsigned long,MG_COQUE*,std::less<unsigned long> > LISTE_MG_COQUE;
90     typedef std::map<unsigned long,MG_POUTRE*,std::less<unsigned long> > LISTE_MG_POUTRE;
91     typedef std::map<unsigned long,MG_VISU_COURBE*,std::less<unsigned long> > LISTE_MG_VISU_COURBE;
92     typedef std::map<unsigned long,MG_GROUPE_TOPOLOGIQUE*,std::less<unsigned long> > LISTE_MG_GROUPE_TOPOLOGIQUE;
93 francois 711 typedef std::map<unsigned long,MG_GEOM_FONCTION*,std::less<unsigned long> > LISTE_MG_GEOM_FONCTION;
94 francois 283
95    
96    
97     DLLPORTGEOMETRIE std::ostream& operator << (std::ostream& o,class MG_GEOMETRIE& geo);
98    
99     class DLLPORTGEOMETRIE MG_GEOMETRIE : public MG_IDENTIFICATEUR
100     {
101     public:
102     MG_GEOMETRIE(char *type,const char *nom=NULL,double unite=1.0,double eps=1e-6);
103     MG_GEOMETRIE(char *type,unsigned long num,const char *nom=NULL,double unite=1.0,double eps=1e-6);
104     virtual ~MG_GEOMETRIE();
105    
106     int ajouter_mg_point(MG_POINT *mgpt);
107     MG_POINT* get_mg_pointid(unsigned long num);
108     MG_POINT* get_mg_point(unsigned int num);
109     MG_POINT* get_premier_point(LISTE_MG_POINT::iterator & it);
110     MG_POINT* get_suivant_point(LISTE_MG_POINT::iterator & it);
111     unsigned int get_nb_mg_point(void);
112     int supprimer_mg_pointid(unsigned long num);
113     int supprimer_mg_point(unsigned int num);
114     void supprimer_tout_mg_point(void);
115    
116     int ajouter_mg_courbe(MG_COURBE *mgcrb);
117     MG_COURBE* get_mg_courbeid(unsigned long num);
118     MG_COURBE* get_mg_courbe(unsigned int num);
119     MG_COURBE* get_premier_courbe(LISTE_MG_COURBE::iterator & it) ;
120     MG_COURBE* get_suivant_courbe(LISTE_MG_COURBE::iterator & it) ;
121     unsigned int get_nb_mg_courbe(void);
122     int supprimer_mg_courbeid(unsigned long num);
123     int supprimer_mg_courbe(unsigned int num);
124     void supprimer_tout_mg_courbe(void);
125    
126    
127     int ajouter_mg_surface(MG_SURFACE *mgsrf);
128     MG_SURFACE* get_mg_surfaceid(unsigned long num);
129     MG_SURFACE* get_mg_surface(unsigned int num);
130     MG_SURFACE* get_premier_surface(LISTE_MG_SURFACE::iterator & it);
131     MG_SURFACE* get_suivant_surface(LISTE_MG_SURFACE::iterator & it);
132     unsigned int get_nb_mg_surface(void);
133     int supprimer_mg_surfaceid(unsigned long num);
134     int supprimer_mg_surface(unsigned int num);
135     void supprimer_tout_mg_surface(void);
136    
137    
138     int ajouter_mg_sommet(MG_SOMMET *mgsom);
139 francois 526 class MG_SOMMET_NOEUD* ajouter_mg_sommet_noeud(MG_NOEUD *noeud);
140 francois 283 MG_SOMMET* get_mg_sommetid(unsigned long num);
141     MG_SOMMET* get_mg_sommetid(std::string id);
142     MG_SOMMET* get_mg_sommet(unsigned int num);
143     MG_SOMMET* get_premier_sommet(LISTE_MG_SOMMET::iterator & it) ;
144     MG_SOMMET* get_suivant_sommet(LISTE_MG_SOMMET::iterator & it) ;
145     unsigned int get_nb_mg_sommet(void);
146     int supprimer_mg_sommetid(unsigned long num);
147     int supprimer_mg_sommet(unsigned int num);
148     void supprimer_tout_mg_sommet(void);
149    
150     int ajouter_mg_arete(MG_ARETE *mgarete);
151     MG_ARETE* get_mg_areteid(unsigned long num);
152     MG_ARETE* get_mg_areteid(std::string id);
153     MG_ARETE* get_mg_arete(unsigned int num);
154     MG_ARETE* get_premier_arete(LISTE_MG_ARETE::iterator & it);
155     MG_ARETE* get_suivant_arete(LISTE_MG_ARETE::iterator & it);
156     unsigned int get_nb_mg_arete(void);
157     int supprimer_mg_areteid(unsigned long num);
158     int supprimer_mg_arete(unsigned int num);
159     void supprimer_tout_mg_arete(void);
160    
161     int ajouter_mg_boucle(MG_BOUCLE *mgboucle,MG_FACE* mgface);
162     int ajouter_mg_boucle(MG_BOUCLE *mgboucle,MG_POUTRE* mgpoutre);
163     MG_BOUCLE* get_mg_boucleid(unsigned long num);
164     MG_BOUCLE* get_mg_boucle(unsigned int num);
165     MG_BOUCLE* get_premier_boucle(LISTE_MG_BOUCLE::iterator & it);
166     MG_BOUCLE* get_suivant_boucle(LISTE_MG_BOUCLE::iterator & it);
167     unsigned int get_nb_mg_boucle(void);
168     int supprimer_mg_boucleid(unsigned long num);
169     int supprimer_mg_boucle(unsigned int num);
170     void supprimer_tout_mg_boucle(void);
171    
172    
173     int ajouter_mg_face(MG_FACE *mgface);
174     MG_FACE* get_mg_faceid(unsigned long num);
175     MG_FACE* get_mg_faceid(std::string num);
176     MG_FACE* get_mg_face(unsigned int num);
177     MG_FACE* get_premier_face(LISTE_MG_FACE::iterator & it);
178     MG_FACE* get_suivant_face(LISTE_MG_FACE::iterator & it);
179     unsigned int get_nb_mg_face(void);
180     int supprimer_mg_faceid(unsigned long num);
181     int supprimer_mg_face(unsigned int num);
182     void supprimer_tout_mg_face(void);
183    
184     int ajouter_mg_coquille(MG_COQUILLE *mgcoq,MG_VOLUME *mgvol);
185     int ajouter_mg_coquille(MG_COQUILLE *mgcoq,MG_COQUE *mgcoque);
186     MG_COQUILLE* get_mg_coquilleid(unsigned long num);
187     MG_COQUILLE* get_mg_coquille(unsigned int num);
188     MG_COQUILLE* get_premier_coquille(LISTE_MG_COQUILLE::iterator & it);
189     MG_COQUILLE* get_suivant_coquille(LISTE_MG_COQUILLE::iterator & it) ;
190     unsigned int get_nb_mg_coquille(void);
191     int supprimer_mg_coquilleid(unsigned long num);
192     int supprimer_mg_coquille(unsigned int num);
193     void supprimer_tout_mg_coquille(void);
194    
195     int ajouter_mg_volume(MG_VOLUME *mgvol);
196     MG_VOLUME* get_mg_volumeid(unsigned long num);
197     MG_VOLUME* get_mg_volumeid(std::string id);
198     MG_VOLUME* get_mg_volume(unsigned int num);
199     MG_VOLUME* get_premier_volume(LISTE_MG_VOLUME::iterator & it) ;
200     MG_VOLUME* get_suivant_volume(LISTE_MG_VOLUME::iterator & it) ;
201     unsigned int get_nb_mg_volume(void);
202     int supprimer_mg_volumeid(unsigned long num);
203     int supprimer_mg_volume(unsigned int num);
204     void supprimer_tout_mg_volume(void);
205    
206    
207     int ajouter_mg_coque(MG_COQUE *mgvol);
208     MG_COQUE* get_mg_coqueid(unsigned long num);
209     MG_COQUE* get_mg_coqueid(std::string id);
210     MG_COQUE* get_mg_coque(unsigned int num);
211     MG_COQUE* get_premier_coque(LISTE_MG_COQUE::iterator & it);
212     MG_COQUE* get_suivant_coque(LISTE_MG_COQUE::iterator & it) ;
213     unsigned int get_nb_mg_coque(void);
214     int supprimer_mg_coqueid(unsigned long num);
215     int supprimer_mg_coque(unsigned int num);
216     void supprimer_tout_mg_coque(void);
217    
218    
219     int ajouter_mg_poutre(MG_POUTRE *mgvol);
220     MG_POUTRE* get_mg_poutreid(unsigned long num);
221     MG_POUTRE* get_mg_poutreid(std::string id);
222     MG_POUTRE* get_mg_poutre(unsigned int num);
223     MG_POUTRE* get_premier_poutre(LISTE_MG_POUTRE::iterator & it) ;
224     MG_POUTRE* get_suivant_poutre(LISTE_MG_POUTRE::iterator & it) ;
225     unsigned int get_nb_mg_poutre(void);
226     int supprimer_mg_poutreid(unsigned long num);
227     int supprimer_mg_poutre(unsigned int num);
228     void supprimer_tout_mg_poutre(void);
229    
230     int ajouter_mg_groupe_topologique(MG_GROUPE_TOPOLOGIQUE *mgvol);
231     MG_GROUPE_TOPOLOGIQUE* get_mg_groupe_topologiqueid(unsigned long num);
232     MG_GROUPE_TOPOLOGIQUE* get_mg_groupe_topologique(unsigned int num);
233     MG_GROUPE_TOPOLOGIQUE* get_premier_groupe_topologique(LISTE_MG_GROUPE_TOPOLOGIQUE::iterator & it) ;
234     MG_GROUPE_TOPOLOGIQUE* get_suivant_groupe_topologique(LISTE_MG_GROUPE_TOPOLOGIQUE::iterator & it) ;
235     unsigned int get_nb_mg_groupe_topologique(void);
236     int supprimer_mg_groupe_topologiqueid(unsigned long num);
237     int supprimer_mg_groupe_topologique(unsigned int num);
238     void supprimer_tout_mg_groupe_topologique(void);
239    
240 francois 711
241     int ajouter_mg_geom_fonction(MG_GEOM_FONCTION *mggeofon);
242     MG_GEOM_FONCTION* get_mg_geom_fonctionid(unsigned long num);
243     MG_GEOM_FONCTION* get_mg_geom_fonction(unsigned int num);
244     MG_GEOM_FONCTION* get_premier_geom_fonction(LISTE_MG_GEOM_FONCTION::iterator & it) ;
245     MG_GEOM_FONCTION* get_suivant_geom_fonction(LISTE_MG_GEOM_FONCTION::iterator & it) ;
246     unsigned int get_nb_mg_geom_fonction(void);
247     int supprimer_mg_geom_fonctionid(unsigned long num);
248     int supprimer_mg_geom_fonction(unsigned int num);
249     void supprimer_tout_mg_geom_fonction(void);
250 francois 283
251    
252 francois 711
253 francois 283 MG_COSOMMET* ajouter_mg_cosommet(MG_ARETE *mgarete,MG_SOMMET *mgsom);
254     MG_COSOMMET* ajouter_mg_cosommet(unsigned long num,MG_ARETE *mgarete,MG_SOMMET *mgsom);
255     int supprimer_mg_cosommet(MG_COSOMMET* mgcosom);
256    
257    
258     MG_COARETE* ajouter_mg_coarete(MG_ARETE *mgarete,MG_BOUCLE *mgboucle,int sens);
259     MG_COARETE* ajouter_mg_coarete(unsigned long num,MG_ARETE *mgarete,MG_BOUCLE *mgboucle,int sens);
260     int supprimer_mg_coarete(MG_COARETE* mgcoarete);
261    
262    
263     MG_COFACE* ajouter_mg_coface(MG_FACE *mgface,MG_COQUILLE *mgcoq,int sens);
264     MG_COFACE* ajouter_mg_coface(unsigned long num,MG_FACE *mgface,MG_COQUILLE *mgcoq,int sens);
265     int supprimer_mg_coface(MG_COFACE* mgcoface);
266    
267    
268     int ajouter_mg_visu_courbe(MG_VISU_COURBE *mgvcrb);
269     MG_VISU_COURBE* get_mg_visu_courbeid(unsigned long num);
270     MG_VISU_COURBE* get_mg_visu_courbe(unsigned int num);
271     unsigned int get_nb_mg_visu_courbe(void);
272     int supprimer_mg_visu_courbeid(unsigned long num);
273     int supprimer_mg_visu_courbe(unsigned int num);
274     void supprimer_tout_mg_visu_courbe(void);
275    
276     void change_gest_materiau(char* nom);
277     char* get_gest_materiau(void);
278    
279    
280 francois 763 virtual void enregistrer(std::ostream& o,double version);
281 francois 283 friend std::ostream& operator << (std::ostream& o,MG_GEOMETRIE& geo);
282    
283     char* get_nom_du_fichier(void);
284     char* get_type_geometrie(void);
285    
286     void cree_entite_visuel(double facteur=1.);
287    
288    
289     void change_gestionnaire(class MG_GESTIONNAIRE* mggest);
290     double get_valeur_unite(void);
291     void change_valeur_unite(double val);
292     double get_valeur_precision(void);
293     void change_valeur_precision(double val);
294    
295     void construit_vectorisation(void);
296 couturad 740
297    
298     #ifdef BREP_SAT
299     class SAT_GESTIONNAIRE& get_gest_sat(void);
300     #endif
301     #ifdef BREP_STEP
302     class ST_GESTIONNAIRE& get_gest_step(void);
303     #endif
304     #ifdef BREP_OCC
305     class OCC_FONCTION& get_occ_fonction(void);
306     #endif
307    
308 francois 283 private:
309 couturad 740 void ini(char *type,char *nom);
310 francois 283 char *nom_du_fichier;
311     char type_geo[8];
312    
313     double precision;
314    
315     std::string gest_materiau;
316    
317    
318     LISTE_ENTITE lst_entite;
319     LISTE_MG_POINT lst_mg_point;
320     LISTE_MG_COURBE lst_mg_courbe;
321     LISTE_MG_SURFACE lst_mg_surface;
322     LISTE_MG_SOMMET lst_mg_sommet;
323     LISTE_MG_COSOMMET lst_mg_cosommet;
324     LISTE_MG_ARETE lst_mg_arete;
325     LISTE_MG_COARETE lst_mg_coarete;
326     LISTE_MG_BOUCLE lst_mg_boucle;
327     LISTE_MG_FACE lst_mg_face;
328     LISTE_MG_COFACE lst_mg_coface;
329     LISTE_MG_COQUILLE lst_mg_coquille;
330     LISTE_MG_VOLUME lst_mg_volume;
331     LISTE_MG_COQUE lst_mg_coque;
332     LISTE_MG_POUTRE lst_mg_poutre;
333     LISTE_MG_GROUPE_TOPOLOGIQUE lst_mg_groupe_topologique;
334 francois 711 LISTE_MG_GEOM_FONCTION lst_mg_geom_fonction;
335 francois 283 LISTE_MG_VISU_COURBE lst_mg_visu_courbe;
336     MG_GESTIONNAIRE *gest;
337     double valeur_unite;
338 couturad 740
339    
340     #ifdef BREP_SAT
341     SAT_GESTIONNAIRE fichsat;
342     #endif
343     #ifdef BREP_STEP
344     ST_GESTIONNAIRE fichstep;
345     #endif
346     #ifdef BREP_OCC
347     OCC_FONCTION* fonction1;
348     #endif
349    
350 francois 283 };
351    
352    
353    
354     #endif
355    
356    
357    
358