1 // Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
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.
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.
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
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 // SMESH SMESHDS : management of mesh data and SMESH document
24 // File : SMESH_Script.cxx
25 // Author : Yves FRICAUD, OCC
29 #include "SMESHDS_Script.hxx"
34 //=======================================================================
35 //function : Constructor
37 //=======================================================================
38 SMESHDS_Script::SMESHDS_Script(bool theIsEmbeddedMode):
39 myIsEmbeddedMode(theIsEmbeddedMode)
41 //cerr << "=========================== myIsEmbeddedMode " << myIsEmbeddedMode << endl;
44 //=======================================================================
45 //function : Destructor
47 //=======================================================================
48 SMESHDS_Script::~SMESHDS_Script()
53 //=======================================================================
54 void SMESHDS_Script::SetModified(bool theModified)
56 myIsModified = theModified;
59 //=======================================================================
60 bool SMESHDS_Script::IsModified()
65 //=======================================================================
66 //function : getCommand
68 //=======================================================================
69 SMESHDS_Command* SMESHDS_Script::getCommand(const SMESHDS_CommandType aType)
72 if (myCommands.empty())
74 com = new SMESHDS_Command(aType);
75 myCommands.insert(myCommands.end(),com);
79 com = myCommands.back();
80 if (com->GetType() != aType)
82 com = new SMESHDS_Command(aType);
83 myCommands.insert(myCommands.end(),com);
89 //=======================================================================
92 //=======================================================================
93 void SMESHDS_Script::AddNode(int NewNodeID, double x, double y, double z)
99 getCommand(SMESHDS_AddNode)->AddNode(NewNodeID, x, y, z);
102 //=======================================================================
105 //=======================================================================
106 void SMESHDS_Script::Add0DElement (int New0DElementID, int idnode)
108 if (myIsEmbeddedMode) {
112 getCommand(SMESHDS_Add0DElement)->Add0DElement(New0DElementID, idnode);
115 //=======================================================================
118 //=======================================================================
119 void SMESHDS_Script::AddEdge(int NewEdgeID, int idnode1, int idnode2)
121 if(myIsEmbeddedMode){
125 getCommand(SMESHDS_AddEdge)->AddEdge(NewEdgeID, idnode1, idnode2);
128 //=======================================================================
131 //=======================================================================
132 void SMESHDS_Script::AddFace(int NewFaceID,
133 int idnode1, int idnode2, int idnode3)
135 if(myIsEmbeddedMode){
139 getCommand(SMESHDS_AddTriangle)->AddFace(NewFaceID,
140 idnode1, idnode2, idnode3);
143 //=======================================================================
146 //=======================================================================
147 void SMESHDS_Script::AddFace(int NewFaceID,
148 int idnode1, int idnode2,
149 int idnode3, int idnode4)
151 if(myIsEmbeddedMode){
155 getCommand(SMESHDS_AddQuadrangle)->AddFace(NewFaceID,
160 //=======================================================================
163 //=======================================================================
164 void SMESHDS_Script::AddVolume(int NewID,
165 int idnode1, int idnode2,
166 int idnode3, int idnode4)
168 if(myIsEmbeddedMode){
172 getCommand(SMESHDS_AddTetrahedron)->AddVolume(NewID,
177 //=======================================================================
180 //=======================================================================
181 void SMESHDS_Script::AddVolume(int NewID,
182 int idnode1, int idnode2,
183 int idnode3, int idnode4, int idnode5)
185 if(myIsEmbeddedMode){
189 getCommand(SMESHDS_AddPyramid)->AddVolume(NewID,
191 idnode3, idnode4, idnode5);
194 //=======================================================================
197 //=======================================================================
198 void SMESHDS_Script::AddVolume(int NewID,
199 int idnode1, int idnode2, int idnode3,
200 int idnode4, int idnode5, int idnode6)
202 if(myIsEmbeddedMode){
206 getCommand(SMESHDS_AddPrism)->AddVolume(NewID,
207 idnode1, idnode2, idnode3,
208 idnode4, idnode5, idnode6);
211 //=======================================================================
214 //=======================================================================
215 void SMESHDS_Script::AddVolume(int NewID,
216 int idnode1, int idnode2, int idnode3, int idnode4,
217 int idnode5, int idnode6, int idnode7, int idnode8)
219 if(myIsEmbeddedMode){
223 getCommand(SMESHDS_AddHexahedron)->AddVolume(NewID,
224 idnode1, idnode2, idnode3, idnode4,
225 idnode5, idnode6, idnode7, idnode8);
228 //=======================================================================
229 //function : AddPolygonalFace
231 //=======================================================================
232 void SMESHDS_Script::AddPolygonalFace (int NewFaceID, std::vector<int> nodes_ids)
234 if(myIsEmbeddedMode){
238 getCommand(SMESHDS_AddPolygon)->AddPolygonalFace(NewFaceID, nodes_ids);
241 //=======================================================================
242 //function : AddPolyhedralVolume
244 //=======================================================================
245 void SMESHDS_Script::AddPolyhedralVolume (int NewID,
246 std::vector<int> nodes_ids,
247 std::vector<int> quantities)
249 if(myIsEmbeddedMode){
253 getCommand(SMESHDS_AddPolyhedron)->AddPolyhedralVolume
254 (NewID, nodes_ids, quantities);
257 //=======================================================================
260 //=======================================================================
261 void SMESHDS_Script::MoveNode(int NewNodeID, double x, double y, double z)
263 if(myIsEmbeddedMode){
267 getCommand(SMESHDS_MoveNode)->MoveNode(NewNodeID, x, y, z);
270 //=======================================================================
273 //=======================================================================
274 void SMESHDS_Script::RemoveNode(int ID)
276 if(myIsEmbeddedMode){
280 getCommand(SMESHDS_RemoveNode)->RemoveNode(ID);
283 //=======================================================================
286 //=======================================================================
287 void SMESHDS_Script::RemoveElement(int ElementID)
289 if(myIsEmbeddedMode){
293 getCommand(SMESHDS_RemoveElement)->RemoveElement(ElementID);
296 //=======================================================================
297 //function : ChangeElementNodes
299 //=======================================================================
301 void SMESHDS_Script::ChangeElementNodes(int ElementID, int nodes[], int nbnodes)
303 if(myIsEmbeddedMode){
307 getCommand(SMESHDS_ChangeElementNodes)->ChangeElementNodes( ElementID, nodes, nbnodes );
310 //=======================================================================
311 //function : ChangePolyhedronNodes
313 //=======================================================================
314 void SMESHDS_Script::ChangePolyhedronNodes (const int ElementID,
315 std::vector<int> nodes_ids,
316 std::vector<int> quantities)
318 if(myIsEmbeddedMode){
322 getCommand(SMESHDS_ChangePolyhedronNodes)->ChangePolyhedronNodes
323 (ElementID, nodes_ids, quantities);
326 //=======================================================================
327 //function : Renumber
329 //=======================================================================
330 void SMESHDS_Script::Renumber (const bool isNodes, const int startID, const int deltaID)
332 if(myIsEmbeddedMode){
336 getCommand(SMESHDS_Renumber)->Renumber( isNodes, startID, deltaID );
339 //=======================================================================
340 //function : ClearMesh
342 //=======================================================================
343 void SMESHDS_Script::ClearMesh ()
345 if(myIsEmbeddedMode){
349 Clear();// previous commands become useless to reproduce on client side
350 getCommand(SMESHDS_ClearAll);
353 //=======================================================================
356 //=======================================================================
357 void SMESHDS_Script::Clear()
359 list<SMESHDS_Command*>::iterator anIt = myCommands.begin();
360 for (; anIt != myCommands.end(); anIt++) {
366 //=======================================================================
369 //=======================================================================
370 const list<SMESHDS_Command*>& SMESHDS_Script::GetCommands()
376 //********************************************************************
377 //***** Methods for quadratic elements ******
378 //********************************************************************
380 //=======================================================================
383 //=======================================================================
384 void SMESHDS_Script::AddEdge(int NewEdgeID, int n1, int n2, int n12)
386 if(myIsEmbeddedMode){
390 getCommand(SMESHDS_AddQuadEdge)->AddEdge(NewEdgeID, n1, n2, n12);
393 //=======================================================================
396 //=======================================================================
397 void SMESHDS_Script::AddFace(int NewFaceID, int n1, int n2, int n3,
398 int n12, int n23, int n31)
400 if(myIsEmbeddedMode){
404 getCommand(SMESHDS_AddQuadTriangle)->AddFace(NewFaceID, n1, n2, n3,
408 //=======================================================================
411 //=======================================================================
412 void SMESHDS_Script::AddFace(int NewFaceID, int n1, int n2, int n3, int n4,
413 int n12, int n23, int n34, int n41)
415 if(myIsEmbeddedMode){
419 getCommand(SMESHDS_AddQuadQuadrangle)->AddFace(NewFaceID, n1, n2, n3, n4,
423 //=======================================================================
424 //function : AddVolume
426 //=======================================================================
427 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3, int n4,
428 int n12, int n23, int n31,
429 int n14, int n24, int n34)
431 if(myIsEmbeddedMode){
435 getCommand(SMESHDS_AddQuadTetrahedron)->AddVolume(NewVolID, n1, n2, n3, n4,
440 //=======================================================================
441 //function : AddVolume
443 //=======================================================================
444 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3, int n4,
445 int n5, int n12, int n23, int n34, int n41,
446 int n15, int n25, int n35, int n45)
448 if(myIsEmbeddedMode){
452 getCommand(SMESHDS_AddQuadPyramid)->AddVolume(NewVolID, n1, n2, n3, n4, n5,
457 //=======================================================================
458 //function : AddVolume
460 //=======================================================================
461 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3, int n4,
462 int n5,int n6, int n12, int n23, int n31,
463 int n45, int n56, int n64,
464 int n14, int n25, int n36)
466 if(myIsEmbeddedMode){
470 getCommand(SMESHDS_AddQuadPentahedron)->AddVolume(NewVolID, n1,n2,n3,n4,n5,n6,
476 //=======================================================================
477 //function : AddVolume
479 //=======================================================================
480 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3,
481 int n4, int n5, int n6, int n7, int n8,
482 int n12, int n23, int n34, int n41,
483 int n56, int n67, int n78, int n85,
484 int n15, int n26, int n37, int n48)
486 if(myIsEmbeddedMode){
490 getCommand(SMESHDS_AddQuadHexahedron)->AddVolume(NewVolID, n1, n2, n3, n4,