mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-28 02:10:35 +05:00
021382: EDF 1985 SMESH: Read/write of .mesh files (GMF format)
+ void ExportGMF(SMESH::SMESH_IDSource_ptr meshPart, + const char* file) throw (SALOME::SALOME_Exception); + SMESH::ComputeError* ImportGMFFile( const char* theFileName )
This commit is contained in:
parent
bbc0ed28d2
commit
87b989815b
@ -63,15 +63,16 @@
|
||||
#include <OSD_File.hxx>
|
||||
#include <OSD_Path.hxx>
|
||||
#include <OSD_Protection.hxx>
|
||||
#include <Standard_OutOfMemory.hxx>
|
||||
#include <TColStd_MapIteratorOfMapOfInteger.hxx>
|
||||
#include <TColStd_MapOfInteger.hxx>
|
||||
#include <TColStd_SequenceOfInteger.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <TopExp.hxx>
|
||||
#include <TopExp_Explorer.hxx>
|
||||
#include <TopoDS_Compound.hxx>
|
||||
#include <TopTools_MapOfShape.hxx>
|
||||
#include <TopTools_MapIteratorOfMapOfShape.hxx>
|
||||
#include <TopTools_MapOfShape.hxx>
|
||||
#include <TopoDS_Compound.hxx>
|
||||
|
||||
// STL Includes
|
||||
#include <algorithm>
|
||||
@ -305,7 +306,7 @@ void SMESH_Mesh_i::ClearSubMesh(CORBA::Long ShapeID)
|
||||
|
||||
//=============================================================================
|
||||
/*!
|
||||
*
|
||||
* Convert enum Driver_Mesh::Status to SMESH::DriverMED_ReadStatus
|
||||
*/
|
||||
//=============================================================================
|
||||
|
||||
@ -329,6 +330,30 @@ static SMESH::DriverMED_ReadStatus ConvertDriverMEDReadStatus (int theStatus)
|
||||
return res;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
/*!
|
||||
* Convert ::SMESH_ComputeError to SMESH::ComputeError
|
||||
*/
|
||||
//=============================================================================
|
||||
|
||||
static SMESH::ComputeError* ConvertComputeError( SMESH_ComputeErrorPtr errorPtr )
|
||||
{
|
||||
SMESH::ComputeError_var errVar = new SMESH::ComputeError();
|
||||
errVar->subShapeID = -1;
|
||||
errVar->hasBadMesh = false;
|
||||
|
||||
if ( !errorPtr || errorPtr->IsOK() )
|
||||
{
|
||||
errVar->code = SMESH::COMPERR_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
errVar->code = ConvertDriverMEDReadStatus( errorPtr->myName );
|
||||
errVar->comment = errorPtr->myComment.c_str();
|
||||
}
|
||||
return errVar._retn();
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
/*!
|
||||
* ImportMEDFile
|
||||
@ -452,6 +477,45 @@ int SMESH_Mesh_i::ImportSTLFile( const char* theFileName )
|
||||
return 1;
|
||||
}
|
||||
|
||||
//================================================================================
|
||||
/*!
|
||||
* \brief Imports data from a GMF file and returns an error description
|
||||
*/
|
||||
//================================================================================
|
||||
|
||||
SMESH::ComputeError* SMESH_Mesh_i::ImportGMFFile( const char* theFileName )
|
||||
throw (SALOME::SALOME_Exception)
|
||||
{
|
||||
SMESH_ComputeErrorPtr error;
|
||||
try {
|
||||
error = _impl->GMFToMesh( theFileName );
|
||||
}
|
||||
catch ( std::bad_alloc& exc ) {
|
||||
error = SMESH_ComputeError::New( Driver_Mesh::DRS_FAIL, "std::bad_alloc raised" );
|
||||
}
|
||||
catch ( Standard_OutOfMemory& exc ) {
|
||||
error = SMESH_ComputeError::New( Driver_Mesh::DRS_FAIL, "Standard_OutOfMemory raised" );
|
||||
}
|
||||
catch (Standard_Failure& ex) {
|
||||
error = SMESH_ComputeError::New( Driver_Mesh::DRS_FAIL, ex.DynamicType()->Name() );
|
||||
if ( ex.GetMessageString() && strlen( ex.GetMessageString() ))
|
||||
error->myComment += string(": ") + ex.GetMessageString();
|
||||
}
|
||||
catch ( SALOME_Exception& S_ex ) {
|
||||
error = SMESH_ComputeError::New( Driver_Mesh::DRS_FAIL, S_ex.what() );
|
||||
}
|
||||
catch ( std::exception& exc ) {
|
||||
error = SMESH_ComputeError::New( Driver_Mesh::DRS_FAIL, exc.what() );
|
||||
}
|
||||
catch (...) {
|
||||
error = SMESH_ComputeError::New( Driver_Mesh::DRS_FAIL, "Unknown exception" );
|
||||
}
|
||||
|
||||
CreateGroupServants();
|
||||
|
||||
return ConvertComputeError( error );
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
/*!
|
||||
*
|
||||
@ -2968,6 +3032,28 @@ void SMESH_Mesh_i::ExportCGNS(::SMESH::SMESH_IDSource_ptr meshPart,
|
||||
#endif
|
||||
}
|
||||
|
||||
//================================================================================
|
||||
/*!
|
||||
* \brief Export a part of mesh to a GMF file
|
||||
*/
|
||||
//================================================================================
|
||||
|
||||
void SMESH_Mesh_i::ExportGMF(::SMESH::SMESH_IDSource_ptr meshPart,
|
||||
const char* file)
|
||||
throw (SALOME::SALOME_Exception)
|
||||
{
|
||||
Unexpect aCatch(SALOME_SalomeException);
|
||||
if ( _preMeshInfo )
|
||||
_preMeshInfo->FullLoadFromFile();
|
||||
|
||||
PrepareForWriting(file,/*overwrite=*/true);
|
||||
|
||||
SMESH_MeshPartDS partDS( meshPart );
|
||||
_impl->ExportGMF(file, &partDS);
|
||||
|
||||
TPythonDump() << _this() << ".ExportGMF( " << meshPart<< ", r'" << file << "')";
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
/*!
|
||||
* Return implementation of SALOME_MED::MESH interfaces
|
||||
|
@ -29,6 +29,7 @@
|
||||
#include "SMESH.hxx"
|
||||
|
||||
#include <SALOMEconfig.h>
|
||||
#include CORBA_SERVER_HEADER(SMESH_Gen)
|
||||
#include CORBA_SERVER_HEADER(SMESH_Mesh)
|
||||
#include CORBA_SERVER_HEADER(SMESH_Group)
|
||||
#include CORBA_SERVER_HEADER(SMESH_Hypothesis)
|
||||
@ -197,6 +198,9 @@ public:
|
||||
int ImportSTLFile( const char* theFileName )
|
||||
throw (SALOME::SALOME_Exception);
|
||||
|
||||
SMESH::ComputeError* ImportGMFFile( const char* theFileName )
|
||||
throw (SALOME::SALOME_Exception);
|
||||
|
||||
/*!
|
||||
* consult DriverMED_R_SMESHDS_Mesh::ReadStatus for returned value
|
||||
*/
|
||||
@ -244,6 +248,8 @@ public:
|
||||
void ExportCGNS(SMESH::SMESH_IDSource_ptr meshPart,
|
||||
const char* file,
|
||||
CORBA::Boolean overwrite) throw (SALOME::SALOME_Exception);
|
||||
void ExportGMF(SMESH::SMESH_IDSource_ptr meshPart,
|
||||
const char* file) throw (SALOME::SALOME_Exception);
|
||||
|
||||
void ExportPartToMED(SMESH::SMESH_IDSource_ptr meshPart,
|
||||
const char* file,
|
||||
|
Loading…
Reference in New Issue
Block a user