MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
acis_import.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 //####// acis_import.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:54 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 
23 
24 #include "gestionversion.h"
25 #ifdef BREP_SAT
26 
27 #include "acis_import.h"
28 #include "acis_surface.h"
29 #include "acis_point.h"
30 #include "acis_courbe.h"
31 
32 #include "sat_attrib.h"
33 #include "sat_body.h"
34 #include "sat_coedge.h"
35 #include "sat_cone.h"
36 #include "sat_edge.h"
37 #include "sat_ellipse.h"
38 #include "sat_face.h"
39 #include "sat_loop.h"
40 #include "sat_lump.h"
41 #include "sat_plane.h"
42 #include "sat_point.h"
43 #include "sat_shell.h"
44 #include "sat_straight.h"
45 #include "sat_subshell.h"
46 #include "sat_transform.h"
47 #include "sat_vertex.h"
48 #include "sat_wire.h"
49 #include "mg_geometrie.h"
50 #include "mg_gestionnaire.h"
51 
53 {
54 }
55 
56 
58 {
59 }
60 
61 
63 {
64  MG_GEOMETRIE *mggeo=new MG_GEOMETRIE((char*)"ACIS",path);
65  gest.ajouter_mg_geometrie(mggeo);
66 
67  long nb_body=mggeo->get_gest_sat().lst_body.get_nb();
68  for (long i=0;i<nb_body;i++)
69  {
70  SAT_BODY* body=mggeo->get_gest_sat().lst_body.get(i);
71  char idori[10];
72  sprintf(idori,"%lu",body->get_id());
73  MG_VOLUME* mgvol=new MG_VOLUME(idori);
74  mggeo->ajouter_mg_volume(mgvol);
75 
76  SAT_LUMP* lump=body->first_lump;
77  while (lump!=NULL)
78  {
79  SAT_SHELL* shell=lump->first_shell;
80  while (shell!=NULL)
81  {
82  MG_COQUILLE* mgcoq=new MG_COQUILLE(mgvol);
83  mggeo->ajouter_mg_coquille(mgcoq,mgvol);
84  SAT_FACE* face=shell->first_face;
85  while (face!=NULL)
86  {
87  SAT_SURFACE* surface=face->surface;
88  MG_SURFACE* mgsurface=trouver(surface);
89  if (mgsurface==NULL)
90  {
91  ACIS_SURFACE* acissurface=new ACIS_SURFACE(surface);
92  mgsurface=acissurface;
93  mggeo->ajouter_mg_surface(mgsurface);
94  relation(surface,mgsurface);
95  }
96  MG_FACE* mgface=trouver(face);
97  if (mgface==NULL)
98  {
99  char idori[10];
100  sprintf(idori,"%lu",face->get_id());
101  mgface=new MG_FACE(idori,mgsurface,face->sense);
102  mggeo->ajouter_mg_face(mgface);
103  relation(face,mgface);
104  }
105  MG_COFACE* mgcoface=mggeo->ajouter_mg_coface(mgface,mgcoq,1);
106  mgcoq->ajouter_mg_coface(mgcoface);
107  SAT_LOOP* loop=face->first_loop;
108  while (loop!=NULL)
109  {
110  MG_BOUCLE* mgboucle=new MG_BOUCLE(mgface);
111  mggeo->ajouter_mg_boucle(mgboucle,mgface);
112  SAT_COEDGE* coedgedepart=loop->first_coedge;
113  SAT_COEDGE* coedge=coedgedepart;
114  do
115  {
116  SAT_EDGE* edge=coedge->edge;
117  SAT_COURBE* courbe=edge->curve;
118  MG_COURBE* mgcourbe=trouver(courbe);
119  if (mgcourbe==NULL)
120  {
121  ACIS_COURBE* aciscourbe=new ACIS_COURBE(courbe);
122  mgcourbe=aciscourbe;
123  mggeo->ajouter_mg_courbe(mgcourbe);
124  relation(courbe,mgcourbe);
125  }
126  SAT_VERTEX* sommet1=edge->start_vertex;
127  SAT_VERTEX* sommet2=edge->end_vertex;
128  MG_SOMMET* mgsom1=trouver(sommet1);
129  if (mgsom1==NULL)
130  {
131  SAT_POINT* point=sommet1->point;
132  ACIS_POINT* acispoint=new ACIS_POINT(point);
133  MG_POINT* mgpoint=acispoint;
134  mggeo->ajouter_mg_point(mgpoint);
135  char idori[10];
136  sprintf(idori,"%lu",sommet1->get_id());
137  mgsom1=new MG_SOMMET(idori,mgpoint);
138  mggeo->ajouter_mg_sommet(mgsom1);
139  relation(sommet1,mgsom1);
140  }
141  MG_SOMMET* mgsom2=trouver(sommet2);
142  if (mgsom2==NULL)
143  {
144  SAT_POINT* point=sommet2->point;
145  ACIS_POINT* acispoint=new ACIS_POINT(point);
146  MG_POINT* mgpoint=acispoint;
147  mggeo->ajouter_mg_point(mgpoint);
148  char idori[10];
149  sprintf(idori,"%lu",sommet2->get_id());
150  mgsom2=new MG_SOMMET(idori,mgpoint);
151  mggeo->ajouter_mg_sommet(mgsom2);
152  relation(sommet2,mgsom2);
153  }
154  MG_ARETE* mgarete=trouver((SAT_EDGE*)edge);
155  if (mgarete==NULL)
156  {
157  int sens;
158  if (edge->sense==1) sens=1;
159  else sens=-1;
160  char idori[10];
161  sprintf(idori,"%lu",edge->get_id());
162  mgarete=new MG_ARETE(idori,mgcourbe,sens);
163  mggeo->ajouter_mg_arete(mgarete);
164  relation((SAT_EDGE*)edge,mgarete);
165  MG_COSOMMET* mgcosom1=mggeo->ajouter_mg_cosommet(mgarete,mgsom1);
166  MG_COSOMMET* mgcosom2=mggeo->ajouter_mg_cosommet(mgarete,mgsom2);
167  mgarete->changer_cosommet1(mgcosom1);
168  mgarete->changer_cosommet2(mgcosom2);
169  }
170  int sens;
171  if (coedge->sense==1) sens=1;
172  else sens=-1;
173  MG_COARETE* mgcoarete=mggeo->ajouter_mg_coarete(mgarete,mgboucle,sens);
174  mgboucle->ajouter_mg_coarete(mgcoarete);
175  coedge=coedge->next_coedge;
176  }
177  while (coedge!=coedgedepart);
178  loop=loop->next_loop;
179  }
180  face=face->next_face;
181  }
182  shell=shell->next_shell;
183  }
184  lump=lump->next_lump;
185  }
186  }
187 
188  return mggeo;
189 }
190 
191 
192 
193 #endif
194 
195 
196 
SAT_COEDGE::sense
int sense
Definition: sat_coedge.h:42
MG_ARETE::changer_cosommet2
virtual void changer_cosommet2(class MG_COSOMMET *cosom)
Definition: mg_arete.cpp:77
ACIS_SURFACE
Definition: acis_surface.h:33
sat_face.h
SAT_VERTEX::point
class SAT_POINT * point
Definition: sat_vertex.h:38
mg_geometrie.h
sat_ellipse.h
MG_BOUCLE
Definition: mg_boucle.h:35
gestionversion.h
MG_SURFACE
Definition: mg_surface.h:31
SAT_EDGE::end_vertex
class SAT_VERTEX * end_vertex
Definition: sat_edge.h:37
SAT_LOOP::first_coedge
class SAT_COEDGE * first_coedge
Definition: sat_loop.h:38
sat_wire.h
acis_point.h
mg_gestionnaire.h
sat_plane.h
MG_GEOMETRIE::ajouter_mg_boucle
virtual int ajouter_mg_boucle(MG_BOUCLE *mgboucle)
Definition: mg_geometrie.cpp:1041
MG_COSOMMET
Definition: mg_cosommet.h:31
MG_COARETE
Definition: mg_coarete.h:31
SAT_SHELL::next_shell
class SAT_SHELL * next_shell
Definition: sat_shell.h:36
MG_GEOMETRIE::ajouter_mg_volume
virtual int ajouter_mg_volume(MG_VOLUME *mgvol)
Definition: mg_geometrie.cpp:1642
ACIS_COURBE
Definition: acis_courbe.h:34
SAT_EDGE::curve
class SAT_COURBE * curve
Definition: sat_edge.h:39
SAT_SHELL::first_face
class SAT_FACE * first_face
Definition: sat_shell.h:38
sat_shell.h
ACIS_IMPORT::importer
class MG_GEOMETRIE * importer(class MG_GESTIONNAIRE &gest, char *path)
Definition: acis_import.cpp:62
MG_BOUCLE::ajouter_mg_coarete
virtual void ajouter_mg_coarete(class MG_COARETE *mgcoarete)
Definition: mg_boucle.cpp:73
SAT_FACE::surface
class SAT_SURFACE * surface
Definition: sat_face.h:40
MG_VOLUME
Definition: mg_volume.h:33
MG_COQUILLE
Definition: mg_coquille.h:34
MG_GESTIONNAIRE
Definition: mg_gestionnaire.h:57
MG_COFACE
Definition: mg_coface.h:33
sat_straight.h
SAT_COEDGE::next_coedge
class SAT_COEDGE * next_coedge
Definition: sat_coedge.h:36
MG_GEOMETRIE::ajouter_mg_sommet
virtual int ajouter_mg_sommet(MG_SOMMET *mgsom)
Definition: mg_geometrie.cpp:497
MG_COURBE
Definition: mg_courbe.h:30
acis_import.h
sat_lump.h
SAT_SHELL
Definition: sat_shell.h:28
SAT_LUMP::next_lump
class SAT_LUMP * next_lump
Definition: sat_lump.h:37
SAT_LUMP
Definition: sat_lump.h:28
MG_GEOMETRIE::ajouter_mg_coquille
virtual int ajouter_mg_coquille(MG_COQUILLE *mgcoq)
Definition: mg_geometrie.cpp:1473
MG_GEOMETRIE::ajouter_mg_coface
virtual int ajouter_mg_coface(MG_COFACE *mgcoface)
Definition: mg_geometrie.cpp:1356
SAT_EDGE::sense
int sense
Definition: sat_edge.h:40
MG_GEOMETRIE::ajouter_mg_cosommet
virtual int ajouter_mg_cosommet(MG_COSOMMET *mgcosom)
Definition: mg_geometrie.cpp:643
sat_point.h
SAT_BODY
Definition: sat_body.h:28
SAT_LOOP::next_loop
class SAT_LOOP * next_loop
Definition: sat_loop.h:37
SAT_FACE::first_loop
class SAT_LOOP * first_loop
Definition: sat_face.h:37
MG_GESTIONNAIRE::ajouter_mg_geometrie
int ajouter_mg_geometrie(MG_GEOMETRIE *mggeo)
Definition: mg_gestionnaire.cpp:306
sat_coedge.h
SAT_GESTIONNAIRE::lst_body
TPL_MAP_ENTITE< class SAT_BODY * > lst_body
Definition: sat_gestionnaire.h:64
TPL_MAP_ENTITE::get_nb
virtual int get_nb(void)
Definition: tpl_map_entite.h:83
SAT_LOOP
Definition: sat_loop.h:29
SAT_POINT
Definition: sat_point.h:30
SAT_FACE
Definition: sat_face.h:28
sat_vertex.h
SAT_LUMP::first_shell
class SAT_SHELL * first_shell
Definition: sat_lump.h:38
SAT_BODY::first_lump
class SAT_LUMP * first_lump
Definition: sat_body.h:36
sat_body.h
sat_edge.h
SAT_COEDGE::edge
class SAT_EDGE * edge
Definition: sat_coedge.h:39
sat_cone.h
ACIS_IMPORT::relation
void relation(class SAT_FACE *ent1, class MG_FACE *ent2)
Definition: acis_import.h:47
MG_GEOMETRIE::get_gest_sat
class SAT_GESTIONNAIRE & get_gest_sat(void)
Definition: mg_geometrie.cpp:2688
acis_courbe.h
MG_POINT
Definition: mg_point.h:33
SAT_IDENTIFICATEUR::get_id
unsigned long get_id()
Definition: sat_identificateur.cpp:54
sat_attrib.h
sat_loop.h
MG_GEOMETRIE::ajouter_mg_courbe
virtual int ajouter_mg_courbe(MG_COURBE *mgcrb)
Definition: mg_geometrie.cpp:251
SAT_SURFACE
Definition: sat_surface.h:29
MG_GEOMETRIE::ajouter_mg_face
virtual int ajouter_mg_face(MG_FACE *mgface)
Definition: mg_geometrie.cpp:1210
sat_subshell.h
MG_GEOMETRIE::ajouter_mg_coarete
virtual int ajouter_mg_coarete(MG_COARETE *mgcoarete)
Definition: mg_geometrie.cpp:925
ACIS_POINT
Definition: acis_point.h:32
SAT_COEDGE
Definition: sat_coedge.h:28
MG_GEOMETRIE::ajouter_mg_arete
virtual int ajouter_mg_arete(MG_ARETE *mgarete)
Definition: mg_geometrie.cpp:759
MG_GEOMETRIE::ajouter_mg_point
virtual int ajouter_mg_point(MG_POINT *mgpt)
Definition: mg_geometrie.cpp:137
MG_COQUILLE::ajouter_mg_coface
virtual void ajouter_mg_coface(class MG_COFACE *mgcoface)
Definition: mg_coquille.cpp:71
MG_ARETE::changer_cosommet1
virtual void changer_cosommet1(class MG_COSOMMET *cosom)
Definition: mg_arete.cpp:73
TPL_MAP_ENTITE::get
virtual X get(int num)
Definition: tpl_map_entite.h:89
sat_transform.h
ACIS_IMPORT::~ACIS_IMPORT
virtual ~ACIS_IMPORT()
Definition: acis_import.cpp:57
MG_GEOMETRIE
Definition: mg_geometrie.h:84
ACIS_IMPORT::ACIS_IMPORT
ACIS_IMPORT()
Definition: acis_import.cpp:52
SAT_FACE::next_face
class SAT_FACE * next_face
Definition: sat_face.h:36
acis_surface.h
MG_ARETE
Definition: mg_arete.h:36
MG_FACE
Definition: mg_face.h:34
SAT_FACE::sense
int sense
Definition: sat_face.h:41
SAT_EDGE
Definition: sat_edge.h:28
SAT_COURBE
Definition: sat_courbe.h:33
MG_SOMMET
Definition: mg_sommet.h:35
SAT_VERTEX
Definition: sat_vertex.h:29
MG_GEOMETRIE::ajouter_mg_surface
virtual int ajouter_mg_surface(MG_SURFACE *mgsrf)
Definition: mg_geometrie.cpp:366
ACIS_IMPORT::trouver
MG_FACE * trouver(SAT_FACE *face)
Definition: acis_import.h:78
SAT_EDGE::start_vertex
class SAT_VERTEX * start_vertex
Definition: sat_edge.h:36