X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH%2FSMESH_Mesh.cxx;h=d21330b4e83e5ca0544c0935cbbf91a5301a964c;hp=e35195d3368dbf6697eaa76069f83c403414ec22;hb=cc54cd4b94f313f2f4c831cf2ab5de31eb71e11b;hpb=4039f267f1074db87ed73e03bd51ac77b66611e0 diff --git a/src/SMESH/SMESH_Mesh.cxx b/src/SMESH/SMESH_Mesh.cxx index e35195d33..d21330b4e 100644 --- a/src/SMESH/SMESH_Mesh.cxx +++ b/src/SMESH/SMESH_Mesh.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -618,7 +618,7 @@ SMESH_ComputeErrorPtr SMESH_Mesh::GMFToMesh(const char* theFileName, SMESH_Hypothesis::Hypothesis_Status SMESH_Mesh::AddHypothesis(const TopoDS_Shape & aSubShape, int anHypId, - std::string* anError ) throw(SALOME_Exception) + std::string* anError ) { Unexpect aCatch(SalomeException); if(MYDEBUG) MESSAGE("SMESH_Mesh::AddHypothesis"); @@ -713,7 +713,7 @@ SMESH_Mesh::AddHypothesis(const TopoDS_Shape & aSubShape, SMESH_Hypothesis::Hypothesis_Status SMESH_Mesh::RemoveHypothesis(const TopoDS_Shape & aSubShape, - int anHypId) throw( SALOME_Exception ) + int anHypId) { Unexpect aCatch(SalomeException); if(MYDEBUG) MESSAGE("SMESH_Mesh::RemoveHypothesis"); @@ -784,7 +784,6 @@ SMESH_Mesh::RemoveHypothesis(const TopoDS_Shape & aSubShape, const std::list& SMESH_Mesh::GetHypothesisList(const TopoDS_Shape & aSubShape) const - throw(SALOME_Exception) { return _myMeshDS->GetHypothesis(aSubShape); } @@ -993,7 +992,7 @@ SMESH_Hypothesis * SMESH_Mesh::GetHypothesis(const int anHypId) const */ //============================================================================= -const std::list & SMESH_Mesh::GetLog() throw(SALOME_Exception) +const std::list & SMESH_Mesh::GetLog() { Unexpect aCatch(SalomeException); return _myMeshDS->GetScript()->GetCommands(); @@ -1004,7 +1003,7 @@ const std::list & SMESH_Mesh::GetLog() throw(SALOME_Exception) * */ //============================================================================= -void SMESH_Mesh::ClearLog() throw(SALOME_Exception) +void SMESH_Mesh::ClearLog() { Unexpect aCatch(SalomeException); _myMeshDS->GetScript()->Clear(); @@ -1017,7 +1016,6 @@ void SMESH_Mesh::ClearLog() throw(SALOME_Exception) //============================================================================= SMESH_subMesh * SMESH_Mesh::GetSubMesh(const TopoDS_Shape & aSubShape) - throw(SALOME_Exception) { int index = _myMeshDS->ShapeToIndex(aSubShape); if ( !index && aSubShape.IsNull() ) @@ -1070,7 +1068,6 @@ SMESH_subMesh * SMESH_Mesh::GetSubMesh(const TopoDS_Shape & aSubShape) //============================================================================= SMESH_subMesh *SMESH_Mesh::GetSubMeshContaining(const TopoDS_Shape & aSubShape) const - throw(SALOME_Exception) { int index = _myMeshDS->ShapeToIndex(aSubShape); return GetSubMeshContaining( index ); @@ -1084,10 +1081,8 @@ SMESH_subMesh *SMESH_Mesh::GetSubMeshContaining(const TopoDS_Shape & aSubShape) //============================================================================= SMESH_subMesh *SMESH_Mesh::GetSubMeshContaining(const int aShapeID) const -throw(SALOME_Exception) { SMESH_subMesh *aSubMesh = _subMeshHolder->Get( aShapeID ); - return aSubMesh; } @@ -1099,7 +1094,6 @@ throw(SALOME_Exception) std::list SMESH_Mesh::GetGroupSubMeshesContaining(const TopoDS_Shape & aSubShape) const - throw(SALOME_Exception) { std::list found; @@ -1165,7 +1159,7 @@ bool SMESH_Mesh::IsUsedHypothesis(SMESHDS_Hypothesis * anHyp, // algorithm parameter if (algo) { - // look trough hypotheses used by algo + // look through hypotheses used by algo const SMESH_HypoFilter* hypoKind; if (( hypoKind = algo->GetCompatibleHypoFilter( !hyp->IsAuxiliary() ))) { std::list usedHyps; @@ -1189,7 +1183,7 @@ void SMESH_Mesh::NotifySubMeshesHypothesisModification(const SMESH_Hypothesis* h if ( !GetMeshDS()->IsUsedHypothesis( hyp )) return; - int nbEntities = ( _myMeshDS->NbNodes() + _myMeshDS->NbElements() ); + smIdType nbEntities = ( _myMeshDS->NbNodes() + _myMeshDS->NbElements() ); if ( hyp && _callUp && !_callUp->IsLoaded() ) // for not loaded mesh (#16648) { _callUp->HypothesisModified( hyp->GetID(), /*updateIcons=*/true ); @@ -1263,7 +1257,7 @@ void SMESH_Mesh::NotifySubMeshesHypothesisModification(const SMESH_Hypothesis* h HasModificationsToDiscard(); // to reset _isModified flag if mesh becomes empty GetMeshDS()->Modified(); - int newNbEntities = ( _myMeshDS->NbNodes() + _myMeshDS->NbElements() ); + smIdType newNbEntities = ( _myMeshDS->NbNodes() + _myMeshDS->NbElements() ); if ( hyp && _callUp ) _callUp->HypothesisModified( hyp->GetID(), newNbEntities != nbEntities ); } @@ -1273,13 +1267,13 @@ void SMESH_Mesh::NotifySubMeshesHypothesisModification(const SMESH_Hypothesis* h * Auto color functionality */ //============================================================================= -void SMESH_Mesh::SetAutoColor(bool theAutoColor) throw(SALOME_Exception) +void SMESH_Mesh::SetAutoColor(bool theAutoColor) { Unexpect aCatch(SalomeException); _isAutoColor = theAutoColor; } -bool SMESH_Mesh::GetAutoColor() throw(SALOME_Exception) +bool SMESH_Mesh::GetAutoColor() { Unexpect aCatch(SalomeException); return _isAutoColor; @@ -1398,47 +1392,17 @@ bool SMESH_Mesh::HasDuplicatedGroupNamesMED() return false; } -//================================================================================ -/*! - * \brief Export the mesh to a med file - * \param [in] file - name of the MED file - * \param [in] theMeshName - name of this mesh - * \param [in] theAutoGroups - boolean parameter for creating/not creating - * the groups Group_On_All_Nodes, Group_On_All_Faces, ... ; - * the typical use is auto_groups=false. - * \param [in] theVersion - define the minor (xy, where version is x.y.z) of MED file format. - * If theVersion is equal to -1, the minor version is not changed (default). - * \param [in] meshPart - mesh data to export - * \param [in] theAutoDimension - if \c true, a space dimension of a MED mesh can be either - * - 1D if all mesh nodes lie on OX coordinate axis, or - * - 2D if all mesh nodes lie on XOY coordinate plane, or - * - 3D in the rest cases. - * If \a theAutoDimension is \c false, the space dimension is always 3. - * \param [in] theAddODOnVertices - to create 0D elements on all vertices - * \param [in] theAllElemsToGroup - to make every element to belong to any group (PAL23413) - * \param [in] ZTolerance - tolerance in Z direction. If Z coordinate of a node is close to zero - * within a given tolerance, the coordinate is set to zero. - * If \a ZTolerance is negative, the node coordinates are kept as is. - * \return int - mesh index in the file - */ -//================================================================================ - -void SMESH_Mesh::ExportMED(const char * file, +void SMESH_Mesh::ExportMEDCommmon(DriverMED_W_SMESHDS_Mesh& myWriter, const char* theMeshName, bool theAutoGroups, - int theVersion, const SMESHDS_Mesh* meshPart, bool theAutoDimension, bool theAddODOnVertices, double theZTolerance, bool theAllElemsToGroup) -throw(SALOME_Exception) { - MESSAGE("MED_VERSION:"<< theVersion); + Driver_Mesh::Status status = Driver_Mesh::DRS_OK; SMESH_TRY; - - DriverMED_W_SMESHDS_Mesh myWriter; - myWriter.SetFile ( file , theVersion); myWriter.SetMesh ( meshPart ? (SMESHDS_Mesh*) meshPart : _myMeshDS ); myWriter.SetAutoDimension( theAutoDimension ); myWriter.AddODOnVertices ( theAddODOnVertices ); @@ -1489,9 +1453,70 @@ throw(SALOME_Exception) } } // Perform export - myWriter.Perform(); + status = myWriter.Perform(); SMESH_CATCH( SMESH::throwSalomeEx ); + + if ( status == Driver_Mesh::DRS_TOO_LARGE_MESH ) + throw TooLargeForExport("MED"); +} + +/*! + * Same as SMESH_Mesh::ExportMED except for \a file and \a theVersion + */ +MEDCoupling::MCAuto SMESH_Mesh::ExportMEDCoupling( + const char* theMeshName, + bool theAutoGroups, + const SMESHDS_Mesh* meshPart, + bool theAutoDimension, + bool theAddODOnVertices, + double theZTolerance, + bool theAllElemsToGroup) +{ + DriverMED_W_SMESHDS_Mesh_Mem myWriter; + this->ExportMEDCommmon(myWriter,theMeshName,theAutoGroups,meshPart,theAutoDimension,theAddODOnVertices,theZTolerance,theAllElemsToGroup); + return myWriter.getData(); +} + +//================================================================================ +/*! + * \brief Export the mesh to a med file + * \param [in] file - name of the MED file + * \param [in] theMeshName - name of this mesh + * \param [in] theAutoGroups - boolean parameter for creating/not creating + * the groups Group_On_All_Nodes, Group_On_All_Faces, ... ; + * the typical use is auto_groups=false. + * \param [in] theVersion - define the minor (xy, where version is x.y.z) of MED file format. + * If theVersion is equal to -1, the minor version is not changed (default). + * \param [in] meshPart - mesh data to export + * \param [in] theAutoDimension - if \c true, a space dimension of a MED mesh can be either + * - 1D if all mesh nodes lie on OX coordinate axis, or + * - 2D if all mesh nodes lie on XOY coordinate plane, or + * - 3D in the rest cases. + * If \a theAutoDimension is \c false, the space dimension is always 3. + * \param [in] theAddODOnVertices - to create 0D elements on all vertices + * \param [in] theAllElemsToGroup - to make every element to belong to any group (PAL23413) + * \param [in] ZTolerance - tolerance in Z direction. If Z coordinate of a node is close to zero + * within a given tolerance, the coordinate is set to zero. + * If \a ZTolerance is negative, the node coordinates are kept as is. + * \return int - mesh index in the file + */ +//================================================================================ + +void SMESH_Mesh::ExportMED(const char * file, + const char* theMeshName, + bool theAutoGroups, + int theVersion, + const SMESHDS_Mesh* meshPart, + bool theAutoDimension, + bool theAddODOnVertices, + double theZTolerance, + bool theAllElemsToGroup) +{ + MESSAGE("MED_VERSION:"<< theVersion); + DriverMED_W_SMESHDS_Mesh myWriter; + myWriter.SetFile( file , theVersion ); + this->ExportMEDCommmon(myWriter,theMeshName,theAutoGroups,meshPart,theAutoDimension,theAddODOnVertices,theZTolerance,theAllElemsToGroup); } //================================================================================ @@ -1503,7 +1528,6 @@ throw(SALOME_Exception) void SMESH_Mesh::ExportSAUV(const char *file, const char* theMeshName, bool theAutoGroups) - throw(SALOME_Exception) { std::string medfilename(file); medfilename += ".med"; @@ -1517,9 +1541,15 @@ void SMESH_Mesh::ExportSAUV(const char *file, cmd += "from medutilities import my_remove ; my_remove(r'" + medfilename + "')"; cmd += "\""; system(cmd.c_str()); - ExportMED(medfilename.c_str(), theMeshName, theAutoGroups, /*minor=*/-1, - /*meshPart=*/NULL, /*theAutoDimension=*/false, /*theAddODOnVertices=*/false, - /*zTol=*/-1, /*theAllElemsToGroup=*/true ); // theAllElemsToGroup is for PAL0023413 + try { + ExportMED(medfilename.c_str(), theMeshName, theAutoGroups, /*minor=*/-1, + /*meshPart=*/NULL, /*theAutoDimension=*/false, /*theAddODOnVertices=*/false, + /*zTol=*/-1, /*theAllElemsToGroup=*/true ); // theAllElemsToGroup is for PAL0023413 + } + catch ( TooLargeForExport ) + { + throw TooLargeForExport("SAUV"); + } #ifdef WIN32 cmd = "%PYTHONBIN% "; #else @@ -1547,14 +1577,21 @@ void SMESH_Mesh::ExportSAUV(const char *file, //================================================================================ void SMESH_Mesh::ExportDAT(const char * file, - const SMESHDS_Mesh* meshPart) throw(SALOME_Exception) + const SMESHDS_Mesh* meshPart) { - Unexpect aCatch(SalomeException); + Driver_Mesh::Status status; + SMESH_TRY; + DriverDAT_W_SMDS_Mesh myWriter; myWriter.SetFile( file ); myWriter.SetMesh( meshPart ? (SMESHDS_Mesh*) meshPart : _myMeshDS ); myWriter.SetMeshId(_id); - myWriter.Perform(); + status = myWriter.Perform(); + + SMESH_CATCH( SMESH::throwSalomeEx ); + + if ( status == Driver_Mesh::DRS_TOO_LARGE_MESH ) + throw TooLargeForExport("DAT"); } //================================================================================ @@ -1564,9 +1601,11 @@ void SMESH_Mesh::ExportDAT(const char * file, //================================================================================ void SMESH_Mesh::ExportUNV(const char * file, - const SMESHDS_Mesh* meshPart) throw(SALOME_Exception) + const SMESHDS_Mesh* meshPart) { - Unexpect aCatch(SalomeException); + Driver_Mesh::Status status; + + SMESH_TRY; DriverUNV_W_SMDS_Mesh myWriter; myWriter.SetFile( file ); myWriter.SetMesh( meshPart ? (SMESHDS_Mesh*) meshPart : _myMeshDS ); @@ -1587,7 +1626,12 @@ void SMESH_Mesh::ExportUNV(const char * file, } } } - myWriter.Perform(); + status = myWriter.Perform(); + + SMESH_CATCH( SMESH::throwSalomeEx ); + + if ( status == Driver_Mesh::DRS_TOO_LARGE_MESH ) + throw TooLargeForExport("UNV"); } //================================================================================ @@ -1599,16 +1643,23 @@ void SMESH_Mesh::ExportUNV(const char * file, void SMESH_Mesh::ExportSTL(const char * file, const bool isascii, const char * name, - const SMESHDS_Mesh* meshPart) throw(SALOME_Exception) + const SMESHDS_Mesh* meshPart) { - Unexpect aCatch(SalomeException); + Driver_Mesh::Status status; + SMESH_TRY; + DriverSTL_W_SMDS_Mesh myWriter; myWriter.SetFile( file ); myWriter.SetIsAscii( isascii ); myWriter.SetMesh( meshPart ? (SMESHDS_Mesh*) meshPart : _myMeshDS); myWriter.SetMeshId(_id); if ( name ) myWriter.SetName( name ); - myWriter.Perform(); + status = myWriter.Perform(); + + SMESH_CATCH( SMESH::throwSalomeEx ); + + if ( status == Driver_Mesh::DRS_TOO_LARGE_MESH ) + throw TooLargeForExport("STL"); } //================================================================================ @@ -1622,7 +1673,9 @@ void SMESH_Mesh::ExportCGNS(const char * file, const char * meshName, const bool groupElemsByType) { + int res = Driver_Mesh::DRS_FAIL; + SMESH_TRY; // pass group names to SMESHDS std::map::iterator it = _mapGroup.begin(); @@ -1652,6 +1705,11 @@ void SMESH_Mesh::ExportCGNS(const char * file, } #endif + SMESH_CATCH( SMESH::throwSalomeEx ); + + if ( res == Driver_Mesh::DRS_TOO_LARGE_MESH ) + throw TooLargeForExport("CGNS"); + if ( res != Driver_Mesh::DRS_OK ) throw SALOME_Exception("Export failed"); } @@ -1666,12 +1724,20 @@ void SMESH_Mesh::ExportGMF(const char * file, const SMESHDS_Mesh* meshDS, bool withRequiredGroups) { + Driver_Mesh::Status status; + SMESH_TRY; + DriverGMF_Write myWriter; myWriter.SetFile( file ); myWriter.SetMesh( const_cast( meshDS )); myWriter.SetExportRequiredGroups( withRequiredGroups ); - myWriter.Perform(); + status = myWriter.Perform(); + + SMESH_CATCH( SMESH::throwSalomeEx ); + + if ( status == Driver_Mesh::DRS_TOO_LARGE_MESH ) + throw TooLargeForExport("GMF"); } //================================================================================ @@ -1754,7 +1820,7 @@ double SMESH_Mesh::GetComputeProgress() const */ //================================================================================ -int SMESH_Mesh::NbNodes() const throw(SALOME_Exception) +smIdType SMESH_Mesh::NbNodes() const { Unexpect aCatch(SalomeException); return _myMeshDS->NbNodes(); @@ -1766,7 +1832,7 @@ int SMESH_Mesh::NbNodes() const throw(SALOME_Exception) */ //================================================================================ -int SMESH_Mesh::Nb0DElements() const throw(SALOME_Exception) +smIdType SMESH_Mesh::Nb0DElements() const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().Nb0DElements(); @@ -1778,7 +1844,7 @@ int SMESH_Mesh::Nb0DElements() const throw(SALOME_Exception) */ //================================================================================ -int SMESH_Mesh::NbEdges(SMDSAbs_ElementOrder order) const throw(SALOME_Exception) +smIdType SMESH_Mesh::NbEdges(SMDSAbs_ElementOrder order) const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().NbEdges(order); @@ -1790,7 +1856,7 @@ int SMESH_Mesh::NbEdges(SMDSAbs_ElementOrder order) const throw(SALOME_Exception */ //================================================================================ -int SMESH_Mesh::NbFaces(SMDSAbs_ElementOrder order) const throw(SALOME_Exception) +smIdType SMESH_Mesh::NbFaces(SMDSAbs_ElementOrder order) const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().NbFaces(order); @@ -1802,7 +1868,7 @@ int SMESH_Mesh::NbFaces(SMDSAbs_ElementOrder order) const throw(SALOME_Exception */ //================================================================================ -int SMESH_Mesh::NbTriangles(SMDSAbs_ElementOrder order) const throw(SALOME_Exception) +smIdType SMESH_Mesh::NbTriangles(SMDSAbs_ElementOrder order) const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().NbTriangles(order); @@ -1814,7 +1880,7 @@ int SMESH_Mesh::NbTriangles(SMDSAbs_ElementOrder order) const throw(SALOME_Excep */ //================================================================================ -int SMESH_Mesh::NbBiQuadTriangles() const throw(SALOME_Exception) +smIdType SMESH_Mesh::NbBiQuadTriangles() const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().NbBiQuadTriangles(); @@ -1826,7 +1892,7 @@ int SMESH_Mesh::NbBiQuadTriangles() const throw(SALOME_Exception) */ //================================================================================ -int SMESH_Mesh::NbQuadrangles(SMDSAbs_ElementOrder order) const throw(SALOME_Exception) +smIdType SMESH_Mesh::NbQuadrangles(SMDSAbs_ElementOrder order) const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().NbQuadrangles(order); @@ -1838,7 +1904,7 @@ int SMESH_Mesh::NbQuadrangles(SMDSAbs_ElementOrder order) const throw(SALOME_Exc */ //================================================================================ -int SMESH_Mesh::NbBiQuadQuadrangles() const throw(SALOME_Exception) +smIdType SMESH_Mesh::NbBiQuadQuadrangles() const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().NbBiQuadQuadrangles(); @@ -1850,7 +1916,7 @@ int SMESH_Mesh::NbBiQuadQuadrangles() const throw(SALOME_Exception) */ //================================================================================ -int SMESH_Mesh::NbPolygons(SMDSAbs_ElementOrder order) const throw(SALOME_Exception) +smIdType SMESH_Mesh::NbPolygons(SMDSAbs_ElementOrder order) const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().NbPolygons(order); @@ -1862,7 +1928,7 @@ int SMESH_Mesh::NbPolygons(SMDSAbs_ElementOrder order) const throw(SALOME_Except */ //================================================================================ -int SMESH_Mesh::NbVolumes(SMDSAbs_ElementOrder order) const throw(SALOME_Exception) +smIdType SMESH_Mesh::NbVolumes(SMDSAbs_ElementOrder order) const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().NbVolumes(order); @@ -1874,7 +1940,7 @@ int SMESH_Mesh::NbVolumes(SMDSAbs_ElementOrder order) const throw(SALOME_Excepti */ //================================================================================ -int SMESH_Mesh::NbTetras(SMDSAbs_ElementOrder order) const throw(SALOME_Exception) +smIdType SMESH_Mesh::NbTetras(SMDSAbs_ElementOrder order) const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().NbTetras(order); @@ -1886,7 +1952,7 @@ int SMESH_Mesh::NbTetras(SMDSAbs_ElementOrder order) const throw(SALOME_Exceptio */ //================================================================================ -int SMESH_Mesh::NbHexas(SMDSAbs_ElementOrder order) const throw(SALOME_Exception) +smIdType SMESH_Mesh::NbHexas(SMDSAbs_ElementOrder order) const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().NbHexas(order); @@ -1898,7 +1964,7 @@ int SMESH_Mesh::NbHexas(SMDSAbs_ElementOrder order) const throw(SALOME_Exception */ //================================================================================ -int SMESH_Mesh::NbTriQuadraticHexas() const throw(SALOME_Exception) +smIdType SMESH_Mesh::NbTriQuadraticHexas() const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().NbTriQuadHexas(); @@ -1910,7 +1976,7 @@ int SMESH_Mesh::NbTriQuadraticHexas() const throw(SALOME_Exception) */ //================================================================================ -int SMESH_Mesh::NbPyramids(SMDSAbs_ElementOrder order) const throw(SALOME_Exception) +smIdType SMESH_Mesh::NbPyramids(SMDSAbs_ElementOrder order) const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().NbPyramids(order); @@ -1922,19 +1988,19 @@ int SMESH_Mesh::NbPyramids(SMDSAbs_ElementOrder order) const throw(SALOME_Except */ //================================================================================ -int SMESH_Mesh::NbPrisms(SMDSAbs_ElementOrder order) const throw(SALOME_Exception) +smIdType SMESH_Mesh::NbPrisms(SMDSAbs_ElementOrder order) const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().NbPrisms(order); } -int SMESH_Mesh::NbQuadPrisms() const throw (SALOME_Exception) +smIdType SMESH_Mesh::NbQuadPrisms() const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().NbQuadPrisms(); } -int SMESH_Mesh::NbBiQuadPrisms() const throw (SALOME_Exception) +smIdType SMESH_Mesh::NbBiQuadPrisms() const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().NbBiQuadPrisms(); @@ -1947,7 +2013,7 @@ int SMESH_Mesh::NbBiQuadPrisms() const throw (SALOME_Exception) */ //================================================================================ -int SMESH_Mesh::NbHexagonalPrisms() const throw(SALOME_Exception) +smIdType SMESH_Mesh::NbHexagonalPrisms() const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().NbHexPrisms(); @@ -1959,7 +2025,7 @@ int SMESH_Mesh::NbHexagonalPrisms() const throw(SALOME_Exception) */ //================================================================================ -int SMESH_Mesh::NbPolyhedrons() const throw(SALOME_Exception) +smIdType SMESH_Mesh::NbPolyhedrons() const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().NbPolyhedrons(); @@ -1971,7 +2037,7 @@ int SMESH_Mesh::NbPolyhedrons() const throw(SALOME_Exception) */ //================================================================================ -int SMESH_Mesh::NbBalls() const throw(SALOME_Exception) +smIdType SMESH_Mesh::NbBalls() const { Unexpect aCatch(SalomeException); return _myMeshDS->GetMeshInfo().NbBalls(); @@ -1983,7 +2049,7 @@ int SMESH_Mesh::NbBalls() const throw(SALOME_Exception) */ //================================================================================ -int SMESH_Mesh::NbSubMesh() const throw(SALOME_Exception) +smIdType SMESH_Mesh::NbSubMesh() const { Unexpect aCatch(SalomeException); return _myMeshDS->NbSubMesh(); @@ -2062,7 +2128,7 @@ SMESH_Group* SMESH_Mesh::AddGroup (const SMDSAbs_ElementType theType, */ //================================================================================ -SMESH_Group* SMESH_Mesh::AddGroup (SMESHDS_GroupBase* groupDS) throw(SALOME_Exception) +SMESH_Group* SMESH_Mesh::AddGroup (SMESHDS_GroupBase* groupDS) { if ( !groupDS ) throw SALOME_Exception(LOCALIZED ("SMESH_Mesh::AddGroup(): NULL SMESHDS_GroupBase")); @@ -2223,8 +2289,8 @@ ostream& SMESH_Mesh::Dump(ostream& save) save << ++clause << ") Total number of " << orderStr << " edges:\t" << NbEdges(order) << endl; save << ++clause << ") Total number of " << orderStr << " faces:\t" << NbFaces(order) << endl; if ( NbFaces(order) > 0 ) { - int nb3 = NbTriangles(order); - int nb4 = NbQuadrangles(order); + smIdType nb3 = NbTriangles(order); + smIdType nb4 = NbQuadrangles(order); save << clause << ".1) Number of " << orderStr << " triangles: \t" << nb3 << endl; save << clause << ".2) Number of " << orderStr << " quadrangles:\t" << nb4 << endl; if ( nb3 + nb4 != NbFaces(order) ) { @@ -2244,10 +2310,10 @@ ostream& SMESH_Mesh::Dump(ostream& save) } save << ++clause << ") Total number of " << orderStr << " volumes:\t" << NbVolumes(order) << endl; if ( NbVolumes(order) > 0 ) { - int nb8 = NbHexas(order); - int nb4 = NbTetras(order); - int nb5 = NbPyramids(order); - int nb6 = NbPrisms(order); + smIdType nb8 = NbHexas(order); + smIdType nb4 = NbTetras(order); + smIdType nb5 = NbPyramids(order); + smIdType nb6 = NbPrisms(order); save << clause << ".1) Number of " << orderStr << " hexahedrons: \t" << nb8 << endl; save << clause << ".2) Number of " << orderStr << " tetrahedrons:\t" << nb4 << endl; save << clause << ".3) Number of " << orderStr << " prisms: \t" << nb6 << endl; @@ -2278,7 +2344,7 @@ ostream& SMESH_Mesh::Dump(ostream& save) //purpose : Returns type of mesh element with certain id //======================================================================= -SMDSAbs_ElementType SMESH_Mesh::GetElementType( const int id, const bool iselem ) +SMDSAbs_ElementType SMESH_Mesh::GetElementType( const smIdType id, const bool iselem ) { return _myMeshDS->GetElementType( id, iselem ); } @@ -2440,6 +2506,7 @@ bool SMESH_Mesh::SortByMeshOrder(std::vector& theListToSort) con smVec.push_back( sm ); if ( sm->GetSubMeshDS() && sm->GetSubMeshDS()->IsComplexSubmesh() ) { + smVec.reserve( smVec.size() + sm->GetSubMeshDS()->NbSubMeshes() ); SMESHDS_SubMeshIteratorPtr smdsIt = sm->GetSubMeshDS()->GetSubMeshIterator(); while ( smdsIt->more() ) {