#include "SMESHGUI_Measurements.h"
#include "SMESHGUI_MergeDlg.h"
#include "SMESHGUI_MeshInfo.h"
+#include "SMESHGUI_Meshio.h"
#include "SMESHGUI_MeshOp.h"
#include "SMESHGUI_MeshOrderOp.h"
#include "SMESHGUI_MeshPatternDlg.h"
void Control( int theCommandID );
// Definitions
+
//================================================================================
/*!
* \brief Reads meshes from file
filter.append( QObject::tr( "GMF_ASCII_FILES_FILTER" ) + " (*.mesh)" );
filter.append( QObject::tr( "GMF_BINARY_FILES_FILTER") + " (*.meshb)" );
}
+ else if (theCommandID == SMESHOp::OpImportMESHIO) {
+ if (!SMESHGUI_Meshio::IsMeshioInstalled())
+ return;
+
+ filter = SMESHGUI_Meshio::GetImportFileFilter();
+ }
QString anInitialPath = "";
if ( SUIT_FileDlg::getLastVisitedPath().isEmpty() )
}
break;
}
+ case SMESHOp::OpImportMESHIO:
+ {
+ aMeshes = SMESHGUI_Meshio::ImportMesh(theComponentMesh, filename, errors);
+ break;
+ }
}
}
catch ( const SALOME::SALOME_Exception& S_ex ) {
- errors.append( QString( "%1 :\n\t%2" ).arg( filename ).
- arg( QObject::tr( "SMESH_ERR_UNKNOWN_IMPORT_ERROR" ) ) );
+ const QString exText(S_ex.details.text);
+ if (exText.startsWith("MESHIO"))
+ errors.append('\n' + exText);
+ else
+ errors.append( QString( "%1 :\n\t%2" ).arg( filename ).
+ arg( QObject::tr( "SMESH_ERR_UNKNOWN_IMPORT_ERROR" ) ) );
}
for ( int i = 0, iEnd = aMeshes->length(); i < iEnd; i++ )
theCommandID == SMESHOp::OpPopupExportCGNS );
const bool isGMF = ( theCommandID == SMESHOp::OpExportGMF ||
theCommandID == SMESHOp::OpPopupExportGMF );
+ const bool isMESHIO = (theCommandID == SMESHOp::OpExportMESHIO);
+
+ if (isMESHIO && !SMESHGUI_Meshio::IsMeshioInstalled())
+ {
+ return;
+ }
- const bool multiMeshSupported = ( isMED || isCGNS ); // file can hold several meshes
+ const bool multiMeshSupported = isMED || isCGNS || isMESHIO; // file can hold several meshes
if ( selected.Extent() == 0 || ( selected.Extent() > 1 && !multiMeshSupported ))
return;
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
SMESH::SMESH_Mesh_var aMesh = aMeshOrGroup->GetMesh();
QString aMeshName = (*aMeshIter).second;
- if ( isMED || isCGNS ) // formats where group names must be unique
+ if (isMED || isCGNS || isMESHIO) // formats where group names must be unique
{
// check for equal group names within each mesh
for( aMeshIter = aMeshList.begin(); aMeshIter != aMeshList.end(); aMeshIter++ ) {
// Get parameters of export operation
QString aFilename;
+ QString aSelectedFilter; // for meshio to get a filter selected by user
int aFormat =-1; // for MED version used for write
bool isOkToWrite = true; // to check MED file version compatibility before adding a mesh in an existing file
delete zTolWdg;
delete fd;
}
+ else if (isMESHIO)
+ {
+ if (SMESHGUI_Meshio::CheckMeshCount(aMeshList))
+ {
+ aFilename = SMESHGUI_Meshio::GetFileName(aSelectedFilter);
+ MESSAGE("aSelectedFilter: " << aSelectedFilter.toStdString());
+ }
+ }
else
{
return;
toCreateGroups = true;
aMesh->ExportGMF( aMeshOrGroup, aFilename.toUtf8().data(), toCreateGroups );
}
+ else if (isMESHIO)
+ {
+ SMESHGUI_Meshio::ExportMesh(aMeshList, aFilename, aSelectedFilter);
+ }
}
catch (const SALOME::SALOME_Exception& S_ex)
{
wc.suspend();
+ const QString exText(S_ex.details.text);
+
if ( S_ex.details.type == SALOME::COMM && // communicate about too large mesh
strncmp( "format=", S_ex.details.sourceFile.in(), 7 ) == 0 )
SUIT_MessageBox::critical(SMESHGUI::desktop(),
QObject::tr("SMESH_WRN_WARNING"),
QObject::tr(S_ex.details.text.in() ));
+ else if (exText.startsWith("MESHIO"))
+ {
+ SUIT_MessageBox::warning(SMESHGUI::desktop(),
+ QObject::tr("SMESH_WRN_WARNING"),
+ QObject::tr("SMESH_EXPORT_FAILED_SHORT") + "\n\n" + exText);
+ }
else
SUIT_MessageBox::warning(SMESHGUI::desktop(),
QObject::tr("SMESH_WRN_WARNING"),
case SMESHOp::OpImportSTL:
case SMESHOp::OpImportCGNS:
case SMESHOp::OpImportGMF:
+ case SMESHOp::OpImportMESHIO:
case SMESHOp::OpPopupImportDAT:
case SMESHOp::OpPopupImportUNV:
case SMESHOp::OpPopupImportMED:
case SMESHOp::OpExportSTL:
case SMESHOp::OpExportCGNS:
case SMESHOp::OpExportGMF:
+ case SMESHOp::OpExportMESHIO:
case SMESHOp::OpPopupExportDAT:
case SMESHOp::OpPopupExportMED:
case SMESHOp::OpPopupExportUNV:
createSMESHAction( SMESHOp::OpImportCGNS, "IMPORT_CGNS" );
#endif
createSMESHAction( SMESHOp::OpImportGMF, "IMPORT_GMF" );
+ createSMESHAction( SMESHOp::OpImportMESHIO, "IMPORT_MESHIO" );
createSMESHAction( SMESHOp::OpPopupImportUNV, "IMPORT_UNV");
createSMESHAction( SMESHOp::OpPopupImportMED, "IMPORT_MED");
createSMESHAction( SMESHOp::OpPopupImportSTL, "IMPORT_STL" );
createSMESHAction( SMESHOp::OpExportCGNS, "CGNS");
#endif
createSMESHAction( SMESHOp::OpExportGMF, "GMF" );
+ createSMESHAction( SMESHOp::OpExportMESHIO, "EXPORT_MESHIO" );
createSMESHAction( SMESHOp::OpPopupExportDAT, "DAT" );
createSMESHAction( SMESHOp::OpPopupExportMED, "MED" );
createSMESHAction( SMESHOp::OpPopupExportUNV, "UNV" );
transfId = createMenu( tr( "MEN_TRANSF" ), modifyId, 405 ),
basicPropId = createMenu( tr( "MEN_BASIC_PROPERTIES" ), measureId, -1, 10 );
+ // Import menu
//createMenu( SMESHOp::OpImportDAT, importId, -1 );
createMenu( SMESHOp::OpImportUNV, importId, -1 );
createMenu( SMESHOp::OpImportMED, importId, -1 );
createMenu( SMESHOp::OpImportCGNS, importId, -1 );
#endif
createMenu( SMESHOp::OpImportGMF, importId, -1 );
+ createMenu( SMESHOp::OpImportMESHIO, importId, -1 ); // formats supported by meshio lib
+
+ // Export menu
createMenu( SMESHOp::OpExportDAT, exportId, -1 );
createMenu( SMESHOp::OpExportMED, exportId, -1 );
createMenu( SMESHOp::OpExportUNV, exportId, -1 );
createMenu( SMESHOp::OpExportCGNS, exportId, -1 );
#endif
createMenu( SMESHOp::OpExportGMF, exportId, -1 );
+ createMenu( SMESHOp::OpExportMESHIO, exportId, -1 ); // formats supported by meshio lib
createMenu( separator(), fileId, 10 );
createMenu( SMESHOp::OpDelete, editId, -1 );
#endif
createPopupItem( SMESHOp::OpPopupExportGMF, OB, mesh_group, only_one_non_empty, anId );
createPopupItem( SMESHOp::OpPopupExportDAT, OB, mesh_group, only_one_non_empty, anId );
+ createPopupItem( SMESHOp::OpExportMESHIO, OB, mesh_group, only_one_non_empty, anId );
anId = popupMgr()->insert( tr( "MEN_IMPORT" ), -1, -1 ); // IMPORT submenu
createPopupItem( SMESHOp::OpPopupImportMED, OB, smesh, "", anId );