ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/geometrie/src/mg_geometrie.h
Revision: 5
Committed: Tue Jun 12 20:26:34 2007 UTC (17 years, 11 months ago)
Content type: text/plain
Original Path: magic/lib/geometrie/geometrie/src/mg_geometrie.h
File size: 10926 byte(s)
Log Message:

File Contents

# User Rev Content
1 5 //------------------------------------------------------------
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    
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    
63    
64     #include "geom.h"
65    
66    
67     typedef std::set<MG_IDENTIFICATEUR*,inf<MG_IDENTIFICATEUR*> > LISTE_ENTITE;
68     typedef std::map<unsigned long,MG_POINT*,std::less<unsigned long> > LISTE_MG_POINT;
69     typedef std::map<unsigned long,MG_COURBE*,std::less<unsigned long> > LISTE_MG_COURBE;
70     typedef std::map<unsigned long,MG_SURFACE*,std::less<unsigned long> > LISTE_MG_SURFACE;
71     typedef std::map<unsigned long,MG_SOMMET*,std::less<unsigned long> > LISTE_MG_SOMMET;
72     typedef std::map<unsigned long,MG_COSOMMET*,std::less<unsigned long> > LISTE_MG_COSOMMET;
73     typedef std::map<unsigned long,MG_ARETE*,std::less<unsigned long> > LISTE_MG_ARETE;
74     typedef std::map<unsigned long,MG_COARETE*,std::less<unsigned long> > LISTE_MG_COARETE;
75     typedef std::map<unsigned long,MG_BOUCLE*,std::less<unsigned long> > LISTE_MG_BOUCLE;
76     typedef std::map<unsigned long,MG_FACE*,std::less<unsigned long> > LISTE_MG_FACE;
77     typedef std::map<unsigned long,MG_COFACE*,std::less<unsigned long> > LISTE_MG_COFACE;
78     typedef std::map<unsigned long,MG_COQUILLE*,std::less<unsigned long> > LISTE_MG_COQUILLE;
79     typedef std::map<unsigned long,MG_VOLUME*,std::less<unsigned long> > LISTE_MG_VOLUME;
80     typedef std::map<unsigned long,MG_COQUE*,std::less<unsigned long> > LISTE_MG_COQUE;
81     typedef std::map<unsigned long,MG_POUTRE*,std::less<unsigned long> > LISTE_MG_POUTRE;
82     typedef std::map<unsigned long,MG_VISU_COURBE*,std::less<unsigned long> > LISTE_MG_VISU_COURBE;
83    
84    
85    
86     DLLPORTGEOMETRIE std::ostream& operator << (std::ostream& o,class MG_GEOMETRIE& geo);
87    
88     class DLLPORTGEOMETRIE MG_GEOMETRIE : public MG_IDENTIFICATEUR
89     {
90     public:
91     MG_GEOMETRIE(char *type,const char *nom=NULL,double unite=1.0);
92     MG_GEOMETRIE(char *type,unsigned long num,const char *nom=NULL,double unite=1.0);
93     virtual ~MG_GEOMETRIE();
94    
95     int ajouter_mg_point(MG_POINT *mgpt);
96     MG_POINT* get_mg_pointid(unsigned long num);
97     MG_POINT* get_mg_point(unsigned int num);
98     MG_POINT* get_premier_point(LISTE_MG_POINT::iterator & it);
99     MG_POINT* get_suivant_point(LISTE_MG_POINT::iterator & it);
100     unsigned int get_nb_mg_point(void);
101     int supprimer_mg_pointid(unsigned long num);
102     int supprimer_mg_point(unsigned int num);
103     void supprimer_tout_mg_point(void);
104    
105     int ajouter_mg_courbe(MG_COURBE *mgcrb);
106     MG_COURBE* get_mg_courbeid(unsigned long num);
107     MG_COURBE* get_mg_courbe(unsigned int num);
108     MG_COURBE* get_premier_courbe(LISTE_MG_COURBE::iterator & it) ;
109     MG_COURBE* get_suivant_courbe(LISTE_MG_COURBE::iterator & it) ;
110     unsigned int get_nb_mg_courbe(void);
111     int supprimer_mg_courbeid(unsigned long num);
112     int supprimer_mg_courbe(unsigned int num);
113     void supprimer_tout_mg_courbe(void);
114    
115    
116     int ajouter_mg_surface(MG_SURFACE *mgsrf);
117     MG_SURFACE* get_mg_surfaceid(unsigned long num);
118     MG_SURFACE* get_mg_surface(unsigned int num);
119     MG_SURFACE* get_premier_surface(LISTE_MG_SURFACE::iterator & it);
120     MG_SURFACE* get_suivant_surface(LISTE_MG_SURFACE::iterator & it);
121     unsigned int get_nb_mg_surface(void);
122     int supprimer_mg_surfaceid(unsigned long num);
123     int supprimer_mg_surface(unsigned int num);
124     void supprimer_tout_mg_surface(void);
125    
126    
127     int ajouter_mg_sommet(MG_SOMMET *mgsom);
128     MG_SOMMET* get_mg_sommetid(unsigned long num);
129     MG_SOMMET* get_mg_sommetid(std::string id);
130     MG_SOMMET* get_mg_sommet(unsigned int num);
131     MG_SOMMET* get_premier_sommet(LISTE_MG_SOMMET::iterator & it) ;
132     MG_SOMMET* get_suivant_sommet(LISTE_MG_SOMMET::iterator & it) ;
133     unsigned int get_nb_mg_sommet(void);
134     int supprimer_mg_sommetid(unsigned long num);
135     int supprimer_mg_sommet(unsigned int num);
136     void supprimer_tout_mg_sommet(void);
137    
138     int ajouter_mg_arete(MG_ARETE *mgarete);
139     MG_ARETE* get_mg_areteid(unsigned long num);
140     MG_ARETE* get_mg_areteid(std::string id);
141     MG_ARETE* get_mg_arete(unsigned int num);
142     MG_ARETE* get_premier_arete(LISTE_MG_ARETE::iterator & it);
143     MG_ARETE* get_suivant_arete(LISTE_MG_ARETE::iterator & it);
144     unsigned int get_nb_mg_arete(void);
145     int supprimer_mg_areteid(unsigned long num);
146     int supprimer_mg_arete(unsigned int num);
147     void supprimer_tout_mg_arete(void);
148    
149     int ajouter_mg_boucle(MG_BOUCLE *mgboucle,MG_FACE* mgface);
150     int ajouter_mg_boucle(MG_BOUCLE *mgboucle,MG_POUTRE* mgpoutre);
151     MG_BOUCLE* get_mg_boucleid(unsigned long num);
152     MG_BOUCLE* get_mg_boucle(unsigned int num);
153     MG_BOUCLE* get_premier_boucle(LISTE_MG_BOUCLE::iterator & it);
154     MG_BOUCLE* get_suivant_boucle(LISTE_MG_BOUCLE::iterator & it);
155     unsigned int get_nb_mg_boucle(void);
156     int supprimer_mg_boucleid(unsigned long num);
157     int supprimer_mg_boucle(unsigned int num);
158     void supprimer_tout_mg_boucle(void);
159    
160    
161     int ajouter_mg_face(MG_FACE *mgface);
162     MG_FACE* get_mg_faceid(unsigned long num);
163     MG_FACE* get_mg_faceid(std::string num);
164     MG_FACE* get_mg_face(unsigned int num);
165     MG_FACE* get_premier_face(LISTE_MG_FACE::iterator & it);
166     MG_FACE* get_suivant_face(LISTE_MG_FACE::iterator & it);
167     unsigned int get_nb_mg_face(void);
168     int supprimer_mg_faceid(unsigned long num);
169     int supprimer_mg_face(unsigned int num);
170     void supprimer_tout_mg_face(void);
171    
172     int ajouter_mg_coquille(MG_COQUILLE *mgcoq,MG_VOLUME *mgvol);
173     int ajouter_mg_coquille(MG_COQUILLE *mgcoq,MG_COQUE *mgcoque);
174     MG_COQUILLE* get_mg_coquilleid(unsigned long num);
175     MG_COQUILLE* get_mg_coquille(unsigned int num);
176     MG_COQUILLE* get_premier_coquille(LISTE_MG_COQUILLE::iterator & it);
177     MG_COQUILLE* get_suivant_coquille(LISTE_MG_COQUILLE::iterator & it) ;
178     unsigned int get_nb_mg_coquille(void);
179     int supprimer_mg_coquilleid(unsigned long num);
180     int supprimer_mg_coquille(unsigned int num);
181     void supprimer_tout_mg_coquille(void);
182    
183     int ajouter_mg_volume(MG_VOLUME *mgvol);
184     MG_VOLUME* get_mg_volumeid(unsigned long num);
185     MG_VOLUME* get_mg_volumeid(std::string id);
186     MG_VOLUME* get_mg_volume(unsigned int num);
187     MG_VOLUME* get_premier_volume(LISTE_MG_VOLUME::iterator & it) ;
188     MG_VOLUME* get_suivant_volume(LISTE_MG_VOLUME::iterator & it) ;
189     unsigned int get_nb_mg_volume(void);
190     int supprimer_mg_volumeid(unsigned long num);
191     int supprimer_mg_volume(unsigned int num);
192     void supprimer_tout_mg_volume(void);
193     MG_COSOMMET* ajouter_mg_cosommet(MG_ARETE *mgarete,MG_SOMMET *mgsom);
194    
195    
196     int ajouter_mg_coque(MG_COQUE *mgvol);
197     MG_COQUE* get_mg_coqueid(unsigned long num);
198     MG_COQUE* get_mg_coqueid(std::string id);
199     MG_COQUE* get_mg_coque(unsigned int num);
200     MG_COQUE* get_premier_coque(LISTE_MG_COQUE::iterator & it);
201     MG_COQUE* get_suivant_coque(LISTE_MG_COQUE::iterator & it) ;
202     unsigned int get_nb_mg_coque(void);
203     int supprimer_mg_coqueid(unsigned long num);
204     int supprimer_mg_coque(unsigned int num);
205     void supprimer_tout_mg_coque(void);
206    
207    
208     int ajouter_mg_poutre(MG_POUTRE *mgvol);
209     MG_POUTRE* get_mg_poutreid(unsigned long num);
210     MG_POUTRE* get_mg_poutreid(std::string id);
211     MG_POUTRE* get_mg_poutre(unsigned int num);
212     MG_POUTRE* get_premier_poutre(LISTE_MG_POUTRE::iterator & it) ;
213     MG_POUTRE* get_suivant_poutre(LISTE_MG_POUTRE::iterator & it) ;
214     unsigned int get_nb_mg_poutre(void);
215     int supprimer_mg_poutreid(unsigned long num);
216     int supprimer_mg_poutre(unsigned int num);
217     void supprimer_tout_mg_poutre(void);
218    
219    
220    
221     MG_COSOMMET* ajouter_mg_cosommet(unsigned long num,MG_ARETE *mgarete,MG_SOMMET *mgsom);
222     int supprimer_mg_cosommet(MG_COSOMMET* mgcosom);
223    
224    
225     MG_COARETE* ajouter_mg_coarete(MG_ARETE *mgarete,MG_BOUCLE *mgboucle,int sens);
226     MG_COARETE* ajouter_mg_coarete(unsigned long num,MG_ARETE *mgarete,MG_BOUCLE *mgboucle,int sens);
227     int supprimer_mg_coarete(MG_COARETE* mgcoarete);
228    
229    
230     MG_COFACE* ajouter_mg_coface(MG_FACE *mgface,MG_COQUILLE *mgcoq,int sens);
231     MG_COFACE* ajouter_mg_coface(unsigned long num,MG_FACE *mgface,MG_COQUILLE *mgcoq,int sens);
232     int supprimer_mg_coface(MG_COFACE* mgcoface);
233    
234    
235     int ajouter_mg_visu_courbe(MG_VISU_COURBE *mgvcrb);
236     MG_VISU_COURBE* get_mg_visu_courbeid(unsigned long num);
237     MG_VISU_COURBE* get_mg_visu_courbe(unsigned int num);
238     unsigned int get_nb_mg_visu_courbe(void);
239     int supprimer_mg_visu_courbeid(unsigned long num);
240     int supprimer_mg_visu_courbe(unsigned int num);
241     void supprimer_tout_mg_visu_courbe(void);
242    
243     void change_gest_materiau(char* nom);
244     char* get_gest_materiau(void);
245    
246    
247     virtual void enregistrer(std::ostream& o);
248     friend std::ostream& operator << (std::ostream& o,MG_GEOMETRIE& geo);
249    
250     char* get_nom_du_fichier(void);
251     char* get_type_geometrie(void);
252    
253     void cree_entite_visuel(double facteur=1.);
254    
255    
256     void change_gestionnaire(class MG_GESTIONNAIRE* mggest);
257     double get_valeur_unite(void);
258     void change_valeur_unite(double val);
259    
260     private:
261     char *nom_du_fichier;
262     char type_geo[8];
263    
264     std::string gest_materiau;
265    
266    
267     LISTE_ENTITE lst_entite;
268     LISTE_MG_POINT lst_mg_point;
269     LISTE_MG_COURBE lst_mg_courbe;
270     LISTE_MG_SURFACE lst_mg_surface;
271     LISTE_MG_SOMMET lst_mg_sommet;
272     LISTE_MG_COSOMMET lst_mg_cosommet;
273     LISTE_MG_ARETE lst_mg_arete;
274     LISTE_MG_COARETE lst_mg_coarete;
275     LISTE_MG_BOUCLE lst_mg_boucle;
276     LISTE_MG_FACE lst_mg_face;
277     LISTE_MG_COFACE lst_mg_coface;
278     LISTE_MG_COQUILLE lst_mg_coquille;
279     LISTE_MG_VOLUME lst_mg_volume;
280     LISTE_MG_COQUE lst_mg_coque;
281     LISTE_MG_POUTRE lst_mg_poutre;
282     LISTE_MG_VISU_COURBE lst_mg_visu_courbe;
283     MG_GESTIONNAIRE *gest;
284     double valeur_unite;
285     };
286    
287    
288    
289     #endif
290    
291    
292    
293