Back to index

salome-smesh  6.5.0
SMESHDS_Script.cxx
Go to the documentation of this file.
00001 // Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
00002 //
00003 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
00004 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
00005 //
00006 // This library is free software; you can redistribute it and/or
00007 // modify it under the terms of the GNU Lesser General Public
00008 // License as published by the Free Software Foundation; either
00009 // version 2.1 of the License.
00010 //
00011 // This library is distributed in the hope that it will be useful,
00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014 // Lesser General Public License for more details.
00015 //
00016 // You should have received a copy of the GNU Lesser General Public
00017 // License along with this library; if not, write to the Free Software
00018 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00019 //
00020 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
00021 //
00022 
00023 //  SMESH SMESHDS : management of mesh data and SMESH document
00024 //  File   : SMESH_Script.cxx
00025 //  Author : Yves FRICAUD, OCC
00026 //  Module : SMESH
00027 //  $Header: 
00028 //
00029 #include "SMESHDS_Script.hxx"
00030 #include <iostream>
00031 
00032 using namespace std;
00033 
00034 //=======================================================================
00035 //function : Constructor
00036 //purpose  : 
00037 //=======================================================================
00038 SMESHDS_Script::SMESHDS_Script(bool theIsEmbeddedMode):
00039   myIsEmbeddedMode(theIsEmbeddedMode)
00040 {
00041   //cerr << "=========================== myIsEmbeddedMode " << myIsEmbeddedMode << endl;
00042 }
00043 
00044 //=======================================================================
00045 //function : Destructor
00046 //purpose  : 
00047 //=======================================================================
00048 SMESHDS_Script::~SMESHDS_Script()
00049 {
00050   Clear();
00051 }
00052 
00053 //=======================================================================
00054 void SMESHDS_Script::SetModified(bool theModified)
00055 {
00056   myIsModified = theModified;
00057 }
00058 
00059 //=======================================================================
00060 bool SMESHDS_Script::IsModified()
00061 {
00062   return myIsModified;
00063 }
00064 
00065 //=======================================================================
00066 //function : getCommand
00067 //purpose  : 
00068 //=======================================================================
00069 SMESHDS_Command* SMESHDS_Script::getCommand(const SMESHDS_CommandType aType)
00070 {
00071   SMESHDS_Command* com;
00072   if (myCommands.empty())
00073   {
00074     com = new SMESHDS_Command(aType);
00075     myCommands.insert(myCommands.end(),com);
00076   }
00077   else
00078   {
00079     com = myCommands.back();
00080     if (com->GetType() != aType)
00081     {
00082       com = new SMESHDS_Command(aType);
00083       myCommands.insert(myCommands.end(),com);
00084     }
00085   }
00086   return com;
00087 }
00088 
00089 //=======================================================================
00090 //function : 
00091 //purpose  : 
00092 //=======================================================================
00093 void SMESHDS_Script::AddNode(int NewNodeID, double x, double y, double z)
00094 {
00095   if(myIsEmbeddedMode){
00096     myIsModified = true;
00097     return;
00098   }
00099   getCommand(SMESHDS_AddNode)->AddNode(NewNodeID, x, y, z);
00100 }
00101 
00102 //=======================================================================
00103 //function :
00104 //purpose  :
00105 //=======================================================================
00106 void SMESHDS_Script::Add0DElement (int New0DElementID, int idnode)
00107 {
00108   if (myIsEmbeddedMode) {
00109     myIsModified = true;
00110     return;
00111   }
00112   getCommand(SMESHDS_Add0DElement)->Add0DElement(New0DElementID, idnode);
00113 }
00114 
00115 //=======================================================================
00116 //function : 
00117 //purpose  : 
00118 //=======================================================================
00119 void SMESHDS_Script::AddEdge(int NewEdgeID, int idnode1, int idnode2)
00120 {
00121   if(myIsEmbeddedMode){
00122     myIsModified = true;
00123     return;
00124   }
00125   getCommand(SMESHDS_AddEdge)->AddEdge(NewEdgeID, idnode1, idnode2);
00126 }
00127 
00128 //=======================================================================
00129 //function : 
00130 //purpose  : 
00131 //=======================================================================
00132 void SMESHDS_Script::AddFace(int NewFaceID,
00133                              int idnode1, int idnode2, int idnode3)
00134 {
00135   if(myIsEmbeddedMode){
00136     myIsModified = true;
00137     return;
00138   }
00139   getCommand(SMESHDS_AddTriangle)->AddFace(NewFaceID,
00140                                            idnode1, idnode2, idnode3);
00141 }
00142 
00143 //=======================================================================
00144 //function : 
00145 //purpose  : 
00146 //=======================================================================
00147 void SMESHDS_Script::AddFace(int NewFaceID,
00148                              int idnode1, int idnode2,
00149                              int idnode3, int idnode4)
00150 {
00151   if(myIsEmbeddedMode){
00152     myIsModified = true;
00153     return;
00154   }
00155   getCommand(SMESHDS_AddQuadrangle)->AddFace(NewFaceID,
00156                                              idnode1, idnode2,
00157                                              idnode3, idnode4);
00158 }
00159 
00160 //=======================================================================
00161 //function : 
00162 //purpose  : 
00163 //=======================================================================
00164 void SMESHDS_Script::AddVolume(int NewID,
00165                                int idnode1, int idnode2,
00166                                int idnode3, int idnode4)
00167 {
00168   if(myIsEmbeddedMode){
00169     myIsModified = true;
00170     return;
00171   }
00172   getCommand(SMESHDS_AddTetrahedron)->AddVolume(NewID,
00173                                                 idnode1, idnode2,
00174                                                 idnode3, idnode4);
00175 }
00176 
00177 //=======================================================================
00178 //function : 
00179 //purpose  : 
00180 //=======================================================================
00181 void SMESHDS_Script::AddVolume(int NewID,
00182                                int idnode1, int idnode2,
00183                                int idnode3, int idnode4, int idnode5)
00184 {
00185   if(myIsEmbeddedMode){
00186     myIsModified = true;
00187     return;
00188   }
00189   getCommand(SMESHDS_AddPyramid)->AddVolume(NewID,
00190                                             idnode1, idnode2,
00191                                             idnode3, idnode4, idnode5);
00192 }
00193 
00194 //=======================================================================
00195 //function : 
00196 //purpose  : 
00197 //=======================================================================
00198 void SMESHDS_Script::AddVolume(int NewID,
00199                                int idnode1, int idnode2, int idnode3,
00200                                int idnode4, int idnode5, int idnode6)
00201 {
00202   if(myIsEmbeddedMode){
00203     myIsModified = true;
00204     return;
00205   }
00206   getCommand(SMESHDS_AddPrism)->AddVolume(NewID,
00207                                           idnode1, idnode2, idnode3,
00208                                           idnode4, idnode5, idnode6);
00209 }
00210 
00211 //=======================================================================
00212 //function : 
00213 //purpose  : 
00214 //=======================================================================
00215 void SMESHDS_Script::AddVolume(int NewID,
00216                                int idnode1, int idnode2, int idnode3, int idnode4,
00217                                int idnode5, int idnode6, int idnode7, int idnode8)
00218 {
00219   if(myIsEmbeddedMode){
00220     myIsModified = true;
00221     return;
00222   }
00223   getCommand(SMESHDS_AddHexahedron)->AddVolume(NewID,
00224                                                idnode1, idnode2, idnode3, idnode4,
00225                                                idnode5, idnode6, idnode7, idnode8);
00226 }
00227 
00228 //=======================================================================
00229 //function : 
00230 //purpose  : 
00231 //=======================================================================
00232 void SMESHDS_Script::AddVolume(int NewVolID, int idnode1, int idnode2, int idnode3,
00233                                int idnode4, int idnode5, int idnode6, int idnode7, int idnode8,
00234                                int idnode9, int idnode10, int idnode11, int idnode12)
00235 {
00236   if(myIsEmbeddedMode){
00237     myIsModified = true;
00238     return;
00239   }
00240   getCommand(SMESHDS_AddHexagonalPrism)->AddVolume(NewVolID,
00241                                                    idnode1, idnode2, idnode3, idnode4,
00242                                                    idnode5, idnode6, idnode7, idnode8,
00243                                                    idnode9, idnode10, idnode11, idnode12);
00244 }
00245 
00246 //=======================================================================
00247 //function : AddPolygonalFace
00248 //purpose  : 
00249 //=======================================================================
00250 void SMESHDS_Script::AddPolygonalFace (int NewFaceID, std::vector<int> nodes_ids)
00251 {
00252   if(myIsEmbeddedMode){
00253     myIsModified = true;
00254     return;
00255   }
00256   getCommand(SMESHDS_AddPolygon)->AddPolygonalFace(NewFaceID, nodes_ids);
00257 }
00258 
00259 //=======================================================================
00260 //function : AddPolyhedralVolume
00261 //purpose  : 
00262 //=======================================================================
00263 void SMESHDS_Script::AddPolyhedralVolume (int NewID,
00264                                           std::vector<int> nodes_ids,
00265                                           std::vector<int> quantities)
00266 {
00267   if(myIsEmbeddedMode){
00268     myIsModified = true;
00269     return;
00270   }
00271   getCommand(SMESHDS_AddPolyhedron)->AddPolyhedralVolume
00272     (NewID, nodes_ids, quantities);
00273 }
00274 
00275 //=======================================================================
00276 //function : 
00277 //purpose  : 
00278 //=======================================================================
00279 void SMESHDS_Script::MoveNode(int NewNodeID, double x, double y, double z)
00280 {
00281   if(myIsEmbeddedMode){
00282     myIsModified = true;
00283     return;
00284   }
00285   getCommand(SMESHDS_MoveNode)->MoveNode(NewNodeID, x, y, z);
00286 }
00287 
00288 //=======================================================================
00289 //function : 
00290 //purpose  : 
00291 //=======================================================================
00292 void SMESHDS_Script::RemoveNode(int ID)
00293 {
00294   if(myIsEmbeddedMode){
00295     myIsModified = true;
00296     return;
00297   }
00298   getCommand(SMESHDS_RemoveNode)->RemoveNode(ID);
00299 }
00300 
00301 //=======================================================================
00302 //function : 
00303 //purpose  : 
00304 //=======================================================================
00305 void SMESHDS_Script::RemoveElement(int ElementID)
00306 {
00307   if(myIsEmbeddedMode){
00308     myIsModified = true;
00309     return;
00310   }
00311   getCommand(SMESHDS_RemoveElement)->RemoveElement(ElementID);
00312 }
00313 
00314 //=======================================================================
00315 //function : ChangeElementNodes
00316 //purpose  : 
00317 //=======================================================================
00318 
00319 void SMESHDS_Script::ChangeElementNodes(int ElementID, int nodes[], int nbnodes)
00320 {
00321   if(myIsEmbeddedMode){
00322     myIsModified = true;
00323     return;
00324   }
00325   getCommand(SMESHDS_ChangeElementNodes)->ChangeElementNodes( ElementID, nodes, nbnodes );
00326 }
00327 
00328 //=======================================================================
00329 //function : ChangePolyhedronNodes
00330 //purpose  : 
00331 //=======================================================================
00332 void SMESHDS_Script::ChangePolyhedronNodes (const int        ElementID,
00333                                             std::vector<int> nodes_ids,
00334                                             std::vector<int> quantities)
00335 {
00336   if(myIsEmbeddedMode){
00337     myIsModified = true;
00338     return;
00339   }
00340   getCommand(SMESHDS_ChangePolyhedronNodes)->ChangePolyhedronNodes
00341     (ElementID, nodes_ids, quantities);
00342 }
00343 
00344 //=======================================================================
00345 //function : Renumber
00346 //purpose  : 
00347 //=======================================================================
00348 void SMESHDS_Script::Renumber (const bool isNodes, const int startID, const int deltaID)
00349 {
00350   if(myIsEmbeddedMode){
00351     myIsModified = true;
00352     return;
00353   }
00354   getCommand(SMESHDS_Renumber)->Renumber( isNodes, startID, deltaID );
00355 }
00356 
00357 //=======================================================================
00358 //function : ClearMesh
00359 //purpose  : 
00360 //=======================================================================
00361 void SMESHDS_Script::ClearMesh ()
00362 {
00363   if(myIsEmbeddedMode){
00364     myIsModified = true;
00365     return;
00366   }
00367   Clear();// previous commands become useless to reproduce on client side
00368   getCommand(SMESHDS_ClearAll);
00369 }
00370 
00371 //=======================================================================
00372 //function : 
00373 //purpose  : 
00374 //=======================================================================
00375 void SMESHDS_Script::Clear()
00376 {
00377   list<SMESHDS_Command*>::iterator anIt = myCommands.begin();
00378   for (; anIt != myCommands.end(); anIt++) {
00379     delete (*anIt);
00380   }
00381   myCommands.clear();
00382 }
00383 
00384 //=======================================================================
00385 //function : 
00386 //purpose  : 
00387 //=======================================================================
00388 const list<SMESHDS_Command*>& SMESHDS_Script::GetCommands()
00389 {
00390   return myCommands;
00391 }
00392 
00393 
00394 //********************************************************************
00395 //*****             Methods for quadratic elements              ******
00396 //********************************************************************
00397 
00398 //=======================================================================
00399 //function : AddEdge
00400 //purpose  : 
00401 //=======================================================================
00402 void SMESHDS_Script::AddEdge(int NewEdgeID, int n1, int n2, int n12)
00403 {
00404   if(myIsEmbeddedMode){
00405     myIsModified = true;
00406     return;
00407   }
00408   getCommand(SMESHDS_AddQuadEdge)->AddEdge(NewEdgeID, n1, n2, n12);
00409 }
00410 
00411 //=======================================================================
00412 //function : AddFace
00413 //purpose  : 
00414 //=======================================================================
00415 void SMESHDS_Script::AddFace(int NewFaceID, int n1, int n2, int n3,
00416                              int n12, int n23, int n31)
00417 {
00418   if(myIsEmbeddedMode){
00419     myIsModified = true;
00420     return;
00421   }
00422   getCommand(SMESHDS_AddQuadTriangle)->AddFace(NewFaceID, n1, n2, n3,
00423                                                n12, n23, n31);
00424 }
00425 
00426 //=======================================================================
00427 //function : AddFace
00428 //purpose  : 
00429 //=======================================================================
00430 void SMESHDS_Script::AddFace(int NewFaceID, int n1, int n2, int n3, int n4,
00431                              int n12, int n23, int n34, int n41)
00432 {
00433   if(myIsEmbeddedMode){
00434     myIsModified = true;
00435     return;
00436   }
00437   getCommand(SMESHDS_AddQuadQuadrangle)->AddFace(NewFaceID, n1, n2, n3, n4,
00438                                                  n12, n23, n34, n41);
00439 }
00440 
00441 //=======================================================================
00442 //function : AddFace
00443 //purpose  : 
00444 //=======================================================================
00445 void SMESHDS_Script::AddFace(int NewFaceID, int n1, int n2, int n3, int n4,
00446                              int n12, int n23, int n34, int n41, int nCenter)
00447 {
00448   if(myIsEmbeddedMode){
00449     myIsModified = true;
00450     return;
00451   }
00452   getCommand(SMESHDS_AddBiQuadQuadrangle)->AddFace(NewFaceID, n1, n2, n3, n4,
00453                                                    n12, n23, n34, n41, nCenter);
00454 }
00455 
00456 //=======================================================================
00457 //function : AddVolume
00458 //purpose  : 
00459 //=======================================================================
00460 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3, int n4,
00461                                int n12, int n23, int n31,
00462                                int n14, int n24, int n34)
00463 {
00464   if(myIsEmbeddedMode){
00465     myIsModified = true;
00466     return;
00467   }
00468   getCommand(SMESHDS_AddQuadTetrahedron)->AddVolume(NewVolID, n1, n2, n3, n4,
00469                                                     n12, n23, n31,
00470                                                     n14, n24, n34);
00471 }
00472 
00473 //=======================================================================
00474 //function : AddVolume
00475 //purpose  : 
00476 //=======================================================================
00477 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3, int n4,
00478                                int n5, int n12, int n23, int n34, int n41,
00479                                int n15, int n25, int n35, int n45)
00480 {
00481   if(myIsEmbeddedMode){
00482     myIsModified = true;
00483     return;
00484   }
00485   getCommand(SMESHDS_AddQuadPyramid)->AddVolume(NewVolID, n1, n2, n3, n4, n5,
00486                                                 n12, n23, n34, n41,
00487                                                 n15, n25, n35, n45);
00488 }
00489 
00490 //=======================================================================
00491 //function : AddVolume
00492 //purpose  : 
00493 //=======================================================================
00494 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3, int n4,
00495                                 int n5,int n6, int n12, int n23, int n31,
00496                                 int n45, int n56, int n64,
00497                                 int n14, int n25, int n36)
00498 {
00499   if(myIsEmbeddedMode){
00500     myIsModified = true;
00501     return;
00502   }
00503   getCommand(SMESHDS_AddQuadPentahedron)->AddVolume(NewVolID, n1,n2,n3,n4,n5,n6,
00504                                                     n12, n23, n31,
00505                                                     n45, n56, n64,
00506                                                     n14, n25, n36);
00507 }
00508 
00509 //=======================================================================
00510 //function : AddVolume
00511 //purpose  : 
00512 //=======================================================================
00513 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3,
00514                                int n4, int n5, int n6, int n7, int n8,
00515                                int n12, int n23, int n34, int n41,
00516                                int n56, int n67, int n78, int n85,
00517                                int n15, int n26, int n37, int n48)
00518 {
00519   if(myIsEmbeddedMode){
00520     myIsModified = true;
00521     return;
00522   }
00523   getCommand(SMESHDS_AddQuadHexahedron)->AddVolume(NewVolID, n1, n2, n3, n4,
00524                                                    n5, n6, n7, n8,
00525                                                    n12, n23, n34, n41,
00526                                                    n56, n67, n78, n85,
00527                                                    n15, n26, n37, n48);
00528 }
00529 
00530 //=======================================================================
00531 //function : AddVolume
00532 //purpose  : 
00533 //=======================================================================
00534 void SMESHDS_Script::AddVolume(int NewVolID, int n1, int n2, int n3,
00535                                int n4, int n5, int n6, int n7, int n8,
00536                                int n12, int n23, int n34, int n41,
00537                                int n56, int n67, int n78, int n85,
00538                                int n15, int n26, int n37, int n48,
00539                                int n1234,int n1256,int n2367,int n3478,
00540                                int n1458,int n5678,int nCenter)
00541 {
00542   if(myIsEmbeddedMode){
00543     myIsModified = true;
00544     return;
00545   }
00546   getCommand(SMESHDS_AddTriQuadHexa)->AddVolume(NewVolID, n1, n2, n3, n4,
00547                                                 n5, n6, n7, n8,
00548                                                 n12, n23, n34, n41,
00549                                                 n56, n67, n78, n85,
00550                                                 n15, n26, n37, n48,
00551                                                 n1234, n1256, n2367, n3478,
00552                                                 n1458, n5678, nCenter);
00553 }
00554