]> SALOME platform Git repositories - modules/hexablock.git/blob - src/HEXABLOCK/HexDocument_trans.cxx
Salome HOME
First publish of HEXABLOCKcomponant
[modules/hexablock.git] / src / HEXABLOCK / HexDocument_trans.cxx
1
2 // C++ : La clase principale de Hexa
3
4 #include "HexDocument.hxx"
5
6 #include "HexEltBase.hxx"
7 #include "HexVertex.hxx"
8 #include "HexEdge.hxx"
9 #include "HexQuad.hxx"
10 #include "HexHexa.hxx"
11
12 #include "HexElements.hxx"
13 #include "HexCrossElements.hxx"
14
15 #include "HexVector.hxx"
16 #include "HexCylinder.hxx"
17 #include "HexPipe.hxx"
18 #include "HexMatrix.hxx"
19 #include "HexCloner.hxx"
20 #include "HexPropagation.hxx"
21 #include "HexLaw.hxx"
22
23 #include "HexXmlWriter.hxx"
24 #include "HexXmlTree.hxx"
25 #include "HexGlobale.hxx"
26 #include "HexGroups.hxx"
27
28 BEGIN_NAMESPACE_HEXA
29 // ========================================================= performTranslation
30 int Document::performTranslation (Elements* elts, Vector* trans)
31
32    Matrix matrice;
33    matrice.defTranslation (trans);
34
35    int    ier = elts->transform (&matrice);
36    return ier;
37 }
38 // ==================================================== performScale
39 int Document::performScale (Elements* elts, Vertex* ver, double k)
40
41    Matrix matrice;
42    matrice.defScale (ver, k);
43
44    int    ier = elts->transform (&matrice);
45    return ier;
46 }
47 // ==================================================== performRotation
48 int Document::performRotation (Elements* elts, Vertex* ver, Vector* vec, double angle)
49
50    Matrix matrice;
51    matrice.defRotation (ver, vec, angle);
52
53    int    ier = elts->transform (&matrice);
54    return ier;
55 }
56 // ==================================================== performSymmetryPoint
57 int Document::performSymmetryPoint (Elements* elts, Vertex* ver)
58
59    Matrix matrice;
60    matrice.defSymmetryPoint (ver);
61
62    int    ier = elts->transform (&matrice);
63    return ier;
64 }
65 // ==================================================== performSymmetryPlane
66 int Document::performSymmetryPlane (Elements* elts, Vertex* ver, Vector* vec)    
67
68    Matrix matrice;
69    matrice.defSymmetryPlane (ver, vec);
70
71    int    ier = elts->transform (&matrice);
72    return ier;
73 }
74 // ==================================================== performSymmetryLine
75 int Document::performSymmetryLine (Elements* elts, Vertex* ver, Vector* vec)
76
77    Matrix matrice;
78    matrice.defSymmetryLine (ver, vec);
79
80    int    ier = elts->transform (&matrice);
81    return ier;
82 }
83 // -------------------------------------------------------- 
84 // -------------------------------------------------------- 
85 // -------------------------------------------------------- 
86 // ========================================================= clonerElements
87 Elements* Document::clonerElements (Elements* table, Matrix* matrice)
88 {
89    Cloner    copieur (matrice);
90    Elements* grille = copieur.clonerElements (table);
91    return    grille;
92 }
93 // -------------------------------------------------------- 
94 // -------------------------------------------------------- 
95 // -------------------------------------------------------- 
96 // ========================================================= makeTranslation
97 Elements* Document::makeTranslation (Elements* table, Vector* trans)
98 {
99    Matrix  matrice;
100    matrice.defTranslation (trans);
101
102    Elements* grille = clonerElements (table, &matrice);
103    return    grille;
104 }
105 // ========================================================= makeScale
106 Elements* Document::makeScale (Elements* table, Vertex* ver, double k)
107 {
108    Matrix  matrice;
109    matrice.defScale (ver, k);
110
111    Elements* grille = clonerElements (table, &matrice);
112    return    grille;
113 }
114 // ========================================================= makeRotation
115 Elements* Document::makeRotation (Elements* table, Vertex* ver, Vector* vec, 
116                                 double angle)
117 {
118    Matrix  matrice;
119    matrice.defRotation (ver, vec, angle);
120
121    Elements* grille = clonerElements (table, &matrice);
122    return    grille;
123 }
124 // ========================================================= makeSymmetryPoint
125 Elements* Document::makeSymmetryPoint (Elements* table, Vertex* ver)
126 {
127    Matrix  matrice;
128    matrice.defSymmetryPoint (ver);
129
130    Elements* grille = clonerElements (table, &matrice);
131    return    grille;
132 }
133 // ========================================================= makeSymmetryLine
134 Elements* Document::makeSymmetryLine (Elements* table, Vertex* ver, Vector* vec)
135 {
136    Matrix  matrice;
137    matrice.defSymmetryLine (ver, vec);
138
139    Elements* grille = clonerElements (table, &matrice);
140    return    grille;
141 }
142 // ========================================================= makeSymmetryPlane
143 Elements* Document::makeSymmetryPlane (Elements* table, Vertex* ver, Vector* vec)
144 {
145    Matrix  matrice;
146    matrice.defSymmetryPlane (ver, vec);
147
148    Elements* grille = clonerElements (table, &matrice);
149    return    grille;
150 }
151 // ----------------------------------------------------------------------
152 // ------------ Destroy
153 // ----------------------------------------------------------------------
154 // ========================================================= removeHexa
155 int Document::removeHexa (Hexa* cell)
156 {
157    if (cell==NULL)
158       return HERR;
159
160    cell->remove ();
161    return  HOK;
162 }
163 // ========================================================= removeHexa
164 int Document::removeConnectedHexa (Hexa* cell)
165 {
166    if (cell==NULL)
167       return HERR;
168
169    update ();
170    cell->removeConnected ();
171    return  HOK;
172 }
173 // ========================================================= dumpPropagation
174 void Document::dumpPropagation ()
175 {
176    int nb = countPropagation ();
177
178    for (int nro=0 ; nro<nb ; nro++)
179        {
180        Propagation*  prop  = getPropagation (nro);
181        const Edges&  table = prop->getEdges ();
182        printf (" ____________________________________ Prop nro %d\n", nro);
183        for (int ned=0 ; ned<(int)table.size() ; ned++)
184            {
185            bool way = table [ned]->getWay ();
186
187            table [ned]->printName (" = ");
188            if (way)
189               {
190               printf (" +(");
191               table [ned]->getVertex (0)->printName (", ");
192               table [ned]->getVertex (1)->printName (")\n");
193               }
194           else
195               {
196               printf (" -(");
197               table [ned]->getVertex (1)->printName (", ");
198               table [ned]->getVertex (0)->printName (")\n");
199               }
200            }
201        }
202 }
203 END_NAMESPACE_HEXA