MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mstruct_analyse_propriete_massique.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 //####// mstruct_analyse_propriete_massique.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:57 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
23 #include "mstruct_definition.h"
24 #include "mg_cg_groupe_forme.h"
25 #include "mg_cg_modele.h"
26 #include "mg_cg_assemblage.h"
27 #include "mstruct_ves.h"
28 #include "mg_cg_forme_volume.h"
30 #include "ot_geometrie.h"
32 {
33 }
34 
36  std::string identifiant,
37  std::string nom_groupe_forme): MSTRUCT_ANALYSE(ves,identifiant,nom_groupe_forme)
38 {
39  m_centre_masse[0]=0.0;
40  m_centre_masse[1]=0.0;
41  m_centre_masse[2]=0.0;
42  m_Ixyz[0]=0.0;
43  m_Ixyz[1]=0.0;
44  m_Ixyz[2]=0.0;
45  for(int i=0;i<6;i++) m_I[i]=0.0;
46 }
47 
49 {
50 }
51 
53 {
54  return m_centre_masse;
55 }
56 
58 {
59  return m_Ixyz;
60 }
61 
63 {
64  return m_I;
65 }
66 
68 {
70 }
71 
73 {
74  MG_CG_GROUPE_FORME* groupe_forme=NULL;
76  std::vector<MG_VOLUME*> vector_volume;
77  if(groupe_forme!=NULL)
78  {
79  std::map<long,MG_CG_FORME*>::iterator it_forme;
80  for(MG_CG_FORME* forme=groupe_forme->get_premiere_mgcg_forme(it_forme);forme!=NULL;forme=groupe_forme->get_suivante_mgcg_forme(it_forme))
81  {
82  if(forme->get_type_forme()==MG_CG_FORME::TYPE_FORME::VOLUME)
83  {
84  MG_CG_FORME_VOLUME* forme_volume = (MG_CG_FORME_VOLUME*)forme;
85  vector_volume.push_back(forme_volume->get_mg_volume());
86  }
87  else if(forme->get_type_forme()==MG_CG_FORME::TYPE_FORME::MULTI_VOLUME)
88  {
89  MG_CG_FORME_MULTI_VOLUME* forme_multi_volume = (MG_CG_FORME_MULTI_VOLUME*)forme;
90  std::map<long,MG_VOLUME*>::iterator it_volume;
91  for(MG_VOLUME* volume=forme_multi_volume->get_premier_mg_volume(it_volume);volume!=NULL;volume=forme_multi_volume->get_suivant_mg_volume(it_volume))
92  {
93  vector_volume.push_back(volume);
94  }
95  }
96  }
97  }
98  else
99  {
100  std::map<long,MG_CG_FORME*>::iterator it_forme;
102  for(MG_CG_FORME*forme=mgcg_ass->get_premiere_mgcg_forme(it_forme);forme!=NULL;forme=mgcg_ass->get_suivante_mgcg_forme(it_forme))
103  {
104  if(forme->get_type_forme()==MG_CG_FORME::TYPE_FORME::VOLUME)
105  {
106  MG_CG_FORME_VOLUME* forme_volume = (MG_CG_FORME_VOLUME*)forme;
107  vector_volume.push_back(forme_volume->get_mg_volume());
108  }
109  else if(forme->get_type_forme()==MG_CG_FORME::TYPE_FORME::MULTI_VOLUME)
110  {
111  MG_CG_FORME_MULTI_VOLUME* forme_multi_volume = (MG_CG_FORME_MULTI_VOLUME*)forme;
112  std::map<long,MG_VOLUME*>::iterator it_volume;
113  for(MG_VOLUME* volume=forme_multi_volume->get_premier_mg_volume(it_volume);volume!=NULL;volume=forme_multi_volume->get_suivant_mg_volume(it_volume))
114  {
115  vector_volume.push_back(volume);
116  }
117  }
118  }
119  }
121 }
122 
123 void MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE::exporter(std::ofstream& ofstrm, long i, bool avec_entete, bool avec_graph, char* prefix_graph)
124 {
125  if(avec_entete) ofstrm << "#(1) CentreDeMasse(X(2),Y(3),Z(4)) MomentsInertie(X(5),Y(6),Z(7)) MomentsInertie(XX(8),YY(9),ZZ(10),XY(11),YZ(12),XZ(13))" << std::endl;
126  ofstrm << i << " "
127  << m_centre_masse[0] << " "
128  << m_centre_masse[1] << " "
129  << m_centre_masse[2] << " "
130  << m_Ixyz[0] << " "
131  << m_Ixyz[1] << " "
132  << m_Ixyz[2] << " "
133  << m_I[0] << " "
134  << m_I[1] << " "
135  << m_I[2] << " "
136  << m_I[3] << " "
137  << m_I[4] << " "
138  << m_I[5] << " " << std::endl;
139 }
140 
142 {
143  long type_analyse=get_type();
144  ofstrm.write((char*)&type_analyse,sizeof(long));
146  ofstrm.write((char*)&m_centre_masse[0],sizeof(double));
147  ofstrm.write((char*)&m_centre_masse[1],sizeof(double));
148  ofstrm.write((char*)&m_centre_masse[2],sizeof(double));
149  ofstrm.write((char*)&m_Ixyz[0],sizeof(double));
150  ofstrm.write((char*)&m_Ixyz[1],sizeof(double));
151  ofstrm.write((char*)&m_Ixyz[2],sizeof(double));
152  ofstrm.write((char*)&m_I[0],sizeof(double));
153  ofstrm.write((char*)&m_I[1],sizeof(double));
154  ofstrm.write((char*)&m_I[2],sizeof(double));
155  ofstrm.write((char*)&m_I[3],sizeof(double));
156  ofstrm.write((char*)&m_I[4],sizeof(double));
157  ofstrm.write((char*)&m_I[5],sizeof(double));
158 }
159 
161 {
162  MSTRUCT_ANALYSE::ouvrir(ifstrm);
163  ifstrm.read((char*)&m_centre_masse[0],sizeof(long));
164  ifstrm.read((char*)&m_centre_masse[1],sizeof(double));
165  ifstrm.read((char*)&m_centre_masse[2],sizeof(double));
166  ifstrm.read((char*)&m_Ixyz[0],sizeof(double));
167  ifstrm.read((char*)&m_Ixyz[1],sizeof(double));
168  ifstrm.read((char*)&m_Ixyz[2],sizeof(double));
169  ifstrm.read((char*)&m_I[0],sizeof(double));
170  ifstrm.read((char*)&m_I[1],sizeof(double));
171  ifstrm.read((char*)&m_I[2],sizeof(double));
172  ifstrm.read((char*)&m_I[3],sizeof(double));
173  ifstrm.read((char*)&m_I[4],sizeof(double));
174  ifstrm.read((char*)&m_I[5],sizeof(double));
175 }
176 
178 {
179 }
mg_cg_forme_multi_volume.h
ot_geometrie.h
MG_CG_GROUPE_FORME::get_premiere_mgcg_forme
MG_CG_FORME * get_premiere_mgcg_forme(std::map< long, MG_CG_FORME * >::iterator &it)
Definition: mg_cg_groupe_forme.cpp:68
MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE::enregistrer
virtual void enregistrer(std::ofstream &ofstrm)
Definition: mstruct_analyse_propriete_massique.cpp:141
mstruct_analyse_propriete_massique.h
mg_cg_forme_volume.h
mstruct_ves.h
MSTRUCT_ANALYSE::enregistrer
virtual void enregistrer(std::ofstream &ofstrm)
Definition: mstruct_analyse.cpp:100
mg_cg_groupe_forme.h
MG_CG_ASSEMBLAGE::get_suivante_mgcg_forme
virtual MG_CG_FORME * get_suivante_mgcg_forme(std::map< long, MG_CG_FORME * >::iterator &it)
Definition: mg_cg_assemblage.cpp:104
MG_CG_MODELE::get_mgcg_groupe_forme
MG_CG_GROUPE_FORME * get_mgcg_groupe_forme(std::string nom)
Definition: mg_cg_modele.cpp:504
MG_CG_FORME_MULTI_VOLUME::get_suivant_mg_volume
virtual MG_VOLUME * get_suivant_mg_volume(std::map< long, MG_VOLUME * >::iterator &it)
Definition: mg_cg_forme_multi_volume.cpp:138
MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE::executer
virtual void executer(void)
Definition: mstruct_analyse_propriete_massique.cpp:72
MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE::get_I
virtual double * get_I(void)
Definition: mstruct_analyse_propriete_massique.cpp:62
MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE::get_type
virtual long get_type(void)
Definition: mstruct_analyse_propriete_massique.cpp:67
MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE::ouvrir
virtual void ouvrir(std::ifstream &ifstrm)
Definition: mstruct_analyse_propriete_massique.cpp:160
MG_VOLUME
Definition: mg_volume.h:33
MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE::m_Ixyz
double m_Ixyz[3]
Definition: mstruct_analyse_propriete_massique.h:49
MG_CG_FORME_MULTI_VOLUME
Definition: mg_cg_forme_multi_volume.h:35
MSTRUCT_ANALYSE::m_nom_groupe_forme
std::string m_nom_groupe_forme
Definition: mstruct_analyse.h:54
MSTRUCT_VES::get_mgcg_assemblage
virtual MG_CG_ASSEMBLAGE * get_mgcg_assemblage(void)
Definition: mstruct_ves.cpp:158
MSTRUCT_VES::get_mgcg_modele
virtual MG_CG_MODELE * get_mgcg_modele(void)
Definition: mstruct_ves.cpp:170
MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE::get_Ixyz
virtual double * get_Ixyz(void)
Definition: mstruct_analyse_propriete_massique.cpp:57
MG_CG_FORME_MULTI_VOLUME::get_premier_mg_volume
virtual MG_VOLUME * get_premier_mg_volume(std::map< long, MG_VOLUME * >::iterator &it)
Definition: mg_cg_forme_multi_volume.cpp:131
MG_CG_ASSEMBLAGE::get_premiere_mgcg_forme
virtual MG_CG_FORME * get_premiere_mgcg_forme(std::map< long, MG_CG_FORME * >::iterator &it)
Definition: mg_cg_assemblage.cpp:96
MSTRUCT_ANALYSE::m_ves
MSTRUCT_VES * m_ves
Definition: mstruct_analyse.h:55
MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE::~MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE
~MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE(void)
Definition: mstruct_analyse_propriete_massique.cpp:48
MG_CG_FORME
Definition: mg_cg_forme.h:41
MSTRUCT_ANALYSE
Definition: mstruct_analyse.h:30
MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE::MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE
MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE(void)
Definition: mstruct_analyse_propriete_massique.cpp:31
MG_CG_FORME_VOLUME::get_mg_volume
virtual MG_VOLUME * get_mg_volume(void)
Definition: mg_cg_forme_volume.cpp:68
MG_CG_ASSEMBLAGE
Definition: mg_cg_assemblage.h:37
MSTRUCT::PROPRIETE_MASSIQUE
@ PROPRIETE_MASSIQUE
Definition: mstruct_definition.h:61
MG_CG_GROUPE_FORME::get_suivante_mgcg_forme
MG_CG_FORME * get_suivante_mgcg_forme(std::map< long, MG_CG_FORME * >::iterator &it)
Definition: mg_cg_groupe_forme.cpp:76
mstruct_definition.h
MSTRUCT_VES
Definition: mstruct_ves.h:45
MG_CG_GROUPE_FORME
Definition: mg_cg_groupe_forme.h:30
mg_cg_modele.h
OT_GEOMETRIE::get_propriete_massique
static void get_propriete_massique(std::vector< MG_VOLUME * > &vector_volume, double *centre_masse, double *Ixyz, double *I, double eps=0.00001)
Definition: ot_geometrie.cpp:492
mg_cg_assemblage.h
MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE::get_centre_masse
virtual double * get_centre_masse(void)
Definition: mstruct_analyse_propriete_massique.cpp:52
MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE::affiche_contenu
virtual void affiche_contenu(fonction_affiche *fonc)
Definition: mstruct_analyse_propriete_massique.cpp:177
fonction_affiche
void fonction_affiche(char *)
Definition: fct_taille.h:28
MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE::exporter
virtual void exporter(std::ofstream &ofstrm, long i, bool avec_entete=false, bool avec_graph=false, char *prefix_graph=(char *)"")
Definition: mstruct_analyse_propriete_massique.cpp:123
MSTRUCT_ANALYSE::ouvrir
virtual void ouvrir(std::ifstream &ifstrm)
Definition: mstruct_analyse.cpp:131
MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE::m_centre_masse
double m_centre_masse[3]
Definition: mstruct_analyse_propriete_massique.h:48
MSTRUCT_ANALYSE_PROPRIETE_MASSIQUE::m_I
double m_I[6]
Definition: mstruct_analyse_propriete_massique.h:50
MG_CG_FORME_VOLUME
Definition: mg_cg_forme_volume.h:36