MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mg_cg.cpp
Aller à la documentation de ce fichier.
1 //####//------------------------------------------------------------
2 //####//------------------------------------------------------------
3 //####// MAGiC
4 //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5 //####// Departement de Genie Mecanique - UQTR
6 //####//------------------------------------------------------------
7 //####// MAGIC est un projet de recherche de l equipe ERICCA
8 //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9 //####// http://www.uqtr.ca/ericca
10 //####// http://www.uqtr.ca/
11 //####//------------------------------------------------------------
12 //####//------------------------------------------------------------
13 //####//
14 //####// mg_cg.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:55 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #include "mg_cg.h"
23 #include "mg_gestionnaire.h"
24 #include "mg_geometrie.h"
25 #include "mg_sous_geometrie.h"
26 #include "mg_cg_modele.h"
27 #include "mg_cg_assemblage.h"
28 #include "mg_cg_groupe_forme.h"
29 #include "mg_cg_info.h"
30 #include "mg_arete.h"
31 #include "mg_volume.h"
32 #include "mg_cg_forme.h"
33 
34 #include "mg_cg_forme_arete.h"
36 
37 #include "mg_cg_forme_volume.h"
44 #include "mg_cg_forme_multiple.h"
46 #include "mg_cg_op_bool_union.h"
49 #include "mg_cg_op_bool_fragment.h"
54 #ifdef ALL_OCC
55 #include "occ_fonction.h"
56 #include "occ_fonction_v2017.h"
64 #include "occ_cg_op_bool_union.h"
73 #endif
74 
75 MG_CG_MODELE* MG_CG::creer_MG_CG_MODELE(MG_GESTIONNAIRE* mg_gestionnaire, std::string nom_mgcg_modele,double unite,double eps)
76 {
77 #ifdef ALL_OCC
78  std::string nom_fichier_ocaf = nom_mgcg_modele;
79  nom_fichier_ocaf.append((char*)".ocaf");
80  MG_GEOMETRIE* mg_construction = new MG_GEOMETRIE((char*)"OCCV2017",(char*)nom_fichier_ocaf.c_str(),unite,eps);
81  mg_construction->change_est_construction(true);
82  mg_gestionnaire->ajouter_mg_construction(mg_construction);
83  return new MG_CG_MODELE(mg_gestionnaire,nom_mgcg_modele,mg_construction);
84 #endif
85 }
86 
87 MG_CG_MODELE* MG_CG::creer_MG_CG_MODELE(MG_GESTIONNAIRE* mg_gestionnaire, std::string nom_mgcg_modele, MG_GEOMETRIE* mg_geometrie)
88 {
89  return new MG_CG_MODELE(mg_gestionnaire,nom_mgcg_modele,mg_geometrie);
90 }
91 
92 MG_CG_MODELE* MG_CG::creer_MG_CG_MODELE(MG_GESTIONNAIRE* mg_gestionnaire, std::string nom_mgcg_modele, MG_GEOMETRIE* mg_geometrie, long unsigned int num)
93 {
94  return new MG_CG_MODELE(mg_gestionnaire,nom_mgcg_modele,mg_geometrie,num);
95 }
96 
97 MG_CG_ASSEMBLAGE* MG_CG::creer_MG_CG_ASSEMBLAGE(MG_CG_MODELE* mgcg_modele, std::string nom_mgcg_assemblage)
98 {
99  return new MG_CG_ASSEMBLAGE(mgcg_modele,nom_mgcg_assemblage);
100 }
101 
102 MG_CG_ASSEMBLAGE* MG_CG::creer_MG_CG_ASSEMBLAGE(MG_CG_MODELE* mgcg_modele, long unsigned int num, std::string nom_mgcg_assemblage, MG_SOUS_GEOMETRIE* mg_sous_geometrie)
103 {
104  return new MG_CG_ASSEMBLAGE(mgcg_modele,num,nom_mgcg_assemblage,mg_sous_geometrie);
105 }
106 
108 {
109  return new MG_CG_GROUPE_FORME(mgcg_modele,nom);
110 }
111 
112 MG_CG_GROUPE_FORME* MG_CG::creer_MG_CG_GROUPE_FORME(MG_CG_MODELE* mgcg_modele, long unsigned int num, std::string nom)
113 {
114  return new MG_CG_GROUPE_FORME(mgcg_modele,num,nom);
115 }
116 
117 MG_CG_INFO_STRING* MG_CG::creer_MG_CG_INFO_STRING(MG_CONSTRUCTION_GEOMETRIQUE* mg_construction_geometrique, std::string identifiant, std::string valeur)
118 {
119  return new MG_CG_INFO_STRING(mg_construction_geometrique,identifiant,valeur);
120 }
121 
122 MG_CG_INFO_STRING* MG_CG::creer_MG_CG_INFO_STRING(MG_CONSTRUCTION_GEOMETRIQUE* mg_construction_geometrique, long int num, std::string identifiant, std::string valeur)
123 {
124  return new MG_CG_INFO_STRING(mg_construction_geometrique,num,identifiant,valeur);
125 }
126 
127 MG_CG_INFO_DOUBLE* MG_CG::creer_MG_CG_INFO_DOUBLE(MG_CONSTRUCTION_GEOMETRIQUE* mg_construction_geometrique, std::string identifiant, double valeur)
128 {
129  return new MG_CG_INFO_DOUBLE(mg_construction_geometrique,identifiant,valeur);
130 }
131 
132 MG_CG_INFO_DOUBLE* MG_CG::creer_MG_CG_INFO_DOUBLE(MG_CONSTRUCTION_GEOMETRIQUE* mg_construction_geometrique, long int num, std::string identifiant, double valeur)
133 {
134  return new MG_CG_INFO_DOUBLE(mg_construction_geometrique,num,identifiant,valeur);
135 }
136 
137 MG_CG_INFO_VCT_DOUBLE* MG_CG::creer_MG_CG_INFO_VCT_DOUBLE(MG_CONSTRUCTION_GEOMETRIQUE* mg_construction_geometrique, std::string identifiant, std::vector< double >& valeur)
138 {
139  return new MG_CG_INFO_VCT_DOUBLE(mg_construction_geometrique,identifiant,valeur);
140 }
141 
142 MG_CG_INFO_VCT_DOUBLE* MG_CG::creer_MG_CG_INFO_VCT_DOUBLE(MG_CONSTRUCTION_GEOMETRIQUE* mg_construction_geometrique, long int num, std::string identifiant, std::vector< double >& valeur)
143 {
144  return new MG_CG_INFO_VCT_DOUBLE(mg_construction_geometrique,num,identifiant,valeur);
145 }
146 
147 MG_CG_INFO_VCT_DOUBLE* MG_CG::creer_MG_CG_INFO_VCT_DOUBLE(MG_CONSTRUCTION_GEOMETRIQUE* mg_construction_geometrique, std::string identifiant, long int nb, double* tab)
148 {
149  std::vector<double> vct_double;
150  for(long i=0;i<nb;i++)
151  {
152  vct_double.push_back(tab[i]);
153  }
154  return new MG_CG_INFO_VCT_DOUBLE(mg_construction_geometrique,identifiant,vct_double);
155 }
156 
157 MG_CG_INFO_VCT_DOUBLE* MG_CG::creer_MG_CG_INFO_VCT_DOUBLE(MG_CONSTRUCTION_GEOMETRIQUE* mg_construction_geometrique, long int num, std::string identifiant, long int nb, double* tab)
158 {
159  std::vector<double> vct_double;
160  for(long i=0;i<nb;i++)
161  {
162  vct_double.push_back(tab[i]);
163  }
164  return new MG_CG_INFO_VCT_DOUBLE(mg_construction_geometrique,num,identifiant,vct_double);
165 }
166 
168 {
169  return new MG_CG_FORME_ARETE(mgcg_modele,provenance,mg_arete);
170 }
171 
172 MG_CG_FORME_ARETE* MG_CG::creer_MG_CG_FORME_ARETE(MG_CG_MODELE* mgcg_modele,int provenance, int etat, long unsigned int num, MG_ARETE* mg_arete)
173 {
174  return new MG_CG_FORME_ARETE(mgcg_modele,provenance,etat,num,mg_arete);
175 }
176 
177 MG_CG_FORME_ARETE_DROITE* MG_CG::creer_MG_CG_FORME_ARETE_DROITE(MG_CG_MODELE* mgcg_modele,double x1, double y1, double z1, double x2, double y2, double z2)
178 {
179 #ifdef ALL_OCC
180  return new OCC_CG_FORME_ARETE_DROITE(mgcg_modele,x1,y1,z1,x2,y2,z2);
181 #endif
182 }
183 
184 MG_CG_FORME_ARETE_DROITE* MG_CG::creer_MG_CG_FORME_ARETE_DROITE(MG_CG_MODELE* mgcg_modele,int etat, long unsigned int num, MG_ARETE* mg_arete, double x1, double y1, double z1, double x2, double y2, double z2)
185 {
186 #ifdef ALL_OCC
187  return new OCC_CG_FORME_ARETE_DROITE(mgcg_modele,etat,num,mg_arete,x1,y1,z1,x2,y2,z2);
188 #endif
189 }
190 
192 {
193  return new MG_CG_FORME_VOLUME(mgcg_modele,provenance,mg_volume);
194 }
195 
196 MG_CG_FORME_VOLUME* MG_CG::creer_MG_CG_FORME_VOLUME(MG_CG_MODELE* mgcg_modele,int provenance, int etat, long unsigned int num, MG_VOLUME* mg_volume)
197 {
198  return new MG_CG_FORME_VOLUME(mgcg_modele,provenance,etat,num,mg_volume);
199 }
200 
201 MG_CG_FORME_VOLUME_BOITE* MG_CG::creer_MG_CG_FORME_VOLUME_BOITE(MG_CG_MODELE* mgcg_modele,double x1, double y1, double z1, double x2, double y2, double z2)
202 {
203 #ifdef ALL_OCC
204  return new OCC_CG_FORME_VOLUME_BOITE(mgcg_modele,x1,y1,z1,x2,y2,z2);
205 #endif
206 }
207 
208 MG_CG_FORME_VOLUME_BOITE* MG_CG::creer_MG_CG_FORME_VOLUME_BOITE(MG_CG_MODELE* mgcg_modele,int etat, long unsigned int num, MG_VOLUME* mg_volume, double x1, double y1, double z1, double x2, double y2, double z2)
209 {
210 #ifdef ALL_OCC
211  return new OCC_CG_FORME_VOLUME_BOITE(mgcg_modele,etat,num,mg_volume,x1,y1,z1,x2,y2,z2);
212 #endif
213 }
214 
215 MG_CG_FORME_VOLUME_SPHERE* MG_CG::creer_MG_CG_FORME_VOLUME_SPHERE(MG_CG_MODELE* mgcg_modele,double centre_x, double centre_y, double centre_z, double rayon)
216 {
217 #ifdef ALL_OCC
218  return new OCC_CG_FORME_VOLUME_SPHERE(mgcg_modele,centre_x,centre_y,centre_z,rayon);
219 #endif
220 }
221 
222 MG_CG_FORME_VOLUME_SPHERE* MG_CG::creer_MG_CG_FORME_VOLUME_SPHERE(MG_CG_MODELE* mgcg_modele,int etat, long unsigned int num, MG_VOLUME* mg_volume, double centre_x, double centre_y, double centre_z, double rayon)
223 {
224 #ifdef ALL_OCC
225  return new OCC_CG_FORME_VOLUME_SPHERE(mgcg_modele,etat,num,mg_volume,centre_x,centre_y,centre_z,rayon);
226 #endif
227 }
228 
229 MG_CG_FORME_VOLUME_ELLIPSOIDE* MG_CG::creer_MG_CG_FORME_VOLUME_ELLIPSOIDE(MG_CG_MODELE* mgcg_modele,double centre_x, double centre_y, double centre_z, double direction_x, double direction_y, double direction_z, double rayon_majeur, double rayon_mineur)
230 {
231 #ifdef ALL_OCC
232  return new OCC_CG_FORME_VOLUME_ELLIPSOIDE(mgcg_modele,centre_x,centre_y,centre_z,direction_x,direction_y,direction_z,rayon_majeur,rayon_mineur);
233 #endif
234 }
235 
236 MG_CG_FORME_VOLUME_ELLIPSOIDE* MG_CG::creer_MG_CG_FORME_VOLUME_ELLIPSOIDE(MG_CG_MODELE* mgcg_modele,int etat, long unsigned int num, MG_VOLUME* mg_volume, double centre_x, double centre_y, double centre_z, double direction_x, double direction_y, double direction_z, double rayon_majeur, double rayon_mineur)
237 {
238 #ifdef ALL_OCC
239  return new OCC_CG_FORME_VOLUME_ELLIPSOIDE(mgcg_modele,etat,num,mg_volume,centre_x,centre_y,centre_z,direction_x,direction_y,direction_z,rayon_majeur,rayon_mineur);
240 #endif
241 }
242 
243 MG_CG_FORME_VOLUME_CYLINDRE* MG_CG::creer_MG_CG_FORME_VOLUME_CYLINDRE(MG_CG_MODELE* mgcg_modele,double extremite_x, double extremite_y, double extremite_z, double direction_x, double direction_y, double direction_z, double rayon, double longueur)
244 {
245 #ifdef ALL_OCC
246  return new OCC_CG_FORME_VOLUME_CYLINDRE(mgcg_modele,extremite_x,extremite_y,extremite_z,direction_x,direction_y,direction_z,rayon,longueur);
247 #endif
248 }
249 
250 MG_CG_FORME_VOLUME_CYLINDRE* MG_CG::creer_MG_CG_FORME_VOLUME_CYLINDRE(MG_CG_MODELE* mgcg_modele,int etat, long unsigned int num, MG_VOLUME* mg_volume, double extremite_x, double extremite_y, double extremite_z, double direction_x, double direction_y, double direction_z, double rayon, double longueur)
251 {
252 #ifdef ALL_OCC
253  return new OCC_CG_FORME_VOLUME_CYLINDRE(mgcg_modele,etat,num,mg_volume,extremite_x,extremite_y,extremite_z,direction_x,direction_y,direction_z,rayon,longueur);
254 #endif
255 }
256 
257 MG_CG_FORME_VOLUME_CONE* MG_CG::creer_MG_CG_FORME_VOLUME_CONE(MG_CG_MODELE* mgcg_modele,double extremite_x, double extremite_y, double extremite_z, double direction_x, double direction_y, double direction_z, double rayon, double longueur)
258 {
259 #ifdef ALL_OCC
260  return new OCC_CG_FORME_VOLUME_CONE(mgcg_modele,extremite_x,extremite_y,extremite_z,direction_x,direction_y,direction_z,rayon,longueur);
261 #endif
262 }
263 
264 MG_CG_FORME_VOLUME_CONE* MG_CG::creer_MG_CG_FORME_VOLUME_CONE(MG_CG_MODELE* mgcg_modele,int etat, long unsigned int num, MG_VOLUME* mg_volume, double extremite_x, double extremite_y, double extremite_z, double direction_x, double direction_y, double direction_z, double rayon, double longueur)
265 {
266 #ifdef ALL_OCC
267  return new OCC_CG_FORME_VOLUME_CONE(mgcg_modele,etat,num,mg_volume,extremite_x,extremite_y,extremite_z,direction_x,direction_y,direction_z,rayon,longueur);
268 #endif
269 }
270 
271 MG_CG_FORME_VOLUME_TORE* MG_CG::creer_MG_CG_FORME_VOLUME_TORE(MG_CG_MODELE* mgcg_modele,double centre_x, double centre_y, double centre_z, double direction_x, double direction_y, double direction_z, double rayon_cercle, double rayon_tore, double angle_seg, double angle_rotation)
272 {
273 #ifdef ALL_OCC
274  return new OCC_CG_FORME_VOLUME_TORE(mgcg_modele,centre_x,centre_y,centre_z,direction_x,direction_y,direction_z,rayon_cercle,rayon_tore,angle_seg,angle_rotation);
275 #endif
276 }
277 
278 MG_CG_FORME_VOLUME_TORE* MG_CG::creer_MG_CG_FORME_VOLUME_TORE(MG_CG_MODELE* mgcg_modele,int etat, long unsigned int num, MG_VOLUME* mg_volume, double centre_x, double centre_y, double centre_z, double direction_x, double direction_y, double direction_z, double rayon_cercle, double rayon_tore, double angle_seg, double angle_rotation)
279 {
280 #ifdef ALL_OCC
281  return new OCC_CG_FORME_VOLUME_TORE(mgcg_modele,etat,num,mg_volume,centre_x,centre_y,centre_z,direction_x,direction_y,direction_z,rayon_cercle,rayon_tore,angle_seg,angle_rotation);
282 #endif
283 }
284 
285 MG_CG_FORME_MULTIPLE* MG_CG::creer_MG_CG_FORME_MULTIPLE(MG_CG_MODELE* mgcg_modele,int provenance, std::vector< MG_ELEMENT_TOPOLOGIQUE* >& vector_mg_element_topologique, std::vector< MG_ELEMENT_COTOPOLOGIQUE* >& vector_mg_element_cotopologique)
286 {
287  return new MG_CG_FORME_MULTIPLE(mgcg_modele,provenance,vector_mg_element_topologique,vector_mg_element_cotopologique);
288 }
289 
290 MG_CG_FORME_MULTIPLE* MG_CG::creer_MG_CG_FORME_MULTIPLE(MG_CG_MODELE* mgcg_modele,int provenance, int etat, long unsigned int num, std::vector< MG_ELEMENT_TOPOLOGIQUE* >& vector_mg_element_topologique, std::vector< MG_ELEMENT_COTOPOLOGIQUE* >& vector_mg_element_cotopologique)
291 {
292  return new MG_CG_FORME_MULTIPLE(mgcg_modele,provenance,etat,num,vector_mg_element_topologique,vector_mg_element_cotopologique);
293 }
294 
295 MG_CG_FORME_MULTI_VOLUME* MG_CG::creer_MG_CG_FORME_MULTI_VOLUME(MG_CG_MODELE* mgcg_modele,int provenance, std::vector< MG_VOLUME* >& vector_mg_volume)
296 {
297  return new MG_CG_FORME_MULTI_VOLUME(mgcg_modele,provenance,vector_mg_volume);
298 }
299 
300 MG_CG_FORME_MULTI_VOLUME* MG_CG::creer_MG_CG_FORME_MULTI_VOLUME(MG_CG_MODELE* mgcg_modele,int provenance, int etat, long unsigned int num, std::vector< MG_VOLUME* >& vector_mg_volume)
301 {
302  return new MG_CG_FORME_MULTI_VOLUME(mgcg_modele,provenance,etat,num,vector_mg_volume);
303 }
304 
305 MG_CG_OP_BOOL_UNION* MG_CG::creer_MG_CG_OP_BOOL_UNION(MG_CG_MODELE* mgcg_modele,int semantique, MG_CG_FORME* mgcg_forme_entree_1, MG_CG_FORME* mgcg_forme_entree_2)
306 {
307 #ifdef ALL_OCC
308  return new OCC_CG_OP_BOOL_UNION(mgcg_modele,semantique,mgcg_forme_entree_1,mgcg_forme_entree_2);
309 #endif
310 }
311 
312 MG_CG_OP_BOOL_UNION* MG_CG::creer_MG_CG_OP_BOOL_UNION(MG_CG_MODELE* mgcg_modele,int semantique, int etat, long unsigned int num, MG_CG_FORME* mgcg_forme_entree_1, MG_CG_FORME* mgcg_forme_entree_2, long int id_mgcg_forme_sortie)
313 {
314 #ifdef ALL_OCC
315  return new OCC_CG_OP_BOOL_UNION(mgcg_modele,semantique,etat,num,mgcg_forme_entree_1,mgcg_forme_entree_2,id_mgcg_forme_sortie);
316 #endif
317 }
318 
319 MG_CG_OP_BOOL_DIFFERENCE* MG_CG::creer_MG_CG_OP_BOOL_DIFFERENCE(MG_CG_MODELE* mgcg_modele,int semantique, MG_CG_FORME* mgcg_forme_entree_1, MG_CG_FORME* mgcg_forme_entree_2)
320 {
321 #ifdef ALL_OCC
322  return new OCC_CG_OP_BOOL_DIFFERENCE(mgcg_modele,semantique,mgcg_forme_entree_1,mgcg_forme_entree_2);
323 #endif
324 }
325 
326 MG_CG_OP_BOOL_DIFFERENCE* MG_CG::creer_MG_CG_OP_BOOL_DIFFERENCE(MG_CG_MODELE* mgcg_modele,int semantique, int etat, long unsigned int num, MG_CG_FORME* mgcg_forme_entree_1, MG_CG_FORME* mgcg_forme_entree_2, long int id_mgcg_forme_sortie)
327 {
328 #ifdef ALL_OCC
329  return new OCC_CG_OP_BOOL_DIFFERENCE(mgcg_modele,semantique,etat,num,mgcg_forme_entree_1,mgcg_forme_entree_2,id_mgcg_forme_sortie);
330 #endif
331 }
332 
333 MG_CG_OP_BOOL_INTERSECTION* MG_CG::creer_MG_CG_OP_BOOL_INTERSECTION(MG_CG_MODELE* mgcg_modele,int semantique, MG_CG_FORME* mgcg_forme_entree_1, MG_CG_FORME* mgcg_forme_entree_2)
334 {
335 #ifdef ALL_OCC
336  return new OCC_CG_OP_BOOL_INTERSECTION(mgcg_modele,semantique,mgcg_forme_entree_1,mgcg_forme_entree_2);
337 #endif
338 }
339 
340 MG_CG_OP_BOOL_INTERSECTION* MG_CG::creer_MG_CG_OP_BOOL_INTERSECTION(MG_CG_MODELE* mgcg_modele,int semantique, int etat, long unsigned int num, MG_CG_FORME* mgcg_forme_entree_1, MG_CG_FORME* mgcg_forme_entree_2, long int id_mgcg_forme_sortie)
341 {
342 #ifdef ALL_OCC
343  return new OCC_CG_OP_BOOL_INTERSECTION(mgcg_modele,semantique,etat,num,mgcg_forme_entree_1,mgcg_forme_entree_2,id_mgcg_forme_sortie);
344 #endif
345 }
346 
347 MG_CG_OP_BOOL_FRAGMENT* MG_CG::creer_MG_CG_OP_BOOL_FRAGMENT(MG_CG_MODELE* mgcg_modele,int semantique, MG_CG_FORME* mgcg_forme_entree_1, MG_CG_FORME* mgcg_forme_entree_2)
348 {
349 #ifdef ALL_OCC
350  return new OCC_CG_OP_BOOL_FRAGMENT(mgcg_modele,semantique,mgcg_forme_entree_1,mgcg_forme_entree_2);
351 #endif
352 }
353 
354 MG_CG_OP_BOOL_FRAGMENT* MG_CG::creer_MG_CG_OP_BOOL_FRAGMENT(MG_CG_MODELE* mgcg_modele,int semantique, int etat, long unsigned int num, MG_CG_FORME* mgcg_forme_entree_1, MG_CG_FORME* mgcg_forme_entree_2, long int id_mgcg_forme_sortie)
355 {
356 #ifdef ALL_OCC
357  return new OCC_CG_OP_BOOL_FRAGMENT(mgcg_modele,semantique,etat,num,mgcg_forme_entree_1,mgcg_forme_entree_2,id_mgcg_forme_sortie);
358 #endif
359 }
360 
361 MG_CG_OP_INCLUSION_MATRICE* MG_CG::creer_MG_CG_OP_INCLUSION_MATRICE(MG_CG_MODELE* mgcg_modele,int semantique, MG_CG_FORME* mgcg_forme_inclusion_entree, MG_CG_FORME* mgcg_forme_matrice_entree)
362 {
363 #ifdef ALL_OCC
364  return new OCC_CG_OP_INCLUSION_MATRICE(mgcg_modele,semantique,mgcg_forme_inclusion_entree,mgcg_forme_matrice_entree);
365 #endif
366 }
367 
368 MG_CG_OP_INCLUSION_MATRICE* MG_CG::creer_MG_CG_OP_INCLUSION_MATRICE(MG_CG_MODELE* mgcg_modele,int semantique, int etat, long unsigned int num, MG_CG_FORME* mgcg_forme_inclusion_entree, MG_CG_FORME* mgcg_forme_matrice_entree, long int id_mgcg_forme_inclusion_sortie, long int id_mgcg_forme_matrice_sortie)
369 {
370 #ifdef ALL_OCC
371  return new OCC_CG_OP_INCLUSION_MATRICE(mgcg_modele,semantique,etat,num,mgcg_forme_inclusion_entree,mgcg_forme_matrice_entree,id_mgcg_forme_inclusion_sortie,id_mgcg_forme_matrice_sortie);
372 #endif
373 }
374 
376 {
377 #ifdef ALL_OCC
378  return new OCC_CG_OP_TRANSF_ROTATION(mgcg_modele,semantique,mgcg_forme_entree);
379 #endif
380 }
381 
382 MG_CG_OP_TRANSF_ROTATION* MG_CG::creer_MG_CG_OP_TRANSF_ROTATION(MG_CG_MODELE* mgcg_modele,int semantique, int etat, long unsigned int num, MG_CG_FORME* mgcg_forme_entree, long int id_mgcg_forme_sortie)
383 {
384 #ifdef ALL_OCC
385  return new OCC_CG_OP_TRANSF_ROTATION(mgcg_modele,semantique,etat,num,mgcg_forme_entree,id_mgcg_forme_sortie);
386 #endif
387 }
388 
390 {
391 #ifdef ALL_OCC
392  return new OCC_CG_OP_TRANSF_TRANSLATION(mgcg_modele,semantique,mgcg_forme_entree);
393 #endif
394 }
395 
396 MG_CG_OP_TRANSF_TRANSLATION* MG_CG::creer_MG_CG_OP_TRANSF_TRANSLATION(MG_CG_MODELE* mgcg_modele,int semantique, int etat, long unsigned int num, MG_CG_FORME* mgcg_forme_entree, long int id_mgcg_forme_sortie)
397 {
398 #ifdef ALL_OCC
399  return new OCC_CG_OP_TRANSF_TRANSLATION(mgcg_modele,semantique,etat,num,mgcg_forme_entree,id_mgcg_forme_sortie);
400 #endif
401 }
402 
404 {
405 #ifdef ALL_OCC
406  return new OCC_CG_OP_TRANSF_ECHELLE(mgcg_modele,semantique,mgcg_forme_entree);
407 #endif
408 }
409 
410 MG_CG_OP_TRANSF_ECHELLE* MG_CG::creer_MG_CG_OP_TRANSF_ECHELLE(MG_CG_MODELE* mgcg_modele,int semantique, int etat, long unsigned int num, MG_CG_FORME* mgcg_forme_entree, long int id_mgcg_forme_sortie)
411 {
412 #ifdef ALL_OCC
413  return new OCC_CG_OP_TRANSF_ECHELLE(mgcg_modele,semantique,etat,num,mgcg_forme_entree,id_mgcg_forme_sortie);
414 #endif
415 }
416 
418 {
419 #ifdef ALL_OCC
420  return new OCC_CG_OP_TRANSF_DECALLAGE(mgcg_modele,semantique,mgcg_forme_entree);
421 #endif
422 }
423 
424 MG_CG_OP_TRANSF_DECALLAGE * MG_CG::creer_MG_CG_OP_TRANSF_DECALLAGE(MG_CG_MODELE* mgcg_modele, int semantique, int etat, unsigned long num, MG_CG_FORME* mgcg_forme_entree, long id_mgcg_forme_sortie)
425 {
426 #ifdef ALL_OCC
427  return new OCC_CG_OP_TRANSF_DECALLAGE(mgcg_modele,semantique,etat,num,mgcg_forme_entree,id_mgcg_forme_sortie);
428 #endif
429 }
430 
431 
432 int MG_CG::exporter_fichier_brep(char* nom, MG_CG_MODELE* mgcg_modele)
433 {
434  MG_GEOMETRIE* mg_geometrie = mgcg_modele->get_mg_geometrie();
435 #ifdef ALL_OCC
436  OCC_FONCTION* occ_fonction = &mg_geometrie->get_occ_fonction();
437  if(occ_fonction->get_version()=="OCCV2017")
438  {
439  OCC_FONCTION_V2017* occ_fonction_v2017 = (OCC_FONCTION_V2017*)occ_fonction;
440  return occ_fonction_v2017->exporter_fichier_brep(nom,mg_geometrie);
441  }
442 #endif
443 return 0;
444 }
445 
446 int MG_CG::exporter_fichier_brep(char* nom, MG_CG_ASSEMBLAGE* mgcg_assemblage)
447 {
448  MG_GEOMETRIE* mg_geometrie_modele = mgcg_assemblage->get_mgcg_modele()->get_mg_geometrie();
449  MG_GEOMETRIE* mg_geometrie_assemblage = (MG_GEOMETRIE*)mgcg_assemblage->get_mg_sous_geometrie();
450 #ifdef ALL_OCC
451  OCC_FONCTION* occ_fonction = &mg_geometrie_modele->get_occ_fonction();
452  if(occ_fonction->get_version()=="OCCV2017")
453  {
454  OCC_FONCTION_V2017* occ_fonction_v2017 = (OCC_FONCTION_V2017*)occ_fonction;
455  return occ_fonction_v2017->exporter_fichier_brep(nom,mgcg_assemblage->get_mg_sous_geometrie());
456  }
457 #endif
458 return 0;
459 }
460 
461 
462 
463 
464 
465 
466 
467 
468 
469 
occ_cg_op_transf_echelle.h
MG_CG::creer_MG_CG_OP_TRANSF_TRANSLATION
static MG_CG_OP_TRANSF_TRANSLATION * creer_MG_CG_OP_TRANSF_TRANSLATION(MG_CG_MODELE *mgcg_modele, int semantique, MG_CG_FORME *mgcg_forme_entree)
Definition: mg_cg.cpp:389
OCC_FONCTION_V2017::exporter_fichier_brep
virtual int exporter_fichier_brep(char *file, MG_GEOMETRIE *mg_geometrie)
Definition: occ_fonction_v2017.cpp:106
mg_cg_forme_volume_boite.h
mg_cg_forme.h
mg_cg_forme_multi_volume.h
mg_geometrie.h
mg_cg_op_bool_intersection.h
mg_cg_op_transf_rotation.h
mg_cg_op_bool_fragment.h
occ_cg_op_transf_rotation.h
MG_CG::creer_MG_CG_FORME_VOLUME
static MG_CG_FORME_VOLUME * creer_MG_CG_FORME_VOLUME(MG_CG_MODELE *mgcg_modele, int provenance, MG_VOLUME *mg_volume)
Definition: mg_cg.cpp:191
occ_cg_op_bool_intersection.h
mg_cg.h
mg_cg_forme_volume.h
mg_gestionnaire.h
mg_cg_forme_arete_droite.h
mg_cg_forme_volume_sphere.h
mg_cg_groupe_forme.h
OCC_CG_FORME_VOLUME_TORE
Definition: occ_cg_forme_volume_tore.h:38
OCC_CG_FORME_VOLUME_SPHERE
Definition: occ_cg_forme_volume_sphere.h:38
MG_CG_FORME_VOLUME_CONE
Definition: mg_cg_forme_volume_cone.h:35
MG_CG::creer_MG_CG_INFO_VCT_DOUBLE
static MG_CG_INFO_VCT_DOUBLE * creer_MG_CG_INFO_VCT_DOUBLE(MG_CONSTRUCTION_GEOMETRIQUE *mg_construction_geometrique, std::string identifiant, std::vector< double > &valeur)
Definition: mg_cg.cpp:137
MG_CG::creer_MG_CG_MODELE
static MG_CG_MODELE * creer_MG_CG_MODELE(MG_GESTIONNAIRE *mg_gestionnaire, std::string nom_mgcg_modele, double unite=1.0, double eps=1e-6)
Definition: mg_cg.cpp:75
mg_cg_op_inclusion_matrice.h
occ_cg_forme_volume_cone.h
mg_cg_forme_volume_cone.h
mg_cg_forme_volume_ellipsoide.h
occ_cg_forme_volume_boite.h
occ_cg_forme_volume_cylindre.h
MG_CG_ASSEMBLAGE::get_mgcg_modele
virtual MG_CG_MODELE * get_mgcg_modele(void)
Definition: mg_cg_assemblage.cpp:57
occ_cg_op_bool_union.h
MG_CG::creer_MG_CG_OP_BOOL_UNION
static MG_CG_OP_BOOL_UNION * creer_MG_CG_OP_BOOL_UNION(MG_CG_MODELE *mgcg_modele, int semantique, MG_CG_FORME *mgcg_forme_entree_1, MG_CG_FORME *mgcg_forme_entree_2)
Definition: mg_cg.cpp:305
mg_cg_forme_volume_tore.h
OCC_CG_OP_BOOL_UNION
Definition: occ_cg_op_bool_union.h:39
MG_CG::creer_MG_CG_FORME_VOLUME_CYLINDRE
static MG_CG_FORME_VOLUME_CYLINDRE * creer_MG_CG_FORME_VOLUME_CYLINDRE(MG_CG_MODELE *mgcg_modele, double extremite_x, double extremite_y, double extremite_z, double direction_x, double direction_y, double direction_z, double rayon, double longueur)
Definition: mg_cg.cpp:243
MG_CG_ASSEMBLAGE::get_mg_sous_geometrie
virtual MG_SOUS_GEOMETRIE * get_mg_sous_geometrie(void)
Definition: mg_cg_assemblage.cpp:77
OCC_CG_FORME_VOLUME_CONE
Definition: occ_cg_forme_volume_cone.h:38
OCC_CG_OP_TRANSF_DECALLAGE
Definition: occ_cg_op_transf_decallage.h:33
OCC_CG_OP_BOOL_FRAGMENT
Definition: occ_cg_op_bool_fragment.h:39
MG_CG::creer_MG_CG_OP_TRANSF_DECALLAGE
static MG_CG_OP_TRANSF_DECALLAGE * creer_MG_CG_OP_TRANSF_DECALLAGE(MG_CG_MODELE *mgcg_modele, int semantique, MG_CG_FORME *mgcg_forme_entree)
Definition: mg_cg.cpp:417
MG_VOLUME
Definition: mg_volume.h:33
MG_GESTIONNAIRE
Definition: mg_gestionnaire.h:57
occ_cg_forme_volume_sphere.h
mg_cg_op_transf_echelle.h
MG_CG::creer_MG_CG_INFO_STRING
static MG_CG_INFO_STRING * creer_MG_CG_INFO_STRING(MG_CONSTRUCTION_GEOMETRIQUE *mg_construction_geometrique, std::string identifiant, std::string valeur)
Definition: mg_cg.cpp:117
MG_CG::creer_MG_CG_OP_TRANSF_ECHELLE
static MG_CG_OP_TRANSF_ECHELLE * creer_MG_CG_OP_TRANSF_ECHELLE(MG_CG_MODELE *mgcg_modele, int semantique, MG_CG_FORME *mgcg_forme_entree)
Definition: mg_cg.cpp:403
occ_cg_op_inclusion_matrice.h
MG_CG_FORME_MULTI_VOLUME
Definition: mg_cg_forme_multi_volume.h:35
OCC_CG_FORME_VOLUME_BOITE
Definition: occ_cg_forme_volume_boite.h:36
OCC_CG_OP_INCLUSION_MATRICE
Definition: occ_cg_op_inclusion_matrice.h:39
MG_CG_MODELE::get_mg_geometrie
virtual MG_GEOMETRIE * get_mg_geometrie(void)
Definition: mg_cg_modele.cpp:98
mg_cg_op_bool_union.h
MG_CG_FORME
Definition: mg_cg_forme.h:41
MG_CG_OP_BOOL_FRAGMENT
Definition: mg_cg_op_bool_fragment.h:36
mg_cg_op_transf_translation.h
MG_CG_OP_BOOL_DIFFERENCE
Definition: mg_cg_op_bool_difference.h:36
OCC_CG_OP_TRANSF_TRANSLATION
Definition: occ_cg_op_transf_translation.h:35
MG_CG::creer_MG_CG_FORME_VOLUME_SPHERE
static MG_CG_FORME_VOLUME_SPHERE * creer_MG_CG_FORME_VOLUME_SPHERE(MG_CG_MODELE *mgcg_modele, double centre_x, double centre_y, double centre_z, double rayon)
Definition: mg_cg.cpp:215
mg_cg_forme_arete.h
MG_GESTIONNAIRE::ajouter_mg_construction
int ajouter_mg_construction(MG_GEOMETRIE *construction)
Definition: mg_gestionnaire.cpp:413
OCC_CG_OP_BOOL_INTERSECTION
Definition: occ_cg_op_bool_intersection.h:39
MG_CG::creer_MG_CG_FORME_VOLUME_TORE
static MG_CG_FORME_VOLUME_TORE * creer_MG_CG_FORME_VOLUME_TORE(MG_CG_MODELE *mgcg_modele, double centre_x, double centre_y, double centre_z, double direction_x, double direction_y, double direction_z, double rayon_cercle, double rayon_tore, double angle_seg=2 *M_PI, double angle_rotation=0.0)
Definition: mg_cg.cpp:271
MG_CG::creer_MG_CG_OP_TRANSF_ROTATION
static MG_CG_OP_TRANSF_ROTATION * creer_MG_CG_OP_TRANSF_ROTATION(MG_CG_MODELE *mgcg_modele, int semantique, MG_CG_FORME *mgcg_forme_entree)
Definition: mg_cg.cpp:375
MG_CG_FORME_VOLUME_SPHERE
Definition: mg_cg_forme_volume_sphere.h:36
MG_CG_FORME_VOLUME_CYLINDRE
Definition: mg_cg_forme_volume_cylindre.h:36
MG_CG_MODELE
Definition: mg_cg_modele.h:41
occ_fonction_v2017.h
MG_CG::creer_MG_CG_FORME_MULTIPLE
static MG_CG_FORME_MULTIPLE * creer_MG_CG_FORME_MULTIPLE(MG_CG_MODELE *mgcg_modele, int provenance, std::vector< MG_ELEMENT_TOPOLOGIQUE * > &vector_mg_element_topologique, std::vector< MG_ELEMENT_COTOPOLOGIQUE * > &vector_mg_element_cotopologique)
Definition: mg_cg.cpp:285
MG_CG_OP_INCLUSION_MATRICE
Definition: mg_cg_op_inclusion_matrice.h:34
MG_CG_ASSEMBLAGE
Definition: mg_cg_assemblage.h:37
MG_CG_OP_TRANSF_DECALLAGE
Definition: mg_cg_op_transf_decallage.h:33
mg_sous_geometrie.h
MG_CG::creer_MG_CG_OP_BOOL_FRAGMENT
static MG_CG_OP_BOOL_FRAGMENT * creer_MG_CG_OP_BOOL_FRAGMENT(MG_CG_MODELE *mgcg_modele, int semantique, MG_CG_FORME *mgcg_forme_entree_1, MG_CG_FORME *mgcg_forme_entree_2)
Definition: mg_cg.cpp:347
occ_cg_op_bool_difference.h
MG_CG::creer_MG_CG_FORME_VOLUME_ELLIPSOIDE
static MG_CG_FORME_VOLUME_ELLIPSOIDE * creer_MG_CG_FORME_VOLUME_ELLIPSOIDE(MG_CG_MODELE *mgcg_modele, double centre_x, double centre_y, double centre_z, double direction_x, double direction_y, double direction_z, double rayon_majeur, double rayon_mineur)
Definition: mg_cg.cpp:229
mg_arete.h
MG_CG_GROUPE_FORME
Definition: mg_cg_groupe_forme.h:30
OCC_CG_OP_TRANSF_ECHELLE
Definition: occ_cg_op_transf_echelle.h:38
occ_cg_forme_volume_ellipsoide.h
MG_CG_INFO_DOUBLE
Definition: mg_cg_info.h:57
mg_cg_forme_volume_cylindre.h
mg_cg_modele.h
MG_CG_FORME_ARETE
Definition: mg_cg_forme_arete.h:36
MG_CG_FORME_VOLUME_BOITE
Definition: mg_cg_forme_volume_boite.h:36
occ_cg_op_bool_fragment.h
MG_CG_FORME_VOLUME_TORE
Definition: mg_cg_forme_volume_tore.h:36
mg_cg_forme_multiple.h
OCC_CG_FORME_VOLUME_ELLIPSOIDE
Definition: occ_cg_forme_volume_ellipsoide.h:38
MG_CG_FORME_VOLUME_ELLIPSOIDE
Definition: mg_cg_forme_volume_ellipsoide.h:36
MG_CG::creer_MG_CG_FORME_MULTI_VOLUME
static MG_CG_FORME_MULTI_VOLUME * creer_MG_CG_FORME_MULTI_VOLUME(MG_CG_MODELE *mgcg_modele, int provenance, std::vector< MG_VOLUME * > &vector_mg_volume)
Definition: mg_cg.cpp:295
mg_cg_assemblage.h
MG_CG::creer_MG_CG_FORME_VOLUME_BOITE
static MG_CG_FORME_VOLUME_BOITE * creer_MG_CG_FORME_VOLUME_BOITE(MG_CG_MODELE *mgcg_modele, double x1, double y1, double z1, double x2, double y2, double z2)
Definition: mg_cg.cpp:201
MG_CG::creer_MG_CG_FORME_ARETE
static MG_CG_FORME_ARETE * creer_MG_CG_FORME_ARETE(MG_CG_MODELE *mgcg_modele, int provenance, MG_ARETE *mg_arete)
Definition: mg_cg.cpp:167
MG_CG::creer_MG_CG_ASSEMBLAGE
static MG_CG_ASSEMBLAGE * creer_MG_CG_ASSEMBLAGE(MG_CG_MODELE *mgcg_modele, std::string nom_mgcg_assemblage)
Definition: mg_cg.cpp:97
MG_CG_OP_TRANSF_TRANSLATION
Definition: mg_cg_op_transf_translation.h:33
MG_CG_INFO_VCT_DOUBLE
Definition: mg_cg_info.h:71
mg_cg_info.h
MG_CG::creer_MG_CG_OP_INCLUSION_MATRICE
static MG_CG_OP_INCLUSION_MATRICE * creer_MG_CG_OP_INCLUSION_MATRICE(MG_CG_MODELE *mgcg_modele, int semantique, MG_CG_FORME *mgcg_forme_inclusion_entree, MG_CG_FORME *mgcg_forme_matrice_entree)
Definition: mg_cg.cpp:361
MG_CG_FORME_MULTIPLE
Definition: mg_cg_forme_multiple.h:39
occ_cg_forme_volume_tore.h
OCC_CG_FORME_VOLUME_CYLINDRE
Definition: occ_cg_forme_volume_cylindre.h:38
MG_CG_OP_TRANSF_ECHELLE
Definition: mg_cg_op_transf_echelle.h:33
occ_cg_op_transf_decallage.h
occ_cg_op_transf_translation.h
MG_SOUS_GEOMETRIE
Definition: mg_sous_geometrie.h:50
MG_CG_OP_BOOL_UNION
Definition: mg_cg_op_bool_union.h:36
MG_CG_OP_BOOL_INTERSECTION
Definition: mg_cg_op_bool_intersection.h:36
MG_CG::creer_MG_CG_GROUPE_FORME
static MG_CG_GROUPE_FORME * creer_MG_CG_GROUPE_FORME(MG_CG_MODELE *mgcg_modele, std::string nom)
Definition: mg_cg.cpp:107
MG_GEOMETRIE
Definition: mg_geometrie.h:84
MG_CG::creer_MG_CG_FORME_VOLUME_CONE
static MG_CG_FORME_VOLUME_CONE * creer_MG_CG_FORME_VOLUME_CONE(MG_CG_MODELE *mgcg_modele, double extremite_x, double extremite_y, double extremite_z, double direction_x, double direction_y, double direction_z, double rayon, double longueur)
Definition: mg_cg.cpp:257
OCC_CG_FORME_ARETE_DROITE
Definition: occ_cg_forme_arete_droite.h:38
MG_CG_FORME_ARETE_DROITE
Definition: mg_cg_forme_arete_droite.h:36
MG_CG_OP_TRANSF_ROTATION
Definition: mg_cg_op_transf_rotation.h:34
MG_GEOMETRIE::change_est_construction
void change_est_construction(bool val)
Definition: mg_geometrie.cpp:2712
MG_ARETE
Definition: mg_arete.h:36
OCC_FONCTION_V2017
Definition: occ_fonction_v2017.h:104
occ_fonction.h
mg_cg_op_bool_difference.h
MG_CG::creer_MG_CG_INFO_DOUBLE
static MG_CG_INFO_DOUBLE * creer_MG_CG_INFO_DOUBLE(MG_CONSTRUCTION_GEOMETRIQUE *mg_construction_geometrique, std::string identifiant, double valeur)
Definition: mg_cg.cpp:127
OCC_FONCTION
Definition: occ_fonction.h:40
MG_CG_FORME_VOLUME
Definition: mg_cg_forme_volume.h:36
MG_CG_INFO_STRING
Definition: mg_cg_info.h:43
MG_CG::creer_MG_CG_FORME_ARETE_DROITE
static MG_CG_FORME_ARETE_DROITE * creer_MG_CG_FORME_ARETE_DROITE(MG_CG_MODELE *mgcg_modele, double x1, double y1, double z1, double x2, double y2, double z2)
Definition: mg_cg.cpp:177
MG_CG::exporter_fichier_brep
static int exporter_fichier_brep(char *nom, MG_CG_MODELE *mgcg_modele)
Definition: mg_cg.cpp:432
OCC_CG_OP_BOOL_DIFFERENCE
Definition: occ_cg_op_bool_difference.h:36
OCC_CG_OP_TRANSF_ROTATION
Definition: occ_cg_op_transf_rotation.h:37
MG_CG::creer_MG_CG_OP_BOOL_INTERSECTION
static MG_CG_OP_BOOL_INTERSECTION * creer_MG_CG_OP_BOOL_INTERSECTION(MG_CG_MODELE *mgcg_modele, int semantique, MG_CG_FORME *mgcg_forme_entree_1, MG_CG_FORME *mgcg_forme_entree_2)
Definition: mg_cg.cpp:333
MG_GEOMETRIE::get_occ_fonction
class OCC_FONCTION & get_occ_fonction(void)
Definition: mg_geometrie.cpp:2701
OCC_FONCTION::get_version
virtual std::string get_version(void)
Definition: occ_fonction.cpp:88
MG_CG::creer_MG_CG_OP_BOOL_DIFFERENCE
static MG_CG_OP_BOOL_DIFFERENCE * creer_MG_CG_OP_BOOL_DIFFERENCE(MG_CG_MODELE *mgcg_modele, int semantique, MG_CG_FORME *mgcg_forme_entree_1, MG_CG_FORME *mgcg_forme_entree_2)
Definition: mg_cg.cpp:319
mg_volume.h
occ_cg_forme_arete_droite.h