1 // SMESH SMESHDS : management of mesh data and SMESH document
3 // Copyright (C) 2003 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
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::AddEdge(int NewEdgeID, int idnode1, int idnode2)
105 if(myIsEmbeddedMode){
109 getCommand(SMESHDS_AddEdge)->AddEdge(NewEdgeID, idnode1, idnode2);
112 //=======================================================================
115 //=======================================================================
116 void SMESHDS_Script::AddFace(int NewFaceID,
117 int idnode1, int idnode2, int idnode3)
119 if(myIsEmbeddedMode){
123 getCommand(SMESHDS_AddTriangle)->AddFace(NewFaceID,
124 idnode1, idnode2, idnode3);
127 //=======================================================================
130 //=======================================================================
131 void SMESHDS_Script::AddFace(int NewFaceID,
132 int idnode1, int idnode2,
133 int idnode3, int idnode4)
135 if(myIsEmbeddedMode){
139 getCommand(SMESHDS_AddQuadrangle)->AddFace(NewFaceID,
144 //=======================================================================
147 //=======================================================================
148 void SMESHDS_Script::AddVolume(int NewID,
149 int idnode1, int idnode2,
150 int idnode3, int idnode4)
152 if(myIsEmbeddedMode){
156 getCommand(SMESHDS_AddTetrahedron)->AddVolume(NewID,
161 //=======================================================================
164 //=======================================================================
165 void SMESHDS_Script::AddVolume(int NewID,
166 int idnode1, int idnode2,
167 int idnode3, int idnode4, int idnode5)
169 if(myIsEmbeddedMode){
173 getCommand(SMESHDS_AddPyramid)->AddVolume(NewID,
175 idnode3, idnode4, idnode5);
178 //=======================================================================
181 //=======================================================================
182 void SMESHDS_Script::AddVolume(int NewID,
183 int idnode1, int idnode2, int idnode3,
184 int idnode4, int idnode5, int idnode6)
186 if(myIsEmbeddedMode){
190 getCommand(SMESHDS_AddPrism)->AddVolume(NewID,
191 idnode1, idnode2, idnode3,
192 idnode4, idnode5, idnode6);
195 //=======================================================================
198 //=======================================================================
199 void SMESHDS_Script::AddVolume(int NewID,
200 int idnode1, int idnode2, int idnode3, int idnode4,
201 int idnode5, int idnode6, int idnode7, int idnode8)
203 if(myIsEmbeddedMode){
207 getCommand(SMESHDS_AddHexahedron)->AddVolume(NewID,
208 idnode1, idnode2, idnode3, idnode4,
209 idnode5, idnode6, idnode7, idnode8);
212 //=======================================================================
213 //function : AddPolygonalFace
215 //=======================================================================
216 void SMESHDS_Script::AddPolygonalFace (int NewFaceID, std::vector<int> nodes_ids)
218 if(myIsEmbeddedMode){
222 getCommand(SMESHDS_AddPolygon)->AddPolygonalFace(NewFaceID, nodes_ids);
225 //=======================================================================
226 //function : AddPolyhedralVolume
228 //=======================================================================
229 void SMESHDS_Script::AddPolyhedralVolume (int NewID,
230 std::vector<int> nodes_ids,
231 std::vector<int> quantities)
233 if(myIsEmbeddedMode){
237 getCommand(SMESHDS_AddPolyhedron)->AddPolyhedralVolume
238 (NewID, nodes_ids, quantities);
241 //=======================================================================
244 //=======================================================================
245 void SMESHDS_Script::MoveNode(int NewNodeID, double x, double y, double z)
247 if(myIsEmbeddedMode){
251 getCommand(SMESHDS_MoveNode)->MoveNode(NewNodeID, x, y, z);
254 //=======================================================================
257 //=======================================================================
258 void SMESHDS_Script::RemoveNode(int ID)
260 if(myIsEmbeddedMode){
264 getCommand(SMESHDS_RemoveNode)->RemoveNode(ID);
267 //=======================================================================
270 //=======================================================================
271 void SMESHDS_Script::RemoveElement(int ElementID)
273 if(myIsEmbeddedMode){
277 getCommand(SMESHDS_RemoveElement)->RemoveElement(ElementID);
280 //=======================================================================
281 //function : ChangeElementNodes
283 //=======================================================================
285 void SMESHDS_Script::ChangeElementNodes(int ElementID, int nodes[], int nbnodes)
287 if(myIsEmbeddedMode){
291 getCommand(SMESHDS_ChangeElementNodes)->ChangeElementNodes( ElementID, nodes, nbnodes );
294 //=======================================================================
295 //function : ChangePolyhedronNodes
297 //=======================================================================
298 void SMESHDS_Script::ChangePolyhedronNodes (const int ElementID,
299 std::vector<int> nodes_ids,
300 std::vector<int> quantities)
302 if(myIsEmbeddedMode){
306 getCommand(SMESHDS_ChangePolyhedronNodes)->ChangePolyhedronNodes
307 (ElementID, nodes_ids, quantities);
310 //=======================================================================
311 //function : Renumber
313 //=======================================================================
314 void SMESHDS_Script::Renumber (const bool isNodes, const int startID, const int deltaID)
316 if(myIsEmbeddedMode){
320 getCommand(SMESHDS_Renumber);
323 //=======================================================================
324 //function : ClearMesh
326 //=======================================================================
327 void SMESHDS_Script::ClearMesh ()
329 if(myIsEmbeddedMode){
333 Clear();// previous commands become useless to reproduce on client side
334 getCommand(SMESHDS_ClearAll);
337 //=======================================================================
340 //=======================================================================
341 void SMESHDS_Script::Clear()
343 list<SMESHDS_Command*>::iterator anIt = myCommands.begin();
344 for (; anIt != myCommands.end(); anIt++) {
350 //=======================================================================
353 //=======================================================================
354 const list<SMESHDS_Command*>& SMESHDS_Script::GetCommands()
360 //********************************************************************
361 //***** Methods for quadratic elements ******
362 //********************************************************************
364 //=======================================================================
367 //=======================================================================
368 void SMESHDS_Script::AddEdge(int NewEdgeID, int n1, int n2, int n12)
370 if(myIsEmbeddedMode){
374 getCommand(SMESHDS_AddQuadEdge)->AddEdge(NewEdgeID, n1, n2, n12);
377 //=======================================================================
380 //=======================================================================
381 void SMESHDS_Script::AddFace(int NewFaceID, int n1, int n2, int n3,
382 int n12, int n23, int n31)
384 if(myIsEmbeddedMode){
388 getCommand(SMESHDS_AddQuadTriangle)->AddFace(NewFaceID, n1, n2, n3,
392 //=======================================================================
395 //=======================================================================
396 void SMESHDS_Script::AddFace(int NewFaceID, int n1, int n2, int n3, int n4,
397 int n12, int n23, int n34, int n41)
399 if(myIsEmbeddedMode){
403 getCommand(SMESHDS_AddQuadQuadrangle)->AddFace(NewFaceID, n1, n2, n3, n4,
407 //=======================================================================
408 //function : AddVolume
410 //=======================================================================
411 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3, int n4,
412 int n12, int n23, int n31,
413 int n14, int n24, int n34)
415 if(myIsEmbeddedMode){
419 getCommand(SMESHDS_AddQuadTetrahedron)->AddVolume(NewVolID, n1, n2, n3, n4,
424 //=======================================================================
425 //function : AddVolume
427 //=======================================================================
428 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3, int n4,
429 int n5, int n12, int n23, int n34, int n41,
430 int n15, int n25, int n35, int n45)
432 if(myIsEmbeddedMode){
436 getCommand(SMESHDS_AddQuadPyramid)->AddVolume(NewVolID, n1, n2, n3, n4, n5,
441 //=======================================================================
442 //function : AddVolume
444 //=======================================================================
445 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3, int n4,
446 int n5,int n6, int n12, int n23, int n31,
447 int n45, int n56, int n64,
448 int n14, int n25, int n36)
450 if(myIsEmbeddedMode){
454 getCommand(SMESHDS_AddQuadPentahedron)->AddVolume(NewVolID, n1,n2,n3,n4,n5,n6,
460 //=======================================================================
461 //function : AddVolume
463 //=======================================================================
464 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3,
465 int n4, int n5, int n6, int n7, int n8,
466 int n12, int n23, int n34, int n41,
467 int n56, int n67, int n78, int n85,
468 int n15, int n26, int n37, int n48)
470 if(myIsEmbeddedMode){
474 getCommand(SMESHDS_AddQuadHexahedron)->AddVolume(NewVolID, n1, n2, n3, n4,