ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/mtu/src/CAD4FE_MCFace.cpp
Revision: 1158
Committed: Thu Jun 13 22:18:49 2024 UTC (11 months, 1 week ago) by francois
File size: 5115 byte(s)
Log Message:
compatibilité Ubuntu 22.04
Suppression des refeences à Windows
Ajout d'une banière

File Contents

# User Rev Content
1 francois 1158 //####//------------------------------------------------------------
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     //####// CAD4FE_MCFace.cpp
15     //####//
16     //####//------------------------------------------------------------
17     //####//------------------------------------------------------------
18     //####// COPYRIGHT 2000-2024
19     //####// jeu 13 jun 2024 11:58:54 EDT
20     //####//------------------------------------------------------------
21     //####//------------------------------------------------------------
22 foucault 27
23     #pragma hdrstop
24    
25 foucault 569 #include "CAD4FE_MCFace.h"
26     #include "CAD4FE_PolySurface.h"
27     #include "CAD4FE_MCEdge.h"
28     #include "CAD4FE_MCVertex.h"
29 foucault 27 #include "ot_algorithme_geometrique.h"
30     #pragma package(smart_init)
31    
32     #ifdef __BORLANDC__
33     #pragma warn -8012
34     #pragma warn -8037
35     #endif
36    
37     using namespace CAD4FE;
38    
39     MCFace::MCFace(MG_FACE * __mgFace)
40 foucault 569 : MG_FACE (std::string("MC")+std::string(__mgFace->get_idoriginal()), new PolySurface(__mgFace), 1)
41 foucault 27 {
42 foucault 569 time = 0;
43 francois 830 transfert_ccf(*__mgFace);
44 foucault 27 }
45    
46     MCFace::MCFace( MCFace & __src) : MG_FACE(*this)
47     {
48 foucault 569 time = 0;
49 foucault 27 }
50    
51    
52     MCFace::MCFace( std::string & __idOriginal, PolySurface * __polySurface)
53 foucault 569 : MG_FACE(std::string(__idOriginal), __polySurface, 1)
54     {
55     time = 0;
56 foucault 27 }
57    
58    
59     MCFace::MCFace(MCFace & __a, MCFace & __b)
60 foucault 569 : MG_FACE(std::string(__a.get_idoriginal())+std::string("+")+std::string(__b.get_idoriginal()), new PolySurface(), 1)
61     {
62     time = 0;
63 foucault 27
64 foucault 569 GetPolySurface()->Merge(*__a.GetPolySurface());
65     GetPolySurface()->Merge(*__b.GetPolySurface());
66    
67     _CopyMeshLink (__a);
68     _CopyMeshLink (__b);
69    
70 francois 830 transfert_ccf(__a);
71     transfert_ccf(__b);
72 foucault 27 }
73    
74     void MCFace::_CopyMeshLink( MCFace & __mcFace)
75     {
76     unsigned i,j,k;
77    
78     //this->get_lien_maillage()->ajouter(*(__mcFace.get_lien_maillage()));
79     TPL_SET<MG_ELEMENT_MAILLAGE*> * lien_maillage = __mcFace.get_lien_maillage();
80     TPL_SET<MG_ELEMENT_MAILLAGE*>::ITERATEUR it;
81     for (MG_ELEMENT_MAILLAGE* element = lien_maillage->get_premier(it); element != NULL; element = lien_maillage->get_suivant(it))
82     {
83 foucault 569 element->change_lien_topologie2(this);
84     this->get_lien_maillage()->ajouter(element);
85 foucault 27
86 foucault 569 MG_TRIANGLE * triangle = (MG_TRIANGLE *)element;
87     MG_SEGMENT * segs[3]={0,0,0};
88     segs[0] = triangle->get_segment1();
89     segs[1] = triangle->get_segment2();
90     segs[2] = triangle->get_segment3();
91     MG_NOEUD * nodes[3]={0,0,0};
92     nodes[0] = triangle->get_noeud1();
93     nodes[1] = triangle->get_noeud2();
94     nodes[2] = triangle->get_noeud3();
95     for (i=0; i<3; i++)
96 foucault 27 {
97 foucault 569 if (!segs[i]->get_lien_topologie() || segs[i]->get_lien_topologie()->get_dimension() >= 2)
98     {
99     segs[i]->change_lien_topologie2(this);
100     }
101     if (!nodes[i]->get_lien_topologie() || nodes[i]->get_lien_topologie()->get_dimension() >= 2)
102     {
103     nodes[i]->change_lien_topologie2(this);
104     }
105 foucault 27 }
106     }
107     }
108    
109     MCFace::~MCFace()
110     {
111     }
112    
113     PolySurface * MCFace::GetPolySurface ()
114     {
115 foucault 569 return (PolySurface*)get_surface();
116 foucault 27 }
117    
118 francois 763 void MCFace::enregistrer(std::ostream& o,double version)
119 foucault 27 {
120 foucault 569 o << "%" << get_id() << "=CAD4FE_MCFACE("<< get_idoriginal() << ",$" << get_surface()->get_id() << ",(";
121     for (unsigned int i=0;i<get_nb_mg_boucle();i++)
122     {
123     o << "$" << get_mg_boucle(i)->get_id();
124     if (i!=get_nb_mg_boucle()-1) o << ","; else o << ")";
125     }
126     int nb=get_nb_ccf();
127     o << "," << get_orientation() << "," << nb;
128     if (nb!=0)
129     {
130 foucault 27 o << ",(";
131     for (int i=0;i<nb;i++)
132 foucault 569 {
133     char nom[3];
134     get_type_ccf(i,nom);
135     o << "(" << nom << "," << get_valeur_ccf(i) << ")";
136     if (i!=nb-1) o << "," ;
137     }
138     o << ")";
139 francois 283 }
140 foucault 569 o << ");" << std::endl;
141 foucault 27 }
142    
143     void MCFace::calcul_normale_unitaire(MG_SOMMET *v, double __n[3], int * __nbRefFace)
144     {
145     GetPolySurface()->calcul_normale_unitaire(v,__n,__nbRefFace);
146     }
147    
148     void MCFace::calcul_normale_unitaire(MCVertex * __mcVertex, double __n[3], int *__nbRefFace)
149     {
150     GetPolySurface()->calcul_normale_unitaire(__mcVertex,__n,__nbRefFace);
151     }
152    
153     void MCFace::calcul_normale_unitaire(const std::map<MG_FACE *, OT_VECTEUR_3D > & __tabRefFaceUV, double __n[3], int *__nbRefFace)
154     {
155     GetPolySurface()->calcul_normale_unitaire(__tabRefFaceUV,__n,__nbRefFace);
156     }
157