]> SALOME platform Git repositories - modules/smesh.git/blob - src/SMESHDS/SMESHDS_Script.cxx
Salome HOME
SMESHDS_Mesh structures
[modules/smesh.git] / src / SMESHDS / SMESHDS_Script.cxx
1 //  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 //  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 //  This library is free software; you can redistribute it and/or
7 //  modify it under the terms of the GNU Lesser General Public
8 //  License as published by the Free Software Foundation; either
9 //  version 2.1 of the License.
10 //
11 //  This library is distributed in the hope that it will be useful,
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 //  Lesser General Public License for more details.
15 //
16 //  You should have received a copy of the GNU Lesser General Public
17 //  License along with this library; if not, write to the Free Software
18 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 //  SMESH SMESHDS : management of mesh data and SMESH document
23 //  File   : SMESH_Script.cxx
24 //  Author : Yves FRICAUD, OCC
25 //  Module : SMESH
26 //  $Header: 
27 //
28 #include "SMESHDS_Script.hxx"
29 #include <iostream>
30
31 using namespace std;
32
33 //=======================================================================
34 //function : Constructor
35 //purpose  : 
36 //=======================================================================
37 SMESHDS_Script::SMESHDS_Script(bool theIsEmbeddedMode):
38   myIsEmbeddedMode(theIsEmbeddedMode)
39 {
40   cerr << "=========================== myIsEmbeddedMode " << myIsEmbeddedMode << endl;
41 }
42
43 //=======================================================================
44 //function : Destructor
45 //purpose  : 
46 //=======================================================================
47 SMESHDS_Script::~SMESHDS_Script()
48 {
49   Clear();
50 }
51
52 //=======================================================================
53 void SMESHDS_Script::SetModified(bool theModified)
54 {
55   myIsModified = theModified;
56 }
57
58 //=======================================================================
59 bool SMESHDS_Script::IsModified()
60 {
61   return myIsModified;
62 }
63
64 //=======================================================================
65 //function : getCommand
66 //purpose  : 
67 //=======================================================================
68 SMESHDS_Command* SMESHDS_Script::getCommand(const SMESHDS_CommandType aType)
69 {
70   SMESHDS_Command* com;
71   if (myCommands.empty())
72   {
73     com = new SMESHDS_Command(aType);
74     myCommands.insert(myCommands.end(),com);
75   }
76   else
77   {
78     com = myCommands.back();
79     if (com->GetType() != aType)
80     {
81       com = new SMESHDS_Command(aType);
82       myCommands.insert(myCommands.end(),com);
83     }
84   }
85   return com;
86 }
87
88 //=======================================================================
89 //function : 
90 //purpose  : 
91 //=======================================================================
92 void SMESHDS_Script::AddNode(int NewNodeID, double x, double y, double z)
93 {
94   if(myIsEmbeddedMode){
95     myIsModified = true;
96     return;
97   }
98   getCommand(SMESHDS_AddNode)->AddNode(NewNodeID, x, y, z);
99 }
100
101 //=======================================================================
102 //function :
103 //purpose  :
104 //=======================================================================
105 void SMESHDS_Script::Add0DElement (int New0DElementID, int idnode)
106 {
107   if (myIsEmbeddedMode) {
108     myIsModified = true;
109     return;
110   }
111   getCommand(SMESHDS_Add0DElement)->Add0DElement(New0DElementID, idnode);
112 }
113
114 //=======================================================================
115 //function : 
116 //purpose  : 
117 //=======================================================================
118 void SMESHDS_Script::AddEdge(int NewEdgeID, int idnode1, int idnode2)
119 {
120   if(myIsEmbeddedMode){
121     myIsModified = true;
122     return;
123   }
124   getCommand(SMESHDS_AddEdge)->AddEdge(NewEdgeID, idnode1, idnode2);
125 }
126
127 //=======================================================================
128 //function : 
129 //purpose  : 
130 //=======================================================================
131 void SMESHDS_Script::AddFace(int NewFaceID,
132                              int idnode1, int idnode2, int idnode3)
133 {
134   if(myIsEmbeddedMode){
135     myIsModified = true;
136     return;
137   }
138   getCommand(SMESHDS_AddTriangle)->AddFace(NewFaceID,
139                                            idnode1, idnode2, idnode3);
140 }
141
142 //=======================================================================
143 //function : 
144 //purpose  : 
145 //=======================================================================
146 void SMESHDS_Script::AddFace(int NewFaceID,
147                              int idnode1, int idnode2,
148                              int idnode3, int idnode4)
149 {
150   if(myIsEmbeddedMode){
151     myIsModified = true;
152     return;
153   }
154   getCommand(SMESHDS_AddQuadrangle)->AddFace(NewFaceID,
155                                              idnode1, idnode2,
156                                              idnode3, idnode4);
157 }
158
159 //=======================================================================
160 //function : 
161 //purpose  : 
162 //=======================================================================
163 void SMESHDS_Script::AddVolume(int NewID,
164                                int idnode1, int idnode2,
165                                int idnode3, int idnode4)
166 {
167   if(myIsEmbeddedMode){
168     myIsModified = true;
169     return;
170   }
171   getCommand(SMESHDS_AddTetrahedron)->AddVolume(NewID,
172                                                 idnode1, idnode2,
173                                                 idnode3, idnode4);
174 }
175
176 //=======================================================================
177 //function : 
178 //purpose  : 
179 //=======================================================================
180 void SMESHDS_Script::AddVolume(int NewID,
181                                int idnode1, int idnode2,
182                                int idnode3, int idnode4, int idnode5)
183 {
184   if(myIsEmbeddedMode){
185     myIsModified = true;
186     return;
187   }
188   getCommand(SMESHDS_AddPyramid)->AddVolume(NewID,
189                                             idnode1, idnode2,
190                                             idnode3, idnode4, idnode5);
191 }
192
193 //=======================================================================
194 //function : 
195 //purpose  : 
196 //=======================================================================
197 void SMESHDS_Script::AddVolume(int NewID,
198                                int idnode1, int idnode2, int idnode3,
199                                int idnode4, int idnode5, int idnode6)
200 {
201   if(myIsEmbeddedMode){
202     myIsModified = true;
203     return;
204   }
205   getCommand(SMESHDS_AddPrism)->AddVolume(NewID,
206                                           idnode1, idnode2, idnode3,
207                                           idnode4, idnode5, idnode6);
208 }
209
210 //=======================================================================
211 //function : 
212 //purpose  : 
213 //=======================================================================
214 void SMESHDS_Script::AddVolume(int NewID,
215                                int idnode1, int idnode2, int idnode3, int idnode4,
216                                int idnode5, int idnode6, int idnode7, int idnode8)
217 {
218   if(myIsEmbeddedMode){
219     myIsModified = true;
220     return;
221   }
222   getCommand(SMESHDS_AddHexahedron)->AddVolume(NewID,
223                                                idnode1, idnode2, idnode3, idnode4,
224                                                idnode5, idnode6, idnode7, idnode8);
225 }
226
227 //=======================================================================
228 //function : AddPolygonalFace
229 //purpose  : 
230 //=======================================================================
231 void SMESHDS_Script::AddPolygonalFace (int NewFaceID, std::vector<int> nodes_ids)
232 {
233   if(myIsEmbeddedMode){
234     myIsModified = true;
235     return;
236   }
237   getCommand(SMESHDS_AddPolygon)->AddPolygonalFace(NewFaceID, nodes_ids);
238 }
239
240 //=======================================================================
241 //function : AddPolyhedralVolume
242 //purpose  : 
243 //=======================================================================
244 void SMESHDS_Script::AddPolyhedralVolume (int NewID,
245                                           std::vector<int> nodes_ids,
246                                           std::vector<int> quantities)
247 {
248   if(myIsEmbeddedMode){
249     myIsModified = true;
250     return;
251   }
252   getCommand(SMESHDS_AddPolyhedron)->AddPolyhedralVolume
253     (NewID, nodes_ids, quantities);
254 }
255
256 //=======================================================================
257 //function : 
258 //purpose  : 
259 //=======================================================================
260 void SMESHDS_Script::MoveNode(int NewNodeID, double x, double y, double z)
261 {
262   if(myIsEmbeddedMode){
263     myIsModified = true;
264     return;
265   }
266   getCommand(SMESHDS_MoveNode)->MoveNode(NewNodeID, x, y, z);
267 }
268
269 //=======================================================================
270 //function : 
271 //purpose  : 
272 //=======================================================================
273 void SMESHDS_Script::RemoveNode(int ID)
274 {
275   if(myIsEmbeddedMode){
276     myIsModified = true;
277     return;
278   }
279   getCommand(SMESHDS_RemoveNode)->RemoveNode(ID);
280 }
281
282 //=======================================================================
283 //function : 
284 //purpose  : 
285 //=======================================================================
286 void SMESHDS_Script::RemoveElement(int ElementID)
287 {
288   if(myIsEmbeddedMode){
289     myIsModified = true;
290     return;
291   }
292   getCommand(SMESHDS_RemoveElement)->RemoveElement(ElementID);
293 }
294
295 //=======================================================================
296 //function : ChangeElementNodes
297 //purpose  : 
298 //=======================================================================
299
300 void SMESHDS_Script::ChangeElementNodes(int ElementID, int nodes[], int nbnodes)
301 {
302   if(myIsEmbeddedMode){
303     myIsModified = true;
304     return;
305   }
306   getCommand(SMESHDS_ChangeElementNodes)->ChangeElementNodes( ElementID, nodes, nbnodes );
307 }
308
309 //=======================================================================
310 //function : ChangePolyhedronNodes
311 //purpose  : 
312 //=======================================================================
313 void SMESHDS_Script::ChangePolyhedronNodes (const int        ElementID,
314                                             std::vector<int> nodes_ids,
315                                             std::vector<int> quantities)
316 {
317   if(myIsEmbeddedMode){
318     myIsModified = true;
319     return;
320   }
321   getCommand(SMESHDS_ChangePolyhedronNodes)->ChangePolyhedronNodes
322     (ElementID, nodes_ids, quantities);
323 }
324
325 //=======================================================================
326 //function : Renumber
327 //purpose  : 
328 //=======================================================================
329 void SMESHDS_Script::Renumber (const bool isNodes, const int startID, const int deltaID)
330 {
331   if(myIsEmbeddedMode){
332     myIsModified = true;
333     return;
334   }
335   getCommand(SMESHDS_Renumber)->Renumber( isNodes, startID, deltaID );
336 }
337
338 //=======================================================================
339 //function : ClearMesh
340 //purpose  : 
341 //=======================================================================
342 void SMESHDS_Script::ClearMesh ()
343 {
344   if(myIsEmbeddedMode){
345     myIsModified = true;
346     return;
347   }
348   Clear();// previous commands become useless to reproduce on client side
349   getCommand(SMESHDS_ClearAll);
350 }
351
352 //=======================================================================
353 //function : 
354 //purpose  : 
355 //=======================================================================
356 void SMESHDS_Script::Clear()
357 {
358   list<SMESHDS_Command*>::iterator anIt = myCommands.begin();
359   for (; anIt != myCommands.end(); anIt++) {
360     delete (*anIt);
361   }
362   myCommands.clear();
363 }
364
365 //=======================================================================
366 //function : 
367 //purpose  : 
368 //=======================================================================
369 const list<SMESHDS_Command*>& SMESHDS_Script::GetCommands()
370 {
371   return myCommands;
372 }
373
374
375 //********************************************************************
376 //*****             Methods for quadratic elements              ******
377 //********************************************************************
378
379 //=======================================================================
380 //function : AddEdge
381 //purpose  : 
382 //=======================================================================
383 void SMESHDS_Script::AddEdge(int NewEdgeID, int n1, int n2, int n12)
384 {
385   if(myIsEmbeddedMode){
386     myIsModified = true;
387     return;
388   }
389   getCommand(SMESHDS_AddQuadEdge)->AddEdge(NewEdgeID, n1, n2, n12);
390 }
391
392 //=======================================================================
393 //function : AddFace
394 //purpose  : 
395 //=======================================================================
396 void SMESHDS_Script::AddFace(int NewFaceID, int n1, int n2, int n3,
397                              int n12, int n23, int n31)
398 {
399   if(myIsEmbeddedMode){
400     myIsModified = true;
401     return;
402   }
403   getCommand(SMESHDS_AddQuadTriangle)->AddFace(NewFaceID, n1, n2, n3,
404                                                n12, n23, n31);
405 }
406
407 //=======================================================================
408 //function : AddFace
409 //purpose  : 
410 //=======================================================================
411 void SMESHDS_Script::AddFace(int NewFaceID, int n1, int n2, int n3, int n4,
412                              int n12, int n23, int n34, int n41)
413 {
414   if(myIsEmbeddedMode){
415     myIsModified = true;
416     return;
417   }
418   getCommand(SMESHDS_AddQuadQuadrangle)->AddFace(NewFaceID, n1, n2, n3, n4,
419                                                  n12, n23, n34, n41);
420 }
421
422 //=======================================================================
423 //function : AddVolume
424 //purpose  : 
425 //=======================================================================
426 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3, int n4,
427                                int n12, int n23, int n31,
428                                int n14, int n24, int n34)
429 {
430   if(myIsEmbeddedMode){
431     myIsModified = true;
432     return;
433   }
434   getCommand(SMESHDS_AddQuadTetrahedron)->AddVolume(NewVolID, n1, n2, n3, n4,
435                                                     n12, n23, n31,
436                                                     n14, n24, n34);
437 }
438
439 //=======================================================================
440 //function : AddVolume
441 //purpose  : 
442 //=======================================================================
443 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3, int n4,
444                                int n5, int n12, int n23, int n34, int n41,
445                                int n15, int n25, int n35, int n45)
446 {
447   if(myIsEmbeddedMode){
448     myIsModified = true;
449     return;
450   }
451   getCommand(SMESHDS_AddQuadPyramid)->AddVolume(NewVolID, n1, n2, n3, n4, n5,
452                                                 n12, n23, n34, n41,
453                                                 n15, n25, n35, n45);
454 }
455
456 //=======================================================================
457 //function : AddVolume
458 //purpose  : 
459 //=======================================================================
460 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3, int n4,
461                                 int n5,int n6, int n12, int n23, int n31,
462                                 int n45, int n56, int n64,
463                                 int n14, int n25, int n36)
464 {
465   if(myIsEmbeddedMode){
466     myIsModified = true;
467     return;
468   }
469   getCommand(SMESHDS_AddQuadPentahedron)->AddVolume(NewVolID, n1,n2,n3,n4,n5,n6,
470                                                     n12, n23, n31,
471                                                     n45, n56, n64,
472                                                     n14, n25, n36);
473 }
474
475 //=======================================================================
476 //function : AddVolume
477 //purpose  : 
478 //=======================================================================
479 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3,
480                                int n4, int n5, int n6, int n7, int n8,
481                                int n12, int n23, int n34, int n41,
482                                int n56, int n67, int n78, int n85,
483                                int n15, int n26, int n37, int n48)
484 {
485   if(myIsEmbeddedMode){
486     myIsModified = true;
487     return;
488   }
489   getCommand(SMESHDS_AddQuadHexahedron)->AddVolume(NewVolID, n1, n2, n3, n4,
490                                                    n5, n6, n7, n8,
491                                                    n12, n23, n34, n41,
492                                                    n56, n67, n78, n85,
493                                                    n15, n26, n37, n48);
494 }
495