MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
occ_cg_op_transf_decallage.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 //####// occ_cg_op_transf_decallage.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:54 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #ifdef ALL_OCC
24 #include "mg_definition.h"
25 #include "occ_ot_cg.h"
26 #include "mg_cg_modele.h"
27 #include "mg_geometrie.h"
28 #include "mg_cg_forme.h"
29 #include <gp_Trsf.hxx>
30 #include <BRep_Builder.hxx>
31 #include <gp_Vec.hxx>
32 #include <BRepOffsetAPI_MakeOffsetShape.hxx>
33 #include <BRepBuilderAPI_MakeSolid.hxx>
34 #include <TopoDS.hxx>
35 #include <BRepTools.hxx>
36 #include <TopAbs_ShapeEnum.hxx>
37 
39  int semantique,
40  MG_CG_FORME* mgcg_forme_entree): MG_CG_OP_TRANSF_DECALLAGE(mgcg_modele,semantique, mgcg_forme_entree)
41 {
42 }
43 
45  int semantique,
46  int etat,
47  unsigned long num,
48  MG_CG_FORME* mgcg_forme_entree,
49  long id_mgcg_forme_sortie): MG_CG_OP_TRANSF_DECALLAGE(mgcg_modele,semantique,etat,num,mgcg_forme_entree,id_mgcg_forme_sortie)
50 {
51 }
52 
54 {
55 }
56 
58 {
59 }
60 
61 int OCC_CG_OP_TRANSF_DECALLAGE::construire(bool fusionner_entite_similaire, double precision, bool importer_triangulation, double epsilon_triangulation)
62 {
63  if(m_mgcg_modele==NULL)
64  {
65  std::cout << "*** ERREUR : OCC_CG_OP_TRANSF_ECHELLE::construire_forme -> MG_CG_MODELE NULL ***" << std::endl;
66  return FAIL;
67  }
68  TopTools_ListOfShape list_of_shape;
70  BRep_Builder brep_builder;
71  TopoDS_Compound Compound_forme_entree;
72  brep_builder.MakeCompound(Compound_forme_entree);
73  TopTools_ListOfShape::Iterator it_shape;
74  for(it_shape.Init(list_of_shape);it_shape.More();it_shape.Next())
75  {
76  brep_builder.Add(Compound_forme_entree,it_shape.Value());
77  }
78  BRepOffsetAPI_MakeOffsetShape make_offset;
79  try
80  {
81  make_offset=BRepOffsetAPI_MakeOffsetShape(Compound_forme_entree,m_decallage,precision);
82 
83  }
84  catch (int e)
85  {
86  return FAIL;
87  }
88  make_offset.Build();
89  if(!make_offset.IsDone())
90  {
91  std::cout << "*** ERREUR : OCC_CG_OP_TRANSF_DECALLAGE::construire_forme -> ECHEC de BRepOffsetAPI_MakeOffsetShape ***" << std::endl;
92  return FAIL;
93  }
94  TopoDS_Shape shape_resultat = make_offset.Shape();
95  if(shape_resultat.IsNull()) return FAIL;
96  if(shape_resultat.ShapeType()!=TopAbs_ShapeEnum::TopAbs_SHELL) return FAIL;
97  TopoDS_Solid solid=BRepBuilderAPI_MakeSolid(TopoDS::Shell(shape_resultat));
98  BRepTools::Write(solid,(char*)"resultat.brep");
101  solid,
102  occ_fonction,
104  fusionner_entite_similaire,
105  precision,
106  importer_triangulation,
107  epsilon_triangulation);
108  m_mgcg_modele->ajouter_mgcg_forme(forme_resultat);
109  change_mgcg_forme_sortie(forme_resultat);
112  change_etat(MG_CG_OPERATEUR::ETAT_OPERATEUR::CONSTRUIT);
113  return OK;
114 }
115 
117 {
118  if(m_mgcg_modele==NULL)
119  {
120  std::cout << "*** ERREUR : OCC_CG_OP_TRANSF_DECALLAGE::construire_forme -> MG_CG_MODELE NULL ***" << std::endl;
121  return FAIL;
122  }
127 }
128 #endif
virtual void change_mgcg_operateur_parent(MG_CG_OPERATEUR *mgcg_operateur)
Definition: mg_cg_forme.cpp:91
virtual bool get_importer_triangulation(void)
virtual int ajouter_mgcg_forme(MG_CG_FORME *mgcg_forme)
virtual double get_precision(void)
virtual bool get_fusionner_entite_similaire(void)
virtual MG_GEOMETRIE * get_mg_geometrie(void)
virtual void mise_a_jout_lien_mg_element_mgcg_forme(MG_CG_FORME *mgcg_forme)
virtual double get_epsilon_triangulation(void)
virtual int change_mgcg_forme_sortie(MG_CG_FORME *mgcg_forme)
virtual MG_CG_FORME * get_mgcg_forme_entree(void)
virtual MG_CG_FORME * get_mgcg_forme_sortie(void)
MG_CG_MODELE * m_mgcg_modele
virtual void change_etat(int etat_operateur)
class OCC_FONCTION & get_occ_fonction(void)
OCC_CG_OP_TRANSF_DECALLAGE(MG_CG_MODELE *mgcg_modele, int semantique, MG_CG_FORME *mgcg_forme_entree)
static void get_listofTopoDS_Shape(std::map< MG_CG_FORME *, MG_CG_FORME * > *map_forme, TopTools_ListOfShape &listofshape)
Definition: occ_ot_cg.cpp:538
static MG_CG_FORME * creer_MG_CG_FORME(MG_CG_MODELE *mgcg_modele, TopoDS_Shape topods_shape, OCC_FONCTION *occ_fonction, MG_GEOMETRIE *mg_geometrie, bool fusionner_entite_similaire=false, double precision=1e-6, bool importer_triangulation=false, double epsilon_triangulation=1.)
Definition: occ_ot_cg.cpp:34
const int OK
Definition: mg_definition.h:38
const int FAIL
Definition: mg_definition.h:39