ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/geometrie/src/mg_maillage.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_maillage.h
File size: 5923 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_maillage.h
16     //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20     // Version du 02/03/2006 à 11H22
21     //------------------------------------------------------------
22     //------------------------------------------------------------
23     #ifndef __MGMAILLAGE_
24     #define __MGMAILLAGE_
25    
26    
27     #ifdef WINDOWS_VERSION
28     #ifdef BUILT_DLL_GEOMETRIE
29     #define DLLPORTGEOMETRIE __declspec(dllexport)
30     #else
31     #define DLLPORTGEOMETRIE __declspec(dllimport)
32     #endif
33     #else
34     #define DLLPORTGEOMETRIE
35     #endif
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_noeud.h"
48     #include "mg_segment.h"
49     #include "mg_triangle.h"
50     #include "mg_tetra.h"
51     #include "mg_geometrie.h"
52    
53    
54     #include "geom.h"
55    
56    
57     typedef std::set<MG_IDENTIFICATEUR*,inf<MG_IDENTIFICATEUR*> > LISTE_ENTITE;
58     typedef std::map<unsigned long,MG_NOEUD*,std::less<unsigned long> > LISTE_MG_NOEUD;
59     typedef std::map<unsigned long,MG_SEGMENT*,std::less<unsigned long> > LISTE_MG_SEGMENT;
60     typedef std::map<unsigned long,MG_TRIANGLE*,std::less<unsigned long> > LISTE_MG_TRIANGLE;
61     typedef std::map<unsigned long,MG_TETRA*,std::less<unsigned long> > LISTE_MG_TETRA;
62    
63     DLLPORTGEOMETRIE std::ostream& operator << (std::ostream& o,class MG_MAILLAGE& maillage);
64    
65    
66     class DLLPORTGEOMETRIE MG_MAILLAGE : public MG_IDENTIFICATEUR
67     {
68     public:
69     MG_MAILLAGE(MG_GEOMETRIE* geo);
70     MG_MAILLAGE(unsigned long num,MG_GEOMETRIE* geo);
71     virtual ~MG_MAILLAGE();
72     MG_MAILLAGE* dupliquer(MG_GESTIONNAIRE *gest);
73     MG_GEOMETRIE* get_mg_geometrie(void);
74    
75     bool contient ( MG_IDENTIFICATEUR * id );
76    
77     MG_NOEUD* ajouter_mg_noeud(MG_ELEMENT_TOPOLOGIQUE* topo,double xx=0.,double yy=0.,double zz=0.,unsigned long num=0);
78     int ajouter_mg_noeud(MG_NOEUD *mgnoeud);
79     MG_NOEUD* get_mg_noeudid(unsigned long num);
80     MG_NOEUD* get_mg_noeud(unsigned int num);
81     MG_NOEUD* get_premier_noeud(LISTE_MG_NOEUD::iterator & it);
82     MG_NOEUD* get_suivant_noeud(LISTE_MG_NOEUD::iterator & it);
83     unsigned int get_nb_mg_noeud(void);
84     int supprimer_mg_noeudid(unsigned long num);
85     int supprimer_mg_noeud(unsigned int num);
86     void supprimer_tout_mg_noeud(void);
87    
88    
89    
90     MG_SEGMENT* ajouter_mg_segment(MG_ELEMENT_TOPOLOGIQUE* topo,class MG_NOEUD *mgnoeud1,class MG_NOEUD *mgnoeud2,double longue=0.0,unsigned long num=0);
91     int ajouter_mg_segment(MG_SEGMENT *mgsegment);
92     MG_SEGMENT* get_mg_segmentid(unsigned long num);
93     MG_SEGMENT* get_mg_segment(unsigned int num);
94     MG_SEGMENT* get_mg_segment(unsigned long noeud1id,unsigned long noeud2id);
95     MG_SEGMENT* get_premier_segment(LISTE_MG_SEGMENT::iterator & );
96     MG_SEGMENT* get_suivant_segment(LISTE_MG_SEGMENT::iterator & );
97     unsigned int get_nb_mg_segment(void);
98     int supprimer_mg_segmentid(unsigned long num);
99     int supprimer_mg_segment(unsigned int num);
100     void supprimer_tout_mg_segment(void);
101    
102    
103     MG_TRIANGLE* ajouter_mg_triangle(MG_ELEMENT_TOPOLOGIQUE* topo,class MG_NOEUD *mgnoeud1,class MG_NOEUD *mgnoeud2,class MG_NOEUD *mgnoeud3,unsigned long num=0);
104     int ajouter_mg_triangle(MG_TRIANGLE *mgtriangle);
105     MG_TRIANGLE* get_mg_triangleid(unsigned long num);
106     MG_TRIANGLE* get_mg_triangle(unsigned int num);
107     MG_TRIANGLE* get_mg_triangle(unsigned long noeud1id,unsigned long noeud2id,unsigned long noeud3id);
108     MG_TRIANGLE* get_premier_triangle(LISTE_MG_TRIANGLE::iterator & it);
109     MG_TRIANGLE* get_suivant_triangle(LISTE_MG_TRIANGLE::iterator & it);
110     unsigned int get_nb_mg_triangle(void);
111     int supprimer_mg_triangleid(unsigned long num);
112     int supprimer_mg_triangle(unsigned int num);
113     void supprimer_tout_mg_triangle(void);
114    
115    
116     MG_TETRA* ajouter_mg_tetra(MG_ELEMENT_TOPOLOGIQUE* topo,class MG_NOEUD *mgnoeud1,class MG_NOEUD *mgnoeud2,class MG_NOEUD *mgnoeud3,class MG_NOEUD *mgnoeud4,unsigned long num=0);
117     int ajouter_mg_tetra(MG_TETRA *mgtetra);
118     MG_TETRA* get_mg_tetraid(unsigned long num);
119     MG_TETRA* get_mg_tetra(unsigned int num);
120     MG_TETRA* get_mg_tetra(unsigned long noeud1id,unsigned long noeud2id,unsigned long noeud3id,unsigned long noeud4id);
121     MG_TETRA* get_premier_tetra(LISTE_MG_TETRA::iterator & it);
122     MG_TETRA* get_suivant_tetra(LISTE_MG_TETRA::iterator & it);
123     unsigned int get_nb_mg_tetra(void);
124     int supprimer_mg_tetraid(unsigned long num);
125     int supprimer_mg_tetra(unsigned int num);
126     void supprimer_tout_mg_tetra(void);
127    
128    
129     void change_gestionnaire(class MG_GESTIONNAIRE* mggest);
130    
131     virtual void enregistrer(std::ostream& o);
132     virtual void enregistrer_sous_mesh_1D(std::ostream& o);
133     virtual void enregistrer_sous_mesh_2D(std::ostream& o);
134     virtual void enregistrer_sous_mesh_3D(std::ostream& o);
135    
136     //virtual void exporter_cosmos(std::string& nomfic); en commentaire dans le .cpp
137     virtual void exporter_mesh(std::string& nomfic);
138     virtual void exporter_giref(std::string& nomfic);
139    
140     friend std::ostream& operator << (std::ostream& o,MG_MAILLAGE& maillage);
141    
142     private:
143    
144     LISTE_ENTITE lst_entite;
145     LISTE_MG_NOEUD lst_mg_noeud;
146     LISTE_MG_SEGMENT lst_mg_segment;
147     LISTE_MG_TRIANGLE lst_mg_triangle;
148     LISTE_MG_TETRA lst_mg_tetra;
149    
150     MG_GEOMETRIE* mg_geometrie;
151     MG_GESTIONNAIRE *gest;
152     };
153    
154    
155    
156     #endif
157    
158