ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/geometrie/src/mg_assemblage.cpp
Revision: 763
Committed: Wed Dec 2 19:55:53 2015 UTC (9 years, 5 months ago) by francois
File size: 4316 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 couturad 740 //------------------------------------------------------------
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_element_geometrique.cpp
16     //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20     // Version du 02/03/2006 � 11H22
21     //------------------------------------------------------------
22     //------------------------------------------------------------
23     #ifdef CSG_OCC
24    
25     #include "gestionversion.h"
26     #include "mg_definition.h"
27     #include "mg_assemblage.h"
28     #include "mg_primitive.h"
29 francois 741 #include "mg_arbre.h"
30 couturad 740
31     MG_ASSEMBLAGE::MG_ASSEMBLAGE(std::string nm): MG_CONSTRUCTION_GEOMETRIQUE(), nom(nm)
32     {
33    
34     }
35    
36     MG_ASSEMBLAGE::MG_ASSEMBLAGE(long unsigned int num,std::string nm): MG_CONSTRUCTION_GEOMETRIQUE(num), nom(nm)
37     {
38    
39     }
40    
41     MG_ASSEMBLAGE::MG_ASSEMBLAGE(MG_ASSEMBLAGE& mdd): MG_CONSTRUCTION_GEOMETRIQUE(mdd), nom(mdd.nom)
42     {
43    
44     }
45    
46     MG_ASSEMBLAGE::~MG_ASSEMBLAGE()
47     {
48     supprimer_tout_mg_primitive();
49     }
50    
51     int MG_ASSEMBLAGE::ajouter_mg_primitive(MG_PRIMITIVE* mgprim)
52     {
53     std::pair<const unsigned long,MG_PRIMITIVE*> tmp(mgprim->get_id(),mgprim);
54     std::pair<LISTE_MG_PRIMITIVE::iterator,bool> p = lst_mg_primitive.insert(tmp);
55     if(!p.second)
56     {
57     return FAIL;
58     }
59     return OK;
60     }
61 francois 741 int MG_ASSEMBLAGE::ajouter_mg_primitive(unsigned long id)
62     {
63     lst_mg_primitive_id.push_back(id);
64     }
65     void MG_ASSEMBLAGE::ini_donne(MG_ARBRE* arb)
66     {
67     int nb=lst_mg_primitive_id.size();
68     for (int i=0;i<nb;i++)
69     {
70     MG_PRIMITIVE* prim=arb->get_mg_primitiveid(lst_mg_primitive_id[i]);
71     ajouter_mg_primitive(prim);
72     }
73     }
74 couturad 740 MG_PRIMITIVE* MG_ASSEMBLAGE::get_mg_primitiveid(long unsigned int num)
75     {
76     LISTE_MG_PRIMITIVE::iterator i=lst_mg_primitive.find(num);
77     if (i==lst_mg_primitive.end())
78     {
79     return NULL;
80     }
81     return ((*i).second);
82     }
83    
84     MG_PRIMITIVE* MG_ASSEMBLAGE::get_mg_primitive(unsigned int num)
85     {
86     if (!(num<lst_mg_primitive.size()))
87     {
88     return NULL;
89     }
90     LISTE_MG_PRIMITIVE::iterator i=lst_mg_primitive.begin();
91     for (unsigned long j=0;j<num;j++) i++;
92     return ((*i).second);
93     }
94    
95     MG_PRIMITIVE* MG_ASSEMBLAGE::get_premier_primitive(LISTE_MG_PRIMITIVE::iterator & it)
96     {
97     it = lst_mg_primitive.begin();
98     if (it == lst_mg_primitive.end())
99     return NULL;
100     return it->second;
101     }
102    
103     MG_PRIMITIVE* MG_ASSEMBLAGE::get_suivant_primitive(LISTE_MG_PRIMITIVE::iterator & it)
104     {
105     it++;
106     if (it == lst_mg_primitive.end())
107     return NULL;
108     return it->second;
109     }
110    
111     unsigned int MG_ASSEMBLAGE::get_nb_mg_primitive(void)
112     {
113     return lst_mg_primitive.size();
114     }
115    
116     int MG_ASSEMBLAGE::supprimer_mg_primitiveid(long unsigned int num)
117     {
118     MG_PRIMITIVE* mgprim=get_mg_primitiveid(num);
119     if (mgprim==NULL)
120     {
121     return FAIL;
122     }
123     LISTE_MG_PRIMITIVE::iterator j=lst_mg_primitive.find(num);
124     lst_mg_primitive.erase(j);
125     delete mgprim;
126     return OK;
127     }
128    
129     int MG_ASSEMBLAGE::supprimer_mg_primitive(unsigned int num)
130     {
131     MG_PRIMITIVE* mgprim=get_mg_primitive(num);
132     if (mgprim==NULL)
133     {
134     return FAIL;
135     }
136     LISTE_MG_PRIMITIVE::iterator j=lst_mg_primitive.begin();
137     for (unsigned int k=0;k<num;k++) j++;
138     lst_mg_primitive.erase(j);
139     delete mgprim;
140     return OK;
141     }
142    
143     void MG_ASSEMBLAGE::supprimer_tout_mg_primitive(void)
144     {
145     while (get_nb_mg_primitive()!=0)
146     {
147     LISTE_MG_PRIMITIVE::iterator j=lst_mg_primitive.begin();
148     MG_PRIMITIVE* mgprim=(*j).second;
149     lst_mg_primitive.erase(j);
150     delete mgprim;
151     }
152     }
153    
154 francois 763 void MG_ASSEMBLAGE::enregistrer(ostream& o,double version)
155 couturad 740 {
156     o << "%" << get_id() << "=ASSEMBLAGE("<< nom.c_str() <<"," << get_nb_mg_primitive() << ",(";
157     for( long i=0;i<get_nb_mg_primitive();i++)
158     {
159     o << "$" << get_mg_primitive(i)->get_id();
160     if(i!=get_nb_mg_primitive()-1) o << ",";
161     else o << ")";
162     }
163     o << ");"<< std::endl;
164     }
165    
166    
167    
168    
169    
170    
171    
172     #endif
173