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"
33 //=======================================================================
34 //function : Constructor
36 //=======================================================================
37 SMESHDS_Script::SMESHDS_Script(bool theIsEmbeddedMode):
38 myIsEmbeddedMode(theIsEmbeddedMode)
40 cerr << "=========================== myIsEmbeddedMode " << myIsEmbeddedMode << endl;
43 //=======================================================================
44 //function : Destructor
46 //=======================================================================
47 SMESHDS_Script::~SMESHDS_Script()
52 //=======================================================================
53 void SMESHDS_Script::SetModified(bool theModified)
55 myIsModified = theModified;
58 //=======================================================================
59 bool SMESHDS_Script::IsModified()
64 //=======================================================================
65 //function : getCommand
67 //=======================================================================
68 SMESHDS_Command* SMESHDS_Script::getCommand(const SMESHDS_CommandType aType)
71 if (myCommands.empty())
73 com = new SMESHDS_Command(aType);
74 myCommands.insert(myCommands.end(),com);
78 com = myCommands.back();
79 if (com->GetType() != aType)
81 com = new SMESHDS_Command(aType);
82 myCommands.insert(myCommands.end(),com);
88 //=======================================================================
91 //=======================================================================
92 void SMESHDS_Script::AddNode(int NewNodeID, double x, double y, double z)
98 getCommand(SMESHDS_AddNode)->AddNode(NewNodeID, x, y, z);
101 //=======================================================================
104 //=======================================================================
105 void SMESHDS_Script::Add0DElement (int New0DElementID, int idnode)
107 if (myIsEmbeddedMode) {
111 getCommand(SMESHDS_Add0DElement)->Add0DElement(New0DElementID, idnode);
114 //=======================================================================
117 //=======================================================================
118 void SMESHDS_Script::AddEdge(int NewEdgeID, int idnode1, int idnode2)
120 if(myIsEmbeddedMode){
124 getCommand(SMESHDS_AddEdge)->AddEdge(NewEdgeID, idnode1, idnode2);
127 //=======================================================================
130 //=======================================================================
131 void SMESHDS_Script::AddFace(int NewFaceID,
132 int idnode1, int idnode2, int idnode3)
134 if(myIsEmbeddedMode){
138 getCommand(SMESHDS_AddTriangle)->AddFace(NewFaceID,
139 idnode1, idnode2, idnode3);
142 //=======================================================================
145 //=======================================================================
146 void SMESHDS_Script::AddFace(int NewFaceID,
147 int idnode1, int idnode2,
148 int idnode3, int idnode4)
150 if(myIsEmbeddedMode){
154 getCommand(SMESHDS_AddQuadrangle)->AddFace(NewFaceID,
159 //=======================================================================
162 //=======================================================================
163 void SMESHDS_Script::AddVolume(int NewID,
164 int idnode1, int idnode2,
165 int idnode3, int idnode4)
167 if(myIsEmbeddedMode){
171 getCommand(SMESHDS_AddTetrahedron)->AddVolume(NewID,
176 //=======================================================================
179 //=======================================================================
180 void SMESHDS_Script::AddVolume(int NewID,
181 int idnode1, int idnode2,
182 int idnode3, int idnode4, int idnode5)
184 if(myIsEmbeddedMode){
188 getCommand(SMESHDS_AddPyramid)->AddVolume(NewID,
190 idnode3, idnode4, idnode5);
193 //=======================================================================
196 //=======================================================================
197 void SMESHDS_Script::AddVolume(int NewID,
198 int idnode1, int idnode2, int idnode3,
199 int idnode4, int idnode5, int idnode6)
201 if(myIsEmbeddedMode){
205 getCommand(SMESHDS_AddPrism)->AddVolume(NewID,
206 idnode1, idnode2, idnode3,
207 idnode4, idnode5, idnode6);
210 //=======================================================================
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)
218 if(myIsEmbeddedMode){
222 getCommand(SMESHDS_AddHexahedron)->AddVolume(NewID,
223 idnode1, idnode2, idnode3, idnode4,
224 idnode5, idnode6, idnode7, idnode8);
227 //=======================================================================
228 //function : AddPolygonalFace
230 //=======================================================================
231 void SMESHDS_Script::AddPolygonalFace (int NewFaceID, std::vector<int> nodes_ids)
233 if(myIsEmbeddedMode){
237 getCommand(SMESHDS_AddPolygon)->AddPolygonalFace(NewFaceID, nodes_ids);
240 //=======================================================================
241 //function : AddPolyhedralVolume
243 //=======================================================================
244 void SMESHDS_Script::AddPolyhedralVolume (int NewID,
245 std::vector<int> nodes_ids,
246 std::vector<int> quantities)
248 if(myIsEmbeddedMode){
252 getCommand(SMESHDS_AddPolyhedron)->AddPolyhedralVolume
253 (NewID, nodes_ids, quantities);
256 //=======================================================================
259 //=======================================================================
260 void SMESHDS_Script::MoveNode(int NewNodeID, double x, double y, double z)
262 if(myIsEmbeddedMode){
266 getCommand(SMESHDS_MoveNode)->MoveNode(NewNodeID, x, y, z);
269 //=======================================================================
272 //=======================================================================
273 void SMESHDS_Script::RemoveNode(int ID)
275 if(myIsEmbeddedMode){
279 getCommand(SMESHDS_RemoveNode)->RemoveNode(ID);
282 //=======================================================================
285 //=======================================================================
286 void SMESHDS_Script::RemoveElement(int ElementID)
288 if(myIsEmbeddedMode){
292 getCommand(SMESHDS_RemoveElement)->RemoveElement(ElementID);
295 //=======================================================================
296 //function : ChangeElementNodes
298 //=======================================================================
300 void SMESHDS_Script::ChangeElementNodes(int ElementID, int nodes[], int nbnodes)
302 if(myIsEmbeddedMode){
306 getCommand(SMESHDS_ChangeElementNodes)->ChangeElementNodes( ElementID, nodes, nbnodes );
309 //=======================================================================
310 //function : ChangePolyhedronNodes
312 //=======================================================================
313 void SMESHDS_Script::ChangePolyhedronNodes (const int ElementID,
314 std::vector<int> nodes_ids,
315 std::vector<int> quantities)
317 if(myIsEmbeddedMode){
321 getCommand(SMESHDS_ChangePolyhedronNodes)->ChangePolyhedronNodes
322 (ElementID, nodes_ids, quantities);
325 //=======================================================================
326 //function : Renumber
328 //=======================================================================
329 void SMESHDS_Script::Renumber (const bool isNodes, const int startID, const int deltaID)
331 if(myIsEmbeddedMode){
335 getCommand(SMESHDS_Renumber)->Renumber( isNodes, startID, deltaID );
338 //=======================================================================
339 //function : ClearMesh
341 //=======================================================================
342 void SMESHDS_Script::ClearMesh ()
344 if(myIsEmbeddedMode){
348 Clear();// previous commands become useless to reproduce on client side
349 getCommand(SMESHDS_ClearAll);
352 //=======================================================================
355 //=======================================================================
356 void SMESHDS_Script::Clear()
358 list<SMESHDS_Command*>::iterator anIt = myCommands.begin();
359 for (; anIt != myCommands.end(); anIt++) {
365 //=======================================================================
368 //=======================================================================
369 const list<SMESHDS_Command*>& SMESHDS_Script::GetCommands()
375 //********************************************************************
376 //***** Methods for quadratic elements ******
377 //********************************************************************
379 //=======================================================================
382 //=======================================================================
383 void SMESHDS_Script::AddEdge(int NewEdgeID, int n1, int n2, int n12)
385 if(myIsEmbeddedMode){
389 getCommand(SMESHDS_AddQuadEdge)->AddEdge(NewEdgeID, n1, n2, n12);
392 //=======================================================================
395 //=======================================================================
396 void SMESHDS_Script::AddFace(int NewFaceID, int n1, int n2, int n3,
397 int n12, int n23, int n31)
399 if(myIsEmbeddedMode){
403 getCommand(SMESHDS_AddQuadTriangle)->AddFace(NewFaceID, n1, n2, n3,
407 //=======================================================================
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)
414 if(myIsEmbeddedMode){
418 getCommand(SMESHDS_AddQuadQuadrangle)->AddFace(NewFaceID, n1, n2, n3, n4,
422 //=======================================================================
423 //function : AddVolume
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)
430 if(myIsEmbeddedMode){
434 getCommand(SMESHDS_AddQuadTetrahedron)->AddVolume(NewVolID, n1, n2, n3, n4,
439 //=======================================================================
440 //function : AddVolume
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)
447 if(myIsEmbeddedMode){
451 getCommand(SMESHDS_AddQuadPyramid)->AddVolume(NewVolID, n1, n2, n3, n4, n5,
456 //=======================================================================
457 //function : AddVolume
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)
465 if(myIsEmbeddedMode){
469 getCommand(SMESHDS_AddQuadPentahedron)->AddVolume(NewVolID, n1,n2,n3,n4,n5,n6,
475 //=======================================================================
476 //function : AddVolume
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)
485 if(myIsEmbeddedMode){
489 getCommand(SMESHDS_AddQuadHexahedron)->AddVolume(NewVolID, n1, n2, n3, n4,