ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/geometrie/src/CAD4FE_MCEdge.cpp
Revision: 763
Committed: Wed Dec 2 19:55:53 2015 UTC (9 years, 5 months ago) by francois
File size: 3036 byte(s)
Log Message:
Le fichier MAGiC est maintenant versionné. LA version actuelle est 2.0. L'ancienne version est 1.0.
Tout est transparent pour l'utilisateur. Les vieilles versions sont lisibles mais les nouveaux enregistrements sont dans la version la plus récente.
Changement des conditions aux limites : ajout d'un parametre pour dire si la condition numerique est une valeur ou une formule ou un lien vers une autre entité magic.
Les parametres pour saisir sont maintenant -ccf -ccfi -ccff -ccft -ccfit -ccfft

File Contents

# User Rev Content
1 foucault 27 #pragma hdrstop
2 francois 283
3 foucault 27 #include "gestionversion.h"
4    
5 foucault 569 #include "CAD4FE_MCEdge.h"
6 foucault 27 #include "math.h"
7 foucault 569 #include "CAD4FE_MCVertex.h"
8     #include "CAD4FE_MCFace.h"
9     #include "CAD4FE_PolyCurve.h"
10 foucault 27 #include "ot_algorithme_geometrique.h"
11    
12 francois 283 #include <sstream>
13 foucault 27 #include <string>
14    
15     #ifdef __BORLANDC__
16     #pragma warn -8012
17     #pragma warn -8037
18     #endif
19    
20     using namespace CAD4FE;
21    
22     MCEdge::MCEdge(MG_ARETE * __refEdge)
23 foucault 569 : MG_ARETE(std::string("MC")+std::string(__refEdge->get_idoriginal()), new PolyCurve(__refEdge), 1)
24 foucault 27 {
25 foucault 569 time = 0;
26     copie_ccf(*__refEdge);
27 foucault 27 }
28    
29     MCEdge::MCEdge(std::string __idOriginal, PolyCurve * __polycurve)
30 foucault 569 : MG_ARETE(__idOriginal, (PolyCurve*)__polycurve, 1)
31     {
32     time = 0;
33 foucault 27 }
34    
35     MCEdge::~MCEdge()
36     {
37     }
38    
39     // Warning 1 : the graph node __G1Node MUST have a name
40     // Warning 2 : the graph arc G2Arc(__G1Node) MUST be connected to the adjacent faces of the swEdge
41     MCEdge::MCEdge(std::string __idoriginal, MCEdge & __A, MCEdge & __B)
42 foucault 569 : MG_ARETE(__idoriginal, new PolyCurve(), 1)
43     {
44     time = 0;
45 foucault 27
46 foucault 569 GetPolyCurve()->Merge (*__A.GetPolyCurve());
47     GetPolyCurve()->Merge (*__B.GetPolyCurve());
48     copie_ccf(__A);
49     copie_ccf(__B);
50 foucault 27
51 foucault 569 _CopyMeshLink(__A);
52     _CopyMeshLink(__B);
53     }
54 foucault 27
55     void MCEdge::_CopyMeshLink( MCEdge & __mcEdge)
56     {
57     int i;
58 foucault 569 TPL_SET<MG_ELEMENT_MAILLAGE*> * lien_maillage = __mcEdge.get_lien_maillage();
59     TPL_SET<MG_ELEMENT_MAILLAGE*>::ITERATEUR it;
60 foucault 27
61 foucault 569 for (MG_ELEMENT_MAILLAGE* element = lien_maillage->get_premier(it);element;element = lien_maillage->get_suivant(it))
62     {
63     element->change_lien_topologie2(this);
64     get_lien_maillage()->ajouter(element);
65 francois 283
66 foucault 569 MG_SEGMENT * seg = (MG_SEGMENT *) element;
67     MG_NOEUD * nos[2];
68     nos[0] = seg->get_noeud1();
69     nos[1] = seg->get_noeud2();
70     for (i=0; i<2; i++)
71     {
72     if (!nos[i]->get_lien_topologie() || nos[i]->get_lien_topologie()->get_dimension() >= 1)
73     nos[i]->change_lien_topologie2(this);
74     }
75 foucault 27 }
76     }
77    
78     PolyCurve *
79     MCEdge::GetPolyCurve ( )
80     {
81 foucault 569 return (PolyCurve *) get_courbe();
82 foucault 27 }
83    
84 foucault 569 int
85     MCEdge::IsInterior()
86     {
87     if (get_nb_mg_coarete() != 2)
88     return 0;
89    
90     if (get_mg_coarete(0)->get_boucle() == get_mg_coarete(1)->get_boucle())
91     return 1;
92     else
93     return 0;
94     }
95    
96 francois 763 void MCEdge::enregistrer(std::ostream& o,double version)
97 foucault 27 {
98 foucault 569 int nb=get_nb_ccf();
99     o << "%" << get_id() << "=CAD4FE_MCEDGE("<< get_idoriginal() << ",$" << get_courbe()->get_id() << ",$"<<get_cosommet1()->get_id() << ",$" <<get_cosommet2()->get_id() << "," << get_orientation() << "," << nb;
100     if (nb!=0)
101     {
102 foucault 27 o << ",(";
103     for (int i=0;i<nb;i++)
104 foucault 569 {
105     char nom[3];
106     get_type_ccf(i,nom);
107     o << "(" << nom << "," << get_valeur_ccf(i) << ")";
108     if (i!=nb-1) o << "," ;
109     }
110     o << ")";
111 francois 283 }
112 foucault 569 o << ");" << std::endl;
113 foucault 27 }
114