1 // Copyright (C) 2007-2008 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
22 // SMESH SMESHDS : management of mesh data and SMESH document
23 // File : SMESH_Script.cxx
24 // Author : Yves FRICAUD, OCC
28 #include "SMESHDS_Script.hxx"
32 //=======================================================================
33 //function : Constructor
35 //=======================================================================
36 SMESHDS_Script::SMESHDS_Script(bool theIsEmbeddedMode):
37 myIsEmbeddedMode(theIsEmbeddedMode)
40 //=======================================================================
41 //function : Destructor
43 //=======================================================================
44 SMESHDS_Script::~SMESHDS_Script()
49 //=======================================================================
50 void SMESHDS_Script::SetModified(bool theModified)
52 myIsModified = theModified;
55 //=======================================================================
56 bool SMESHDS_Script::IsModified()
61 //=======================================================================
62 //function : getCommand
64 //=======================================================================
65 SMESHDS_Command* SMESHDS_Script::getCommand(const SMESHDS_CommandType aType)
68 if (myCommands.empty())
70 com = new SMESHDS_Command(aType);
71 myCommands.insert(myCommands.end(),com);
75 com = myCommands.back();
76 if (com->GetType() != aType)
78 com = new SMESHDS_Command(aType);
79 myCommands.insert(myCommands.end(),com);
85 //=======================================================================
88 //=======================================================================
89 void SMESHDS_Script::AddNode(int NewNodeID, double x, double y, double z)
95 getCommand(SMESHDS_AddNode)->AddNode(NewNodeID, x, y, z);
98 //=======================================================================
101 //=======================================================================
102 void SMESHDS_Script::AddEdge(int NewEdgeID, int idnode1, int idnode2)
104 if(myIsEmbeddedMode){
108 getCommand(SMESHDS_AddEdge)->AddEdge(NewEdgeID, idnode1, idnode2);
111 //=======================================================================
114 //=======================================================================
115 void SMESHDS_Script::AddFace(int NewFaceID,
116 int idnode1, int idnode2, int idnode3)
118 if(myIsEmbeddedMode){
122 getCommand(SMESHDS_AddTriangle)->AddFace(NewFaceID,
123 idnode1, idnode2, idnode3);
126 //=======================================================================
129 //=======================================================================
130 void SMESHDS_Script::AddFace(int NewFaceID,
131 int idnode1, int idnode2,
132 int idnode3, int idnode4)
134 if(myIsEmbeddedMode){
138 getCommand(SMESHDS_AddQuadrangle)->AddFace(NewFaceID,
143 //=======================================================================
146 //=======================================================================
147 void SMESHDS_Script::AddVolume(int NewID,
148 int idnode1, int idnode2,
149 int idnode3, int idnode4)
151 if(myIsEmbeddedMode){
155 getCommand(SMESHDS_AddTetrahedron)->AddVolume(NewID,
160 //=======================================================================
163 //=======================================================================
164 void SMESHDS_Script::AddVolume(int NewID,
165 int idnode1, int idnode2,
166 int idnode3, int idnode4, int idnode5)
168 if(myIsEmbeddedMode){
172 getCommand(SMESHDS_AddPyramid)->AddVolume(NewID,
174 idnode3, idnode4, idnode5);
177 //=======================================================================
180 //=======================================================================
181 void SMESHDS_Script::AddVolume(int NewID,
182 int idnode1, int idnode2, int idnode3,
183 int idnode4, int idnode5, int idnode6)
185 if(myIsEmbeddedMode){
189 getCommand(SMESHDS_AddPrism)->AddVolume(NewID,
190 idnode1, idnode2, idnode3,
191 idnode4, idnode5, idnode6);
194 //=======================================================================
197 //=======================================================================
198 void SMESHDS_Script::AddVolume(int NewID,
199 int idnode1, int idnode2, int idnode3, int idnode4,
200 int idnode5, int idnode6, int idnode7, int idnode8)
202 if(myIsEmbeddedMode){
206 getCommand(SMESHDS_AddHexahedron)->AddVolume(NewID,
207 idnode1, idnode2, idnode3, idnode4,
208 idnode5, idnode6, idnode7, idnode8);
211 //=======================================================================
212 //function : AddPolygonalFace
214 //=======================================================================
215 void SMESHDS_Script::AddPolygonalFace (int NewFaceID, std::vector<int> nodes_ids)
217 if(myIsEmbeddedMode){
221 getCommand(SMESHDS_AddPolygon)->AddPolygonalFace(NewFaceID, nodes_ids);
224 //=======================================================================
225 //function : AddPolyhedralVolume
227 //=======================================================================
228 void SMESHDS_Script::AddPolyhedralVolume (int NewID,
229 std::vector<int> nodes_ids,
230 std::vector<int> quantities)
232 if(myIsEmbeddedMode){
236 getCommand(SMESHDS_AddPolyhedron)->AddPolyhedralVolume
237 (NewID, nodes_ids, quantities);
240 //=======================================================================
243 //=======================================================================
244 void SMESHDS_Script::MoveNode(int NewNodeID, double x, double y, double z)
246 if(myIsEmbeddedMode){
250 getCommand(SMESHDS_MoveNode)->MoveNode(NewNodeID, x, y, z);
253 //=======================================================================
256 //=======================================================================
257 void SMESHDS_Script::RemoveNode(int ID)
259 if(myIsEmbeddedMode){
263 getCommand(SMESHDS_RemoveNode)->RemoveNode(ID);
266 //=======================================================================
269 //=======================================================================
270 void SMESHDS_Script::RemoveElement(int ElementID)
272 if(myIsEmbeddedMode){
276 getCommand(SMESHDS_RemoveElement)->RemoveElement(ElementID);
279 //=======================================================================
280 //function : ChangeElementNodes
282 //=======================================================================
284 void SMESHDS_Script::ChangeElementNodes(int ElementID, int nodes[], int nbnodes)
286 if(myIsEmbeddedMode){
290 getCommand(SMESHDS_ChangeElementNodes)->ChangeElementNodes( ElementID, nodes, nbnodes );
293 //=======================================================================
294 //function : ChangePolyhedronNodes
296 //=======================================================================
297 void SMESHDS_Script::ChangePolyhedronNodes (const int ElementID,
298 std::vector<int> nodes_ids,
299 std::vector<int> quantities)
301 if(myIsEmbeddedMode){
305 getCommand(SMESHDS_ChangePolyhedronNodes)->ChangePolyhedronNodes
306 (ElementID, nodes_ids, quantities);
309 //=======================================================================
310 //function : Renumber
312 //=======================================================================
313 void SMESHDS_Script::Renumber (const bool isNodes, const int startID, const int deltaID)
315 if(myIsEmbeddedMode){
319 getCommand(SMESHDS_Renumber)->Renumber( isNodes, startID, deltaID );
322 //=======================================================================
323 //function : ClearMesh
325 //=======================================================================
326 void SMESHDS_Script::ClearMesh ()
328 if(myIsEmbeddedMode){
332 Clear();// previous commands become useless to reproduce on client side
333 getCommand(SMESHDS_ClearAll);
336 //=======================================================================
339 //=======================================================================
340 void SMESHDS_Script::Clear()
342 list<SMESHDS_Command*>::iterator anIt = myCommands.begin();
343 for (; anIt != myCommands.end(); anIt++) {
349 //=======================================================================
352 //=======================================================================
353 const list<SMESHDS_Command*>& SMESHDS_Script::GetCommands()
359 //********************************************************************
360 //***** Methods for quadratic elements ******
361 //********************************************************************
363 //=======================================================================
366 //=======================================================================
367 void SMESHDS_Script::AddEdge(int NewEdgeID, int n1, int n2, int n12)
369 if(myIsEmbeddedMode){
373 getCommand(SMESHDS_AddQuadEdge)->AddEdge(NewEdgeID, n1, n2, n12);
376 //=======================================================================
379 //=======================================================================
380 void SMESHDS_Script::AddFace(int NewFaceID, int n1, int n2, int n3,
381 int n12, int n23, int n31)
383 if(myIsEmbeddedMode){
387 getCommand(SMESHDS_AddQuadTriangle)->AddFace(NewFaceID, n1, n2, n3,
391 //=======================================================================
394 //=======================================================================
395 void SMESHDS_Script::AddFace(int NewFaceID, int n1, int n2, int n3, int n4,
396 int n12, int n23, int n34, int n41)
398 if(myIsEmbeddedMode){
402 getCommand(SMESHDS_AddQuadQuadrangle)->AddFace(NewFaceID, n1, n2, n3, n4,
406 //=======================================================================
407 //function : AddVolume
409 //=======================================================================
410 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3, int n4,
411 int n12, int n23, int n31,
412 int n14, int n24, int n34)
414 if(myIsEmbeddedMode){
418 getCommand(SMESHDS_AddQuadTetrahedron)->AddVolume(NewVolID, 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 n5, int n12, int n23, int n34, int n41,
429 int n15, int n25, int n35, int n45)
431 if(myIsEmbeddedMode){
435 getCommand(SMESHDS_AddQuadPyramid)->AddVolume(NewVolID, n1, n2, n3, n4, n5,
440 //=======================================================================
441 //function : AddVolume
443 //=======================================================================
444 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3, int n4,
445 int n5,int n6, int n12, int n23, int n31,
446 int n45, int n56, int n64,
447 int n14, int n25, int n36)
449 if(myIsEmbeddedMode){
453 getCommand(SMESHDS_AddQuadPentahedron)->AddVolume(NewVolID, n1,n2,n3,n4,n5,n6,
459 //=======================================================================
460 //function : AddVolume
462 //=======================================================================
463 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3,
464 int n4, int n5, int n6, int n7, int n8,
465 int n12, int n23, int n34, int n41,
466 int n56, int n67, int n78, int n85,
467 int n15, int n26, int n37, int n48)
469 if(myIsEmbeddedMode){
473 getCommand(SMESHDS_AddQuadHexahedron)->AddVolume(NewVolID, n1, n2, n3, n4,