1 // Copyright (C) 2007-2010 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"
33 //=======================================================================
34 //function : Constructor
36 //=======================================================================
37 SMESHDS_Script::SMESHDS_Script(bool theIsEmbeddedMode):
38 myIsEmbeddedMode(theIsEmbeddedMode)
41 //=======================================================================
42 //function : Destructor
44 //=======================================================================
45 SMESHDS_Script::~SMESHDS_Script()
50 //=======================================================================
51 void SMESHDS_Script::SetModified(bool theModified)
53 myIsModified = theModified;
56 //=======================================================================
57 bool SMESHDS_Script::IsModified()
62 //=======================================================================
63 //function : getCommand
65 //=======================================================================
66 SMESHDS_Command* SMESHDS_Script::getCommand(const SMESHDS_CommandType aType)
69 if (myCommands.empty())
71 com = new SMESHDS_Command(aType);
72 myCommands.insert(myCommands.end(),com);
76 com = myCommands.back();
77 if (com->GetType() != aType)
79 com = new SMESHDS_Command(aType);
80 myCommands.insert(myCommands.end(),com);
86 //=======================================================================
89 //=======================================================================
90 void SMESHDS_Script::AddNode(int NewNodeID, double x, double y, double z)
96 getCommand(SMESHDS_AddNode)->AddNode(NewNodeID, x, y, z);
99 //=======================================================================
102 //=======================================================================
103 void SMESHDS_Script::Add0DElement (int New0DElementID, int idnode)
105 if (myIsEmbeddedMode) {
109 getCommand(SMESHDS_Add0DElement)->Add0DElement(New0DElementID, idnode);
112 //=======================================================================
115 //=======================================================================
116 void SMESHDS_Script::AddEdge(int NewEdgeID, int idnode1, int idnode2)
118 if(myIsEmbeddedMode){
122 getCommand(SMESHDS_AddEdge)->AddEdge(NewEdgeID, idnode1, idnode2);
125 //=======================================================================
128 //=======================================================================
129 void SMESHDS_Script::AddFace(int NewFaceID,
130 int idnode1, int idnode2, int idnode3)
132 if(myIsEmbeddedMode){
136 getCommand(SMESHDS_AddTriangle)->AddFace(NewFaceID,
137 idnode1, idnode2, idnode3);
140 //=======================================================================
143 //=======================================================================
144 void SMESHDS_Script::AddFace(int NewFaceID,
145 int idnode1, int idnode2,
146 int idnode3, int idnode4)
148 if(myIsEmbeddedMode){
152 getCommand(SMESHDS_AddQuadrangle)->AddFace(NewFaceID,
157 //=======================================================================
160 //=======================================================================
161 void SMESHDS_Script::AddVolume(int NewID,
162 int idnode1, int idnode2,
163 int idnode3, int idnode4)
165 if(myIsEmbeddedMode){
169 getCommand(SMESHDS_AddTetrahedron)->AddVolume(NewID,
174 //=======================================================================
177 //=======================================================================
178 void SMESHDS_Script::AddVolume(int NewID,
179 int idnode1, int idnode2,
180 int idnode3, int idnode4, int idnode5)
182 if(myIsEmbeddedMode){
186 getCommand(SMESHDS_AddPyramid)->AddVolume(NewID,
188 idnode3, idnode4, idnode5);
191 //=======================================================================
194 //=======================================================================
195 void SMESHDS_Script::AddVolume(int NewID,
196 int idnode1, int idnode2, int idnode3,
197 int idnode4, int idnode5, int idnode6)
199 if(myIsEmbeddedMode){
203 getCommand(SMESHDS_AddPrism)->AddVolume(NewID,
204 idnode1, idnode2, idnode3,
205 idnode4, idnode5, idnode6);
208 //=======================================================================
211 //=======================================================================
212 void SMESHDS_Script::AddVolume(int NewID,
213 int idnode1, int idnode2, int idnode3, int idnode4,
214 int idnode5, int idnode6, int idnode7, int idnode8)
216 if(myIsEmbeddedMode){
220 getCommand(SMESHDS_AddHexahedron)->AddVolume(NewID,
221 idnode1, idnode2, idnode3, idnode4,
222 idnode5, idnode6, idnode7, idnode8);
225 //=======================================================================
226 //function : AddPolygonalFace
228 //=======================================================================
229 void SMESHDS_Script::AddPolygonalFace (int NewFaceID, std::vector<int> nodes_ids)
231 if(myIsEmbeddedMode){
235 getCommand(SMESHDS_AddPolygon)->AddPolygonalFace(NewFaceID, nodes_ids);
238 //=======================================================================
239 //function : AddPolyhedralVolume
241 //=======================================================================
242 void SMESHDS_Script::AddPolyhedralVolume (int NewID,
243 std::vector<int> nodes_ids,
244 std::vector<int> quantities)
246 if(myIsEmbeddedMode){
250 getCommand(SMESHDS_AddPolyhedron)->AddPolyhedralVolume
251 (NewID, nodes_ids, quantities);
254 //=======================================================================
257 //=======================================================================
258 void SMESHDS_Script::MoveNode(int NewNodeID, double x, double y, double z)
260 if(myIsEmbeddedMode){
264 getCommand(SMESHDS_MoveNode)->MoveNode(NewNodeID, x, y, z);
267 //=======================================================================
270 //=======================================================================
271 void SMESHDS_Script::RemoveNode(int ID)
273 if(myIsEmbeddedMode){
277 getCommand(SMESHDS_RemoveNode)->RemoveNode(ID);
280 //=======================================================================
283 //=======================================================================
284 void SMESHDS_Script::RemoveElement(int ElementID)
286 if(myIsEmbeddedMode){
290 getCommand(SMESHDS_RemoveElement)->RemoveElement(ElementID);
293 //=======================================================================
294 //function : ChangeElementNodes
296 //=======================================================================
298 void SMESHDS_Script::ChangeElementNodes(int ElementID, int nodes[], int nbnodes)
300 if(myIsEmbeddedMode){
304 getCommand(SMESHDS_ChangeElementNodes)->ChangeElementNodes( ElementID, nodes, nbnodes );
307 //=======================================================================
308 //function : ChangePolyhedronNodes
310 //=======================================================================
311 void SMESHDS_Script::ChangePolyhedronNodes (const int ElementID,
312 std::vector<int> nodes_ids,
313 std::vector<int> quantities)
315 if(myIsEmbeddedMode){
319 getCommand(SMESHDS_ChangePolyhedronNodes)->ChangePolyhedronNodes
320 (ElementID, nodes_ids, quantities);
323 //=======================================================================
324 //function : Renumber
326 //=======================================================================
327 void SMESHDS_Script::Renumber (const bool isNodes, const int startID, const int deltaID)
329 if(myIsEmbeddedMode){
333 getCommand(SMESHDS_Renumber)->Renumber( isNodes, startID, deltaID );
336 //=======================================================================
337 //function : ClearMesh
339 //=======================================================================
340 void SMESHDS_Script::ClearMesh ()
342 if(myIsEmbeddedMode){
346 Clear();// previous commands become useless to reproduce on client side
347 getCommand(SMESHDS_ClearAll);
350 //=======================================================================
353 //=======================================================================
354 void SMESHDS_Script::Clear()
356 list<SMESHDS_Command*>::iterator anIt = myCommands.begin();
357 for (; anIt != myCommands.end(); anIt++) {
363 //=======================================================================
366 //=======================================================================
367 const list<SMESHDS_Command*>& SMESHDS_Script::GetCommands()
373 //********************************************************************
374 //***** Methods for quadratic elements ******
375 //********************************************************************
377 //=======================================================================
380 //=======================================================================
381 void SMESHDS_Script::AddEdge(int NewEdgeID, int n1, int n2, int n12)
383 if(myIsEmbeddedMode){
387 getCommand(SMESHDS_AddQuadEdge)->AddEdge(NewEdgeID, n1, n2, n12);
390 //=======================================================================
393 //=======================================================================
394 void SMESHDS_Script::AddFace(int NewFaceID, int n1, int n2, int n3,
395 int n12, int n23, int n31)
397 if(myIsEmbeddedMode){
401 getCommand(SMESHDS_AddQuadTriangle)->AddFace(NewFaceID, n1, n2, n3,
405 //=======================================================================
408 //=======================================================================
409 void SMESHDS_Script::AddFace(int NewFaceID, int n1, int n2, int n3, int n4,
410 int n12, int n23, int n34, int n41)
412 if(myIsEmbeddedMode){
416 getCommand(SMESHDS_AddQuadQuadrangle)->AddFace(NewFaceID, n1, n2, n3, n4,
420 //=======================================================================
421 //function : AddVolume
423 //=======================================================================
424 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3, int n4,
425 int n12, int n23, int n31,
426 int n14, int n24, int n34)
428 if(myIsEmbeddedMode){
432 getCommand(SMESHDS_AddQuadTetrahedron)->AddVolume(NewVolID, n1, n2, n3, n4,
437 //=======================================================================
438 //function : AddVolume
440 //=======================================================================
441 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3, int n4,
442 int n5, int n12, int n23, int n34, int n41,
443 int n15, int n25, int n35, int n45)
445 if(myIsEmbeddedMode){
449 getCommand(SMESHDS_AddQuadPyramid)->AddVolume(NewVolID, n1, n2, n3, n4, n5,
454 //=======================================================================
455 //function : AddVolume
457 //=======================================================================
458 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3, int n4,
459 int n5,int n6, int n12, int n23, int n31,
460 int n45, int n56, int n64,
461 int n14, int n25, int n36)
463 if(myIsEmbeddedMode){
467 getCommand(SMESHDS_AddQuadPentahedron)->AddVolume(NewVolID, n1,n2,n3,n4,n5,n6,
473 //=======================================================================
474 //function : AddVolume
476 //=======================================================================
477 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3,
478 int n4, int n5, int n6, int n7, int n8,
479 int n12, int n23, int n34, int n41,
480 int n56, int n67, int n78, int n85,
481 int n15, int n26, int n37, int n48)
483 if(myIsEmbeddedMode){
487 getCommand(SMESHDS_AddQuadHexahedron)->AddVolume(NewVolID, n1, n2, n3, n4,