MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mstruct_generateur.h
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 //####// mstruct_generateur.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:57 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #ifndef _MSTRUCT_GENERATEUR_
23 #define _MSTRUCT_GENERATEUR_
24 class MG_GESTIONNAIRE;
25 class MG_CG_MODELE;
26 #include "mstruct_ves.h"
27 #include "tpl_grille.h"
28 #include "mg_cg_groupe_forme.h"
29 #include "mg_cg_forme_volume.h"
31 
32 
33 typedef void fonction_affiche(char *);
35 {
36 public:
37 
38  MSTRUCT_GENERATEUR(MG_GESTIONNAIRE* mg_gestionnaire,char* nom_mgcg_modele);
40  ~MSTRUCT_GENERATEUR(void);
41  virtual MG_GESTIONNAIRE* get_mg_gestionnaire(void);
42  virtual MG_CG_MODELE* get_mgcg_modele(void);
43  virtual void change_mgcg_modele(MG_CG_MODELE* mgcg_modele);
44  virtual int construire(MSTRUCT_VES* ves)=0;
45  virtual int get_type(void)=0;
46  void change_boite3d_ves(BOITE_3D boite3d_ves);
47  void change_boite3d_distribution(BOITE_3D boite3d_distribution);
48  void change_intersection_bords_ves(bool intersection_bords_ves);
49  void change_angle_min(double angle_min);
50  void change_longueur_min(double longueur_min);
51  void change_aire_min(double aire_min);
52  void change_volume_min(double volume_min);
53  void change_distance_inter_volume_min(double distance_min);
54  void change_nb_pas_grille(int nb_pas_grille);
55  void change_nb_pas_echantillonage(int nb_pas_echantillonnage);
56  void change_precision(double precision);
57  double get_fraction_volumique_groupe_forme(std::string nom);
59  void affiche(char *message);
60 protected:
61 
62  int position_relative_inclusion_ves(MG_VOLUME* inclusion,bool &plan_x0yz,bool &plan_x1yz,bool &plan_xy0z,bool &plan_xy1z,bool &plan_xyz0,bool &plan_xyz1);
64  bool longueur_acceptable(MG_ARETE* mgarete);
65  bool aire_acceptable(MG_FACE* mgface);
66  bool volume_acceptable(MG_VOLUME* mgvolume);
69  bool configuration_acceptable(MG_CG_FORME_VOLUME* forme_volume_inclusion,MG_CG_FORME* forme_matrice=NULL);
70  bool positionnement_acceptable(MG_VOLUME* inclusion);
71  bool insertion_inclusion(MG_CG_FORME* forme_inclusion,
72  double fraction_volumique_cible,
73  double eps_fra_vol,
74  double &fraction_volumique_actuelle,
75  std::vector<MG_CG_FORME*> &vector_inclusion_genere,
76  int &position_relative,
77  std::vector<double> *vector_epaisseur_couche=NULL,
78  bool porosite=false);
79 
80  bool insertion_inclusion(MG_CG_FORME* forme_inclusion,
81  double &fraction_volumique_actuelle,
82  std::vector<MG_CG_FORME*> &vector_inclusion_genere,
83  int &position_relative);
84 
85 
86 
87  void echec_insertion_inclusion(std::vector<MG_CG_FORME*> &vector_forme,std::vector<MG_CG_OPERATEUR*> &vector_operateur);
88  int faces_correspondantes(MG_VOLUME* volume1, MG_VOLUME* volume2,double decallage,int nb_pas=32,double precision=1.0e-06);
89  bool lien_topologique_entre(MG_ELEMENT_TOPOLOGIQUE* mg_ele_topo1,MG_ELEMENT_TOPOLOGIQUE* mg_ele_topo2);
90  int configurer_volume_mince(MG_CG_FORME* forme,double epaisseur);
91  int configurer_volume_mince(MG_VOLUME* volume,double epaisseur);
92  void cree_vector_groupe_forme(std::string nom,std::vector<MG_CG_GROUPE_FORME*> &vector_groupe_forme,std::vector<double> *vector_epaisseur_couches=NULL);
93 
99  double m_angle_min;
101  double m_aire_min;
102  double m_volume_min;
106  double m_precision;
108  void initialiser_grille(void);
110  std::vector<MG_CG_GROUPE_FORME*> m_vector_mgcg_groupe_forme_inclusion;
113  double m_nb_pas_x;
114  double m_nb_pas_y;
115  double m_nb_pas_z;
116 
119 };
120 
121 
122 #endif
MSTRUCT_GENERATEUR::change_distance_inter_volume_min
void change_distance_inter_volume_min(double distance_min)
Definition: mstruct_generateur.cpp:143
MSTRUCT_GENERATEUR::MSTRUCT_GENERATEUR
MSTRUCT_GENERATEUR(MG_GESTIONNAIRE *mg_gestionnaire, char *nom_mgcg_modele)
Definition: mstruct_generateur.cpp:37
MSTRUCT_GENERATEUR::change_intersection_bords_ves
void change_intersection_bords_ves(bool intersection_bords_ves)
Definition: mstruct_generateur.cpp:118
MSTRUCT_GENERATEUR::cree_vector_groupe_forme
void cree_vector_groupe_forme(std::string nom, std::vector< MG_CG_GROUPE_FORME * > &vector_groupe_forme, std::vector< double > *vector_epaisseur_couches=NULL)
Definition: mstruct_generateur.cpp:1000
mg_cg_forme_volume_boite.h
MSTRUCT_GENERATEUR::insertion_inclusion
bool insertion_inclusion(MG_CG_FORME *forme_inclusion, double fraction_volumique_cible, double eps_fra_vol, double &fraction_volumique_actuelle, std::vector< MG_CG_FORME * > &vector_inclusion_genere, int &position_relative, std::vector< double > *vector_epaisseur_couche=NULL, bool porosite=false)
Definition: mstruct_generateur.cpp:484
MSTRUCT_GENERATEUR::m_grille_init
bool m_grille_init
Definition: mstruct_generateur.h:107
fonction_affiche
void fonction_affiche(char *)
Definition: mstruct_generateur.h:33
MSTRUCT_GENERATEUR::m_nb_pas_z
double m_nb_pas_z
Definition: mstruct_generateur.h:115
MSTRUCT_GENERATEUR::m_cube_initial
MG_CG_FORME * m_cube_initial
Definition: mstruct_generateur.h:112
MSTRUCT_GENERATEUR::m_boite3d_ves
BOITE_3D m_boite3d_ves
Definition: mstruct_generateur.h:96
MSTRUCT_GENERATEUR::distance_acceptable_bord_ves
bool distance_acceptable_bord_ves(MG_VOLUME *mgvolume)
Definition: mstruct_generateur.cpp:318
mg_cg_forme_volume.h
mstruct_ves.h
MSTRUCT_GENERATEUR::m_distance_min
double m_distance_min
Definition: mstruct_generateur.h:103
MSTRUCT_GENERATEUR::m_longueur_min
double m_longueur_min
Definition: mstruct_generateur.h:100
mg_cg_groupe_forme.h
MSTRUCT_GENERATEUR
Definition: mstruct_generateur.h:34
MSTRUCT_GENERATEUR::aire_acceptable
bool aire_acceptable(MG_FACE *mgface)
Definition: mstruct_generateur.cpp:282
MSTRUCT_GENERATEUR::~MSTRUCT_GENERATEUR
~MSTRUCT_GENERATEUR(void)
Definition: mstruct_generateur.cpp:89
MSTRUCT_GENERATEUR::m_nb_pas_grille
int m_nb_pas_grille
Definition: mstruct_generateur.h:104
MSTRUCT_GENERATEUR::m_mg_gestionnaire
MG_GESTIONNAIRE * m_mg_gestionnaire
Definition: mstruct_generateur.h:94
TPL_GRILLE< MG_VOLUME * >
MSTRUCT_GENERATEUR::configurer_volume_mince
int configurer_volume_mince(MG_CG_FORME *forme, double epaisseur)
Definition: mstruct_generateur.cpp:1026
MSTRUCT_GENERATEUR::m_vector_mgcg_groupe_forme_inclusion
std::vector< MG_CG_GROUPE_FORME * > m_vector_mgcg_groupe_forme_inclusion
Definition: mstruct_generateur.h:110
MSTRUCT_GENERATEUR::affiche
void affiche(char *message)
Definition: mstruct_generateur.cpp:1113
MG_VOLUME
Definition: mg_volume.h:33
MG_GESTIONNAIRE
Definition: mg_gestionnaire.h:57
MSTRUCT_GENERATEUR::get_mg_gestionnaire
virtual MG_GESTIONNAIRE * get_mg_gestionnaire(void)
Definition: mstruct_generateur.cpp:93
MSTRUCT_GENERATEUR::m_intersection_bords_ves
bool m_intersection_bords_ves
Definition: mstruct_generateur.h:98
MSTRUCT_GENERATEUR::m_grille_volume_inclusion
TPL_GRILLE< MG_VOLUME * > m_grille_volume_inclusion
Definition: mstruct_generateur.h:109
MSTRUCT_GENERATEUR::initialiser_grille
void initialiser_grille(void)
Definition: mstruct_generateur.cpp:185
MSTRUCT_GENERATEUR::m_nb_pas_echantillonnage
int m_nb_pas_echantillonnage
Definition: mstruct_generateur.h:105
MSTRUCT_GENERATEUR::m_angle_min
double m_angle_min
Definition: mstruct_generateur.h:99
MSTRUCT_GENERATEUR::construire
virtual int construire(MSTRUCT_VES *ves)=0
MG_ELEMENT_TOPOLOGIQUE
Definition: mg_element_topologique.h:51
MSTRUCT_GENERATEUR::affichageactif
int affichageactif
Definition: mstruct_generateur.h:117
MSTRUCT_GENERATEUR::get_fraction_volumique_groupe_forme
double get_fraction_volumique_groupe_forme(std::string nom)
Definition: mstruct_generateur.cpp:163
MSTRUCT_GENERATEUR::change_longueur_min
void change_longueur_min(double longueur_min)
Definition: mstruct_generateur.cpp:128
MSTRUCT_GENERATEUR::change_nb_pas_echantillonage
void change_nb_pas_echantillonage(int nb_pas_echantillonnage)
Definition: mstruct_generateur.cpp:153
MSTRUCT_GENERATEUR::change_nb_pas_grille
void change_nb_pas_grille(int nb_pas_grille)
Definition: mstruct_generateur.cpp:148
MSTRUCT_GENERATEUR::m_boite3d_distribution
BOITE_3D m_boite3d_distribution
Definition: mstruct_generateur.h:97
MG_CG_FORME
Definition: mg_cg_forme.h:41
MSTRUCT_GENERATEUR::m_nb_pas_y
double m_nb_pas_y
Definition: mstruct_generateur.h:114
MSTRUCT_GENERATEUR::active_affichage
void active_affichage(fonction_affiche *fonc)
Definition: mstruct_generateur.cpp:1107
MSTRUCT_GENERATEUR::change_precision
void change_precision(double precision)
Definition: mstruct_generateur.cpp:158
MSTRUCT_GENERATEUR::volume_intersection_ves_acceptable
bool volume_intersection_ves_acceptable(MG_VOLUME *mgvolume)
Definition: mstruct_generateur.cpp:294
MSTRUCT_GENERATEUR::position_relative_inclusion_ves
int position_relative_inclusion_ves(MG_VOLUME *inclusion, bool &plan_x0yz, bool &plan_x1yz, bool &plan_xy0z, bool &plan_xy1z, bool &plan_xyz0, bool &plan_xyz1)
Definition: mstruct_generateur.cpp:196
MSTRUCT_GENERATEUR::m_precision
double m_precision
Definition: mstruct_generateur.h:106
MSTRUCT_GENERATEUR::change_aire_min
void change_aire_min(double aire_min)
Definition: mstruct_generateur.cpp:133
tpl_grille.h
MG_CG_MODELE
Definition: mg_cg_modele.h:41
MSTRUCT_GENERATEUR::configuration_acceptable
bool configuration_acceptable(MG_CG_FORME_VOLUME *forme_volume_inclusion, MG_CG_FORME *forme_matrice=NULL)
Definition: mstruct_generateur.cpp:331
MSTRUCT_GENERATEUR::m_mgcg_modele
MG_CG_MODELE * m_mgcg_modele
Definition: mstruct_generateur.h:95
MSTRUCT_GENERATEUR::lien_topologique_entre
bool lien_topologique_entre(MG_ELEMENT_TOPOLOGIQUE *mg_ele_topo1, MG_ELEMENT_TOPOLOGIQUE *mg_ele_topo2)
Definition: mstruct_generateur.cpp:986
MSTRUCT_GENERATEUR::longueur_acceptable
bool longueur_acceptable(MG_ARETE *mgarete)
Definition: mstruct_generateur.cpp:276
MSTRUCT_GENERATEUR::m_matrice
MG_CG_FORME * m_matrice
Definition: mstruct_generateur.h:111
MSTRUCT_VES
Definition: mstruct_ves.h:45
MSTRUCT_GENERATEUR::angle_entre_face_acceptable
bool angle_entre_face_acceptable(MG_ARETE *mgarete)
Definition: mstruct_generateur.cpp:229
MSTRUCT_GENERATEUR::faces_correspondantes
int faces_correspondantes(MG_VOLUME *volume1, MG_VOLUME *volume2, double decallage, int nb_pas=32, double precision=1.0e-06)
Definition: mstruct_generateur.cpp:444
MSTRUCT_GENERATEUR::m_nb_pas_x
double m_nb_pas_x
Definition: mstruct_generateur.h:113
MSTRUCT_GENERATEUR::get_mgcg_modele
virtual MG_CG_MODELE * get_mgcg_modele(void)
Definition: mstruct_generateur.cpp:98
MSTRUCT_GENERATEUR::m_aire_min
double m_aire_min
Definition: mstruct_generateur.h:101
MSTRUCT_GENERATEUR::get_type
virtual int get_type(void)=0
MSTRUCT_GENERATEUR::change_boite3d_distribution
void change_boite3d_distribution(BOITE_3D boite3d_distribution)
Definition: mstruct_generateur.cpp:113
MSTRUCT_GENERATEUR::echec_insertion_inclusion
void echec_insertion_inclusion(std::vector< MG_CG_FORME * > &vector_forme, std::vector< MG_CG_OPERATEUR * > &vector_operateur)
Definition: mstruct_generateur.cpp:436
BOITE_3D
Definition: ot_boite_3d.h:27
MSTRUCT_GENERATEUR::m_volume_min
double m_volume_min
Definition: mstruct_generateur.h:102
MSTRUCT_GENERATEUR::positionnement_acceptable
bool positionnement_acceptable(MG_VOLUME *inclusion)
Definition: mstruct_generateur.cpp:965
MG_ARETE
Definition: mg_arete.h:36
MG_FACE
Definition: mg_face.h:34
MSTRUCT_GENERATEUR::fonc_affiche
fonction_affiche * fonc_affiche
Definition: mstruct_generateur.h:118
MSTRUCT_GENERATEUR::change_mgcg_modele
virtual void change_mgcg_modele(MG_CG_MODELE *mgcg_modele)
Definition: mstruct_generateur.cpp:103
MSTRUCT_GENERATEUR::change_boite3d_ves
void change_boite3d_ves(BOITE_3D boite3d_ves)
Definition: mstruct_generateur.cpp:108
MG_CG_FORME_VOLUME
Definition: mg_cg_forme_volume.h:36
MSTRUCT_GENERATEUR::change_angle_min
void change_angle_min(double angle_min)
Definition: mstruct_generateur.cpp:123
MSTRUCT_GENERATEUR::change_volume_min
void change_volume_min(double volume_min)
Definition: mstruct_generateur.cpp:138
MSTRUCT_GENERATEUR::volume_acceptable
bool volume_acceptable(MG_VOLUME *mgvolume)
Definition: mstruct_generateur.cpp:288