ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/geometrie/src/mg_geometrie.h
Revision: 775
Committed: Mon Jan 25 22:49:10 2016 UTC (9 years, 3 months ago) by francois
Content type: text/plain
File size: 13756 byte(s)
Log Message:
debug conditions aux limites pour les sommets dans une geometrie virtuelle

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 francois 775 bool est_virtuelle(void);
286 francois 283 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