Version: 6.3.1

src/SMESHDS/SMESHDS_Command.cxx

Go to the documentation of this file.
00001 // Copyright (C) 2007-2011  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_Command.cxx
00025 //  Author : Yves FRICAUD, OCC
00026 //  Module : SMESH
00027 //  $Header: 
00028 //
00029 #include "SMESHDS_Command.hxx"
00030 
00031 #include "utilities.h"
00032 
00033 using namespace std;
00034 
00035 //=======================================================================
00036 //function : Constructor
00037 //purpose  : 
00038 //=======================================================================
00039 SMESHDS_Command::SMESHDS_Command(const SMESHDS_CommandType aType):myType(aType),
00040 myNumber(0)
00041 {
00042 }
00043 
00044 //=======================================================================
00045 //function : Destructor
00046 //purpose  : 
00047 //=======================================================================
00048 SMESHDS_Command::~SMESHDS_Command()
00049 {
00050 }
00051 
00052 //=======================================================================
00053 //function : 
00054 //purpose  : 
00055 //=======================================================================
00056 void SMESHDS_Command::AddNode(int NewNodeID, double x, double y, double z)
00057 {
00058         if (!myType == SMESHDS_AddNode)
00059         {
00060                 MESSAGE("SMESHDS_Command::AddNode : Bad Type");
00061                 return;
00062         }
00063         myIntegers.push_back(NewNodeID);
00064         myReals.push_back(x);
00065         myReals.push_back(y);
00066         myReals.push_back(z);
00067         myNumber++;
00068 }
00069 
00070 //=======================================================================
00071 //function : 
00072 //purpose  : 
00073 //=======================================================================
00074 void SMESHDS_Command::MoveNode(int NodeID, double x, double y, double z)
00075 {
00076         if (!myType == SMESHDS_MoveNode)
00077         {
00078                 MESSAGE("SMESHDS_Command::MoveNode : Bad Type");
00079                 return;
00080         }
00081         myIntegers.push_back(NodeID);
00082         myReals.push_back(x);
00083         myReals.push_back(y);
00084         myReals.push_back(z);
00085         myNumber++;
00086 }
00087 
00088 //=======================================================================
00089 //function : 
00090 //purpose  : 
00091 //=======================================================================
00092 void SMESHDS_Command::Add0DElement(int New0DElementID, int idnode)
00093 {
00094   if (!myType == SMESHDS_Add0DElement)
00095   {
00096     MESSAGE("SMESHDS_Command::Add0DElement : Bad Type");
00097     return;
00098   }
00099   myIntegers.push_back(New0DElementID);
00100   myIntegers.push_back(idnode);
00101   myNumber++;
00102 }
00103 
00104 //=======================================================================
00105 //function : 
00106 //purpose  : 
00107 //=======================================================================
00108 void SMESHDS_Command::AddEdge(int NewEdgeID, int idnode1, int idnode2)
00109 {
00110         if (!myType == SMESHDS_AddEdge)
00111         {
00112                 MESSAGE("SMESHDS_Command::AddEdge : Bad Type");
00113                 return;
00114         }
00115         myIntegers.push_back(NewEdgeID);
00116         myIntegers.push_back(idnode1);
00117         myIntegers.push_back(idnode2);
00118         myNumber++;
00119 }
00120 
00121 //=======================================================================
00122 //function : 
00123 //purpose  : 
00124 //=======================================================================
00125 void SMESHDS_Command::AddFace(int NewFaceID,
00126         int idnode1, int idnode2, int idnode3)
00127 {
00128         if (!myType == SMESHDS_AddTriangle)
00129         {
00130                 MESSAGE("SMESHDS_Command::AddFace : Bad Type");
00131                 return;
00132         }
00133         myIntegers.push_back(NewFaceID);
00134         myIntegers.push_back(idnode1);
00135         myIntegers.push_back(idnode2);
00136         myIntegers.push_back(idnode3);
00137         myNumber++;
00138 }
00139 
00140 //=======================================================================
00141 //function : 
00142 //purpose  : 
00143 //=======================================================================
00144 void SMESHDS_Command::AddFace(int NewFaceID,
00145         int idnode1, int idnode2, int idnode3, int idnode4)
00146 {
00147         if (!myType == SMESHDS_AddQuadrangle)
00148         {
00149                 MESSAGE("SMESHDS_Command::AddFace : Bad Type");
00150                 return;
00151         }
00152         myIntegers.push_back(NewFaceID);
00153         myIntegers.push_back(idnode1);
00154         myIntegers.push_back(idnode2);
00155         myIntegers.push_back(idnode3);
00156         myIntegers.push_back(idnode4);
00157         myNumber++;
00158 }
00159 
00160 //=======================================================================
00161 //function : 
00162 //purpose  : 
00163 //=======================================================================
00164 void SMESHDS_Command::AddVolume(int NewVolID,
00165         int idnode1, int idnode2, int idnode3, int idnode4)
00166 {
00167         if (!myType == SMESHDS_AddTetrahedron)
00168         {
00169                 MESSAGE("SMESHDS_Command::AddVolume : Bad Type");
00170                 return;
00171         }
00172         myIntegers.push_back(NewVolID);
00173         myIntegers.push_back(idnode1);
00174         myIntegers.push_back(idnode2);
00175         myIntegers.push_back(idnode3);
00176         myIntegers.push_back(idnode4);
00177         myNumber++;
00178 }
00179 
00180 //=======================================================================
00181 //function : 
00182 //purpose  : 
00183 //=======================================================================
00184 void SMESHDS_Command::AddVolume(int NewVolID,
00185         int idnode1, int idnode2, int idnode3, int idnode4, int idnode5)
00186 {
00187         if (!myType == SMESHDS_AddPyramid)
00188         {
00189                 MESSAGE("SMESHDS_Command::AddVolume : Bad Type");
00190                 return;
00191         }
00192         myIntegers.push_back(NewVolID);
00193         myIntegers.push_back(idnode1);
00194         myIntegers.push_back(idnode2);
00195         myIntegers.push_back(idnode3);
00196         myIntegers.push_back(idnode4);
00197         myIntegers.push_back(idnode5);
00198         myNumber++;
00199 }
00200 
00201 //=======================================================================
00202 //function : 
00203 //purpose  : 
00204 //=======================================================================
00205 void SMESHDS_Command::AddVolume(int NewVolID,
00206         int idnode1,
00207         int idnode2, int idnode3, int idnode4, int idnode5, int idnode6)
00208 {
00209         if (!myType == SMESHDS_AddPrism)
00210         {
00211                 MESSAGE("SMESHDS_Command::AddVolume : Bad Type");
00212                 return;
00213         }
00214         myIntegers.push_back(NewVolID);
00215         myIntegers.push_back(idnode1);
00216         myIntegers.push_back(idnode2);
00217         myIntegers.push_back(idnode3);
00218         myIntegers.push_back(idnode4);
00219         myIntegers.push_back(idnode5);
00220         myIntegers.push_back(idnode6);
00221         myNumber++;
00222 }
00223 
00224 //=======================================================================
00225 //function : 
00226 //purpose  : 
00227 //=======================================================================
00228 void SMESHDS_Command::AddVolume(int NewVolID,
00229         int idnode1,
00230         int idnode2,
00231         int idnode3,
00232         int idnode4, int idnode5, int idnode6, int idnode7, int idnode8)
00233 {
00234         if (!myType == SMESHDS_AddHexahedron)
00235         {
00236                 MESSAGE("SMESHDS_Command::AddVolume : Bad Type");
00237                 return;
00238         }
00239         myIntegers.push_back(NewVolID);
00240         myIntegers.push_back(idnode1);
00241         myIntegers.push_back(idnode2);
00242         myIntegers.push_back(idnode3);
00243         myIntegers.push_back(idnode4);
00244         myIntegers.push_back(idnode5);
00245         myIntegers.push_back(idnode6);
00246         myIntegers.push_back(idnode7);
00247         myIntegers.push_back(idnode8);
00248         myNumber++;
00249 }
00250 
00251 //=======================================================================
00252 //function : AddPolygonalFace
00253 //purpose  : 
00254 //=======================================================================
00255 void SMESHDS_Command::AddPolygonalFace (const int        ElementID,
00256                                         std::vector<int> nodes_ids)
00257 {
00258   if (!myType == SMESHDS_AddPolygon) {
00259     MESSAGE("SMESHDS_Command::AddPolygonalFace : Bad Type");
00260     return;
00261   }
00262   myIntegers.push_back(ElementID);
00263 
00264   int i, nbNodes = nodes_ids.size();
00265   myIntegers.push_back(nbNodes);
00266   for (i = 0; i < nbNodes; i++) {
00267     myIntegers.push_back(nodes_ids[i]);
00268   }
00269 
00270   myNumber++;
00271 }
00272 
00273 //=======================================================================
00274 //function : AddPolyhedralVolume
00275 //purpose  : 
00276 //=======================================================================
00277 void SMESHDS_Command::AddPolyhedralVolume (const int        ElementID,
00278                                            std::vector<int> nodes_ids,
00279                                            std::vector<int> quantities)
00280 {
00281   if (!myType == SMESHDS_AddPolyhedron) {
00282     MESSAGE("SMESHDS_Command::AddPolyhedralVolume : Bad Type");
00283     return;
00284   }
00285   myIntegers.push_back(ElementID);
00286 
00287   int i, nbNodes = nodes_ids.size();
00288   myIntegers.push_back(nbNodes);
00289   for (i = 0; i < nbNodes; i++) {
00290     myIntegers.push_back(nodes_ids[i]);
00291   }
00292 
00293   int nbFaces = quantities.size();
00294   myIntegers.push_back(nbFaces);
00295   for (i = 0; i < nbFaces; i++) {
00296     myIntegers.push_back(quantities[i]);
00297   }
00298 
00299   myNumber++;
00300 }
00301 
00302 //=======================================================================
00303 //function : 
00304 //purpose  : 
00305 //=======================================================================
00306 void SMESHDS_Command::RemoveNode(int NodeID)
00307 {
00308         if (!myType == SMESHDS_RemoveNode)
00309         {
00310                 MESSAGE("SMESHDS_Command::RemoveNode : Bad Type");
00311                 return;
00312         }
00313         myIntegers.push_back(NodeID);
00314         myNumber++;
00315 }
00316 
00317 //=======================================================================
00318 //function : 
00319 //purpose  : 
00320 //=======================================================================
00321 void SMESHDS_Command::RemoveElement(int ElementID)
00322 {
00323         if (!myType == SMESHDS_RemoveElement)
00324         {
00325                 MESSAGE("SMESHDS_Command::RemoveElement : Bad Type");
00326                 return;
00327         }
00328         myIntegers.push_back(ElementID);
00329         myNumber++;
00330 }
00331 
00332 //=======================================================================
00333 //function : ChangeElementNodes
00334 //purpose  : 
00335 //=======================================================================
00336 
00337 void SMESHDS_Command::ChangeElementNodes(int ElementID, int nodes[], int nbnodes)
00338 {
00339   if (!myType == SMESHDS_ChangeElementNodes)
00340   {
00341     MESSAGE("SMESHDS_Command::ChangeElementNodes : Bad Type");
00342     return;
00343   }
00344   myIntegers.push_back(ElementID);
00345   myIntegers.push_back(nbnodes);
00346   for ( int i = 0; i < nbnodes; i++ )
00347     myIntegers.push_back( nodes[ i ] );
00348 
00349   myNumber++;
00350 }
00351 
00352 //=======================================================================
00353 //function : ChangePolyhedronNodes
00354 //purpose  : 
00355 //=======================================================================
00356 void SMESHDS_Command::ChangePolyhedronNodes (const int ElementID,
00357                                              std::vector<int> nodes_ids,
00358                                              std::vector<int> quantities)
00359 {
00360   if (myType != SMESHDS_ChangePolyhedronNodes)
00361   {
00362     MESSAGE("SMESHDS_Command::ChangePolyhedronNodes : Bad Type");
00363     return;
00364   }
00365   myIntegers.push_back(ElementID);
00366 
00367   int i, nbNodes = nodes_ids.size();
00368   myIntegers.push_back(nbNodes);
00369   for (i = 0; i < nbNodes; i++) {
00370     myIntegers.push_back(nodes_ids[i]);
00371   }
00372 
00373   int nbFaces = quantities.size();
00374   myIntegers.push_back(nbFaces);
00375   for (i = 0; i < nbFaces; i++) {
00376     myIntegers.push_back(quantities[i]);
00377   }
00378 
00379   myNumber++;
00380 }
00381 
00382 //=======================================================================
00383 //function : Renumber
00384 //purpose  : 
00385 //=======================================================================
00386 
00387 void SMESHDS_Command::Renumber (const bool isNodes, const int startID, const int deltaID)
00388 {
00389   if (!myType == SMESHDS_Renumber)
00390   {
00391     MESSAGE("SMESHDS_Command::Renumber : Bad Type");
00392     return;
00393   }
00394   myIntegers.push_back(isNodes);
00395   myIntegers.push_back(startID);
00396   myIntegers.push_back(deltaID);
00397   myNumber++;
00398 }
00399 
00400 //=======================================================================
00401 //function : 
00402 //purpose  : 
00403 //=======================================================================
00404 SMESHDS_CommandType SMESHDS_Command::GetType()
00405 {
00406         return myType;
00407 }
00408 
00409 //=======================================================================
00410 //function : 
00411 //purpose  : 
00412 //=======================================================================
00413 int SMESHDS_Command::GetNumber()
00414 {
00415         return myNumber;
00416 }
00417 
00418 //=======================================================================
00419 //function : 
00420 //purpose  : 
00421 //=======================================================================
00422 const list < int >&SMESHDS_Command::GetIndexes()
00423 {
00424         return myIntegers;
00425 }
00426 
00427 //=======================================================================
00428 //function : 
00429 //purpose  : 
00430 //=======================================================================
00431 const list < double >&SMESHDS_Command::GetCoords()
00432 {
00433         return myReals;
00434 }
00435 
00436 
00437 //********************************************************************
00438 //*****             Methods for quadratic elements              ******
00439 //********************************************************************
00440 
00441 //=======================================================================
00442 //function : AddEdge
00443 //purpose  : 
00444 //=======================================================================
00445 void SMESHDS_Command::AddEdge(int NewEdgeID, int n1, int n2, int n12)
00446 {
00447   if (!myType == SMESHDS_AddQuadEdge) {
00448     MESSAGE("SMESHDS_Command::AddEdge : Bad Type");
00449     return;
00450   }
00451   myIntegers.push_back(NewEdgeID);
00452   myIntegers.push_back(n1);
00453   myIntegers.push_back(n2);
00454   myIntegers.push_back(n12);
00455   myNumber++;
00456 }
00457 
00458 //=======================================================================
00459 //function : AddFace
00460 //purpose  : 
00461 //=======================================================================
00462 void SMESHDS_Command::AddFace(int NewFaceID,
00463                               int n1, int n2, int n3,
00464                               int n12, int n23, int n31)
00465 {
00466   if (!myType == SMESHDS_AddQuadTriangle) {
00467     MESSAGE("SMESHDS_Command::AddFace : Bad Type");
00468     return;
00469   }
00470   myIntegers.push_back(NewFaceID);
00471   myIntegers.push_back(n1);
00472   myIntegers.push_back(n2);
00473   myIntegers.push_back(n3);
00474   myIntegers.push_back(n12);
00475   myIntegers.push_back(n23);
00476   myIntegers.push_back(n31);
00477   myNumber++;
00478 }
00479 
00480 //=======================================================================
00481 //function : AddFace
00482 //purpose  : 
00483 //=======================================================================
00484 void SMESHDS_Command::AddFace(int NewFaceID,
00485                               int n1, int n2, int n3, int n4,
00486                               int n12, int n23, int n34, int n41)
00487 {
00488   if (!myType == SMESHDS_AddQuadQuadrangle) {
00489     MESSAGE("SMESHDS_Command::AddFace : Bad Type");
00490     return;
00491   }
00492   myIntegers.push_back(NewFaceID);
00493   myIntegers.push_back(n1);
00494   myIntegers.push_back(n2);
00495   myIntegers.push_back(n3);
00496   myIntegers.push_back(n4);
00497   myIntegers.push_back(n12);
00498   myIntegers.push_back(n23);
00499   myIntegers.push_back(n34);
00500   myIntegers.push_back(n41);
00501   myNumber++;
00502 }
00503 
00504 //=======================================================================
00505 //function : AddVolume
00506 //purpose  : 
00507 //=======================================================================
00508 void SMESHDS_Command::AddVolume(int NewVolID, int n1, int n2, int n3, int n4,
00509                                 int n12, int n23, int n31,
00510                                 int n14, int n24, int n34)
00511 {
00512   if (!myType == SMESHDS_AddQuadTetrahedron) {
00513     MESSAGE("SMESHDS_Command::AddVolume : Bad Type");
00514     return;
00515   }
00516   myIntegers.push_back(NewVolID);
00517   myIntegers.push_back(n1);
00518   myIntegers.push_back(n2);
00519   myIntegers.push_back(n3);
00520   myIntegers.push_back(n4);
00521   myIntegers.push_back(n12);
00522   myIntegers.push_back(n23);
00523   myIntegers.push_back(n31);
00524   myIntegers.push_back(n14);
00525   myIntegers.push_back(n24);
00526   myIntegers.push_back(n34);
00527   myNumber++;
00528 }
00529 
00530 //=======================================================================
00531 //function : AddVolume
00532 //purpose  : 
00533 //=======================================================================
00534 void SMESHDS_Command::AddVolume(int NewVolID, int n1, int n2,
00535                                 int n3, int n4, int n5,
00536                                 int n12, int n23, int n34, int n41,
00537                                 int n15, int n25, int n35, int n45)
00538 {
00539   if (!myType == SMESHDS_AddQuadPyramid) {
00540     MESSAGE("SMESHDS_Command::AddVolume : Bad Type");
00541     return;
00542   }
00543   myIntegers.push_back(NewVolID);
00544   myIntegers.push_back(n1);
00545   myIntegers.push_back(n2);
00546   myIntegers.push_back(n3);
00547   myIntegers.push_back(n4);
00548   myIntegers.push_back(n5);
00549   myIntegers.push_back(n12);
00550   myIntegers.push_back(n23);
00551   myIntegers.push_back(n34);
00552   myIntegers.push_back(n41);
00553   myIntegers.push_back(n15);
00554   myIntegers.push_back(n25);
00555   myIntegers.push_back(n35);
00556   myIntegers.push_back(n45);
00557   myNumber++;
00558 }
00559 
00560 //=======================================================================
00561 //function : AddVolume
00562 //purpose  : 
00563 //=======================================================================
00564 void SMESHDS_Command::AddVolume(int NewVolID, int n1, int n2,
00565                                 int n3, int n4, int n5,int n6,
00566                                 int n12, int n23, int n31,
00567                                 int n45, int n56, int n64,
00568                                 int n14, int n25, int n36)
00569 {
00570   if (!myType == SMESHDS_AddQuadPentahedron) {
00571     MESSAGE("SMESHDS_Command::AddVolume : Bad Type");
00572     return;
00573   }
00574   myIntegers.push_back(NewVolID);
00575   myIntegers.push_back(n1);
00576   myIntegers.push_back(n2);
00577   myIntegers.push_back(n3);
00578   myIntegers.push_back(n4);
00579   myIntegers.push_back(n5);
00580   myIntegers.push_back(n6);
00581   myIntegers.push_back(n12);
00582   myIntegers.push_back(n23);
00583   myIntegers.push_back(n31);
00584   myIntegers.push_back(n45);
00585   myIntegers.push_back(n56);
00586   myIntegers.push_back(n64);
00587   myIntegers.push_back(n14);
00588   myIntegers.push_back(n25);
00589   myIntegers.push_back(n36);
00590   myNumber++;
00591 }
00592 
00593 //=======================================================================
00594 //function : AddVolume
00595 //purpose  : 
00596 //=======================================================================
00597 void SMESHDS_Command::AddVolume(int NewVolID, int n1, int n2, int n3,
00598                                 int n4, int n5, int n6, int n7, int n8,
00599                                 int n12, int n23, int n34, int n41,
00600                                 int n56, int n67, int n78, int n85,
00601                                 int n15, int n26, int n37, int n48)
00602 {
00603   if (!myType == SMESHDS_AddQuadHexahedron) {
00604     MESSAGE("SMESHDS_Command::AddVolume : Bad Type");
00605     return;
00606   }
00607   myIntegers.push_back(NewVolID);
00608   myIntegers.push_back(n1);
00609   myIntegers.push_back(n2);
00610   myIntegers.push_back(n3);
00611   myIntegers.push_back(n4);
00612   myIntegers.push_back(n5);
00613   myIntegers.push_back(n6);
00614   myIntegers.push_back(n7);
00615   myIntegers.push_back(n8);
00616   myIntegers.push_back(n12);
00617   myIntegers.push_back(n23);
00618   myIntegers.push_back(n34);
00619   myIntegers.push_back(n41);
00620   myIntegers.push_back(n56);
00621   myIntegers.push_back(n67);
00622   myIntegers.push_back(n78);
00623   myIntegers.push_back(n85);
00624   myIntegers.push_back(n15);
00625   myIntegers.push_back(n26);
00626   myIntegers.push_back(n37);
00627   myIntegers.push_back(n48);
00628   myNumber++;
00629 }
00630 
Copyright © 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
Copyright © 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS