out SMESH::DriverMED_ReadStatus theStatus )
raises ( SALOME::SALOME_Exception );
+ /*!
+ * Create Mesh object(s) importing data from given MED file
+ */
+ mesh_array CreateMeshesFromSAUV( in string theFileName,
+ out SMESH::DriverMED_ReadStatus theStatus )
+ raises ( SALOME::SALOME_Exception );
+
/*!
* Create Mesh object importing data from given STL file
*/
void ExportMED( in string file, in boolean auto_groups )
raises (SALOME::SALOME_Exception);
+ /*!
+ * Export Mesh to SAUV formatted file
+ * Write a temporary med file and use med2sauv
+ */
+ void ExportSAUV( in string file, in boolean auto_groups )
+ raises (SALOME::SALOME_Exception);
+
/*!
* Return string representation of a MED file version comprising nbDigits
*/
myWriter.Perform();
}
+void SMESH_Mesh::ExportSAUV(const char *file,
+ const char* theMeshName,
+ bool theAutoGroups)
+ throw(SALOME_Exception)
+{
+ std::string medfilename(file);
+ medfilename += ".med";
+ std::string cmd;
+#ifdef WNT
+ cmd = "%PYTHONBIN% ";
+#else
+ cmd = "python ";
+#endif
+ cmd += "-c \"";
+ cmd += "from medutilities import my_remove ; my_remove(r'" + medfilename + "')";
+ cmd += "\"";
+ system(cmd.c_str());
+ ExportMED(medfilename.c_str(), theMeshName, theAutoGroups, 1);
+#ifdef WNT
+ cmd = "%PYTHONBIN% ";
+#else
+ cmd = "python ";
+#endif
+ cmd += "-c \"";
+ cmd += "from medutilities import convert ; convert(r'" + medfilename + "', 'MED', 'GIBI', 1, r'" + file + "')";
+ cmd += "\"";
+ system(cmd.c_str());
+#ifdef WNT
+ cmd = "%PYTHONBIN% ";
+#else
+ cmd = "python ";
+#endif
+ cmd += "-c \"";
+ cmd += "from medutilities import my_remove ; my_remove(r'" + medfilename + "')";
+ cmd += "\"";
+ system(cmd.c_str());
+}
+
//================================================================================
/*!
* \brief Export the mesh to a DAT file
const SMESHDS_Mesh* meshPart = 0) throw(SALOME_Exception);
void ExportCGNS(const char * file,
const SMESHDS_Mesh* mesh);
+ void ExportSAUV(const char *file,
+ const char* theMeshName = NULL,
+ bool theAutoGroups = true) throw(SALOME_Exception);
int NbNodes() const throw(SALOME_Exception);
else if ( theCommandID == 116 ) {
filter.append( QObject::tr( "CGNS_FILES_FILTER" ) + " (*.cgns)" );
}
+ else if ( theCommandID == 117 ) {
+ filter.append( QObject::tr( "SAUV files (*.sauv*)" ) );
+ filter.append( QObject::tr( "All files (*)" ) );
+ }
QString anInitialPath = "";
if ( SUIT_FileDlg::getLastVisitedPath().isEmpty() )
}
break;
}
+ case 117:
+ {
+ // SAUV format
+ SMESH::DriverMED_ReadStatus res;
+ aMeshes = theComponentMesh->CreateMeshesFromSAUV( filename.toLatin1().constData(), res );
+ if ( res != SMESH::DRS_OK ) {
+ errors.append( QString( "%1 :\n\t%2" ).arg( filename ).
+ arg( QObject::tr( QString( "SMESH_DRS_%1" ).arg( res ).toLatin1().data() ) ) );
+ }
+ break;
+ }
}
}
catch ( const SALOME::SALOME_Exception& S_ex ) {
const bool isUNV = ( theCommandID == 123 || theCommandID == 126 );
const bool isSTL = ( theCommandID == 140 || theCommandID == 141 );
const bool isCGNS= ( theCommandID == 142 || theCommandID == 143 );
+ const bool isSAUV= ( theCommandID == 144 || theCommandID == 145 );
// actually, the following condition can't be met (added for insurance)
if( selected.Extent() == 0 ||
SMESH::SMESH_Mesh_var aMesh = aMeshOrGroup->GetMesh();
QString aMeshName = (*aMeshIter).second;
- if ( isMED || isCGNS )
+ if ( isMED || isCGNS || isSAUV )
{
// check for equal group names within each mesh
for( aMeshIter = aMeshList.begin(); aMeshIter != aMeshList.end(); aMeshIter++ ) {
}
delete fd;
}
- else if ( isMED ) // Export to MED
+ else if ( isMED || isSAUV ) // Export to MED or SAUV
{
QMap<QString, SMESH::MED_VERSION> aFilterMap;
//QString v21 (aMesh->GetVersionString(SMESH::MED_V2_1, 2));
- QString v22 (aMesh->GetVersionString(SMESH::MED_V2_2, 2));
- //aFilterMap.insert( QObject::tr( "MED_VX_FILES_FILTER" ).arg( v21 ) + " (*.med)", SMESH::MED_V2_1 );
- aFilterMap.insert( QObject::tr( "MED_VX_FILES_FILTER" ).arg( v22 ) + " (*.med)", SMESH::MED_V2_2 );
+ if ( isMED ) {
+ QString v22 (aMesh->GetVersionString(SMESH::MED_V2_2, 2));
+ //aFilterMap.insert( QObject::tr( "MED_VX_FILES_FILTER" ).arg( v21 ) + " (*.med)", SMESH::MED_V2_1 );
+ aFilterMap.insert( QObject::tr( "MED_VX_FILES_FILTER" ).arg( v22 ) + " (*.med)", SMESH::MED_V2_2 );
+ }
+ else { // isSAUV
+ aFilterMap.insert("All files (*)", SMESH::MED_V2_1 );
+ aFilterMap.insert("SAUV files (*.sauv)", SMESH::MED_V2_2 );
+ aFilterMap.insert("SAUV files (*.sauve)", SMESH::MED_V2_1 );
+ }
QStringList filters;
QString aDefaultFilter;
aFormat, toOverwrite && aMeshIndex == 0 );
}
}
+ else if ( isSAUV )
+ {
+ for( aMeshIter = aMeshList.begin(); aMeshIter != aMeshList.end(); aMeshIter++ )
+ {
+ SMESH::SMESH_Mesh_var aMeshItem = SMESH::SMESH_Mesh::_narrow( (*aMeshIter).first );
+ if( !aMeshItem->_is_nil() )
+ aMeshItem->ExportSAUV( aFilename.toLatin1().data(), toCreateGroups );
+ }
+ }
else if ( isDAT )
{
if ( aMeshOrGroup->_is_equivalent( aMesh ))
case 116:
case 115:
+ case 117:
case 113:
case 112:
case 111: // IMPORT
case 141:
case 142:
case 143:
+ case 144:
+ case 145:
{
::ExportMeshToFile(theCommandID);
break;
createSMESHAction( 114, "NUM" );
createSMESHAction( 115, "STL" );
createSMESHAction( 116, "CGNS" );
+ createSMESHAction( 117, "SAUV" );
createSMESHAction( 121, "DAT" );
createSMESHAction( 122, "MED" );
createSMESHAction( 123, "UNV" );
createSMESHAction( 140, "STL" );
createSMESHAction( 142, "CGNS" );
+ createSMESHAction( 144, "SAUV" );
createSMESHAction( 124, "EXPORT_DAT" );
createSMESHAction( 125, "EXPORT_MED" );
createSMESHAction( 126, "EXPORT_UNV" );
createSMESHAction( 141, "EXPORT_STL" );
createSMESHAction( 143, "EXPORT_CGNS" );
+ createSMESHAction( 145, "EXPORT_SAUV" );
createSMESHAction( 150, "FILE_INFO" );
createSMESHAction( 33, "DELETE", "ICON_DELETE", Qt::Key_Delete );
createSMESHAction( 5105, "SEL_FILTER_LIB" );
#ifdef WITH_CGNS
createMenu( 116, importId, -1 );
#endif
+ createMenu( 117, importId, -1 );
createMenu( 121, exportId, -1 );
createMenu( 122, exportId, -1 );
createMenu( 123, exportId, -1 );
#ifdef WITH_CGNS
createMenu( 142, exportId, -1 ); // export to CGNS
#endif
+ createMenu( 144, exportId, -1 ); // export to SAUV
createMenu( separator(), fileId, 10 );
createMenu( 33, editId, -1 );
#ifdef WITH_CGNS
createPopupItem( 143, OB, mesh_group, multiple_non_empty ); // EXPORT_CGNS
#endif
+ createPopupItem( 145, OB, mesh_group, multiple_non_empty ); // EXPORT_SAUV
createPopupItem( 33, OB, mesh_part + " " + hyp_alg ); // DELETE
popupMgr()->insert( separator(), -1, 0 );
</message>
<message>
<source>MEN_EXPORT_SAUV</source>
- <translation>Export to SAUV (ASCII) file</translation>
+ <translation>Export to SAUV file</translation>
</message>
<message>
<source>MEN_EXPORT_STL</source>
</message>
<message>
<source>MEN_SAUV</source>
- <translation>SAUV (ASCII) file</translation>
+ <translation>SAUV file</translation>
</message>
<message>
<source>MEN_MERGE</source>
</message>
<message>
<source>STB_EXPORT_SAUV</source>
- <translation>Export to SAUV (ASCII) file</translation>
+ <translation>Export to SAUV file</translation>
</message>
<message>
<source>STB_EXPORT_STL</source>
</message>
<message>
<source>STB_SAUV</source>
- <translation>Import SAUV (ASCII) file</translation>
+ <translation>Import SAUV file</translation>
</message>
<message>
<source>STB_MERGE</source>
</message>
<message>
<source>TOP_EXPORT_SAUV</source>
- <translation>Export to SAUV (ASCII) file</translation>
+ <translation>Export to SAUV file</translation>
</message>
<message>
<source>TOP_EXPORT_STL</source>
</message>
<message>
<source>TOP_SAUV</source>
- <translation>Import SAUV (ASCII) file</translation>
+ <translation>Import SAUV file</translation>
</message>
<message>
<source>TOP_MERGE</source>
myMeshes.insert( make_pair( mesh->GetID(), mesh ));
return;
}
- if( method == "CreateMeshesFromMED")
+ if( method == "CreateMeshesFromMED" || method == "CreateMeshesFromSAUV")
{
for(int ind = 0;ind<theCommand->GetNbResultValues();ind++)
{
static TStringSet sameMethods;
if ( sameMethods.empty() ) {
const char * names[] =
- { "ExportDAT","ExportUNV","ExportSTL", "RemoveGroup","RemoveGroupWithContents",
+ { "ExportDAT","ExportUNV","ExportSTL","ExportSAUV", "RemoveGroup","RemoveGroupWithContents",
"GetGroups","UnionGroups","IntersectGroups","CutGroups","GetLog","GetId","ClearLog",
"GetStudyId","HasDuplicatedGroupNamesMED","GetMEDMesh","NbNodes","NbElements",
"NbEdges","NbEdgesOfOrder","NbFaces","NbFacesOfOrder","NbTriangles",
*/
//=============================================================================
-SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromMED( const char* theFileName,
- SMESH::DriverMED_ReadStatus& theStatus)
- throw ( SALOME::SALOME_Exception )
+SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromMEDorSAUV( const char* theFileName,
+ SMESH::DriverMED_ReadStatus& theStatus,
+ const char* theCommandNameForPython,
+ const char* theFileNameForPython)
{
- Unexpect aCatch(SALOME_SalomeException);
- if(MYDEBUG) MESSAGE( "SMESH_Gen_i::CreateMeshFromMED" );
-
// Retrieve mesh names from the file
DriverMED_R_SMESHDS_Mesh myReader;
myReader.SetFile( theFileName );
}
// Update Python script
- aPythonDump << "], status) = " << this << ".CreateMeshesFromMED(r'" << theFileName << "')";
+ aPythonDump << "], status) = " << this << "." << theCommandNameForPython << "(r'" << theFileNameForPython << "')";
}
// Dump creation of groups
for ( int i = 0; i < aResult->length(); ++i )
return aResult._retn();
}
+SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromMED( const char* theFileName,
+ SMESH::DriverMED_ReadStatus& theStatus)
+ throw ( SALOME::SALOME_Exception )
+{
+ Unexpect aCatch(SALOME_SalomeException);
+ if(MYDEBUG) MESSAGE( "SMESH_Gen_i::CreateMeshFromMED" );
+ SMESH::mesh_array* result = CreateMeshesFromMEDorSAUV(theFileName, theStatus, "CreateMeshesFromMED", theFileName);
+ return result;
+}
+
+//=============================================================================
+/*!
+ * SMESH_Gen_i::CreateMeshFromSAUV
+ *
+ * Create mesh and import data from SAUV file
+ */
+//=============================================================================
+
+SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromSAUV( const char* theFileName,
+ SMESH::DriverMED_ReadStatus& theStatus)
+ throw ( SALOME::SALOME_Exception )
+{
+ Unexpect aCatch(SALOME_SalomeException);
+ if(MYDEBUG) MESSAGE( "SMESH_Gen_i::CreateMeshFromSAUV" );
+ std::string sauvfilename(theFileName);
+ std::string medfilename(theFileName);
+ medfilename += ".med";
+ std::string cmd;
+#ifdef WNT
+ cmd = "%PYTHONBIN% ";
+#else
+ cmd = "python ";
+#endif
+ cmd += "-c \"";
+ cmd += "from medutilities import convert ; convert(r'" + sauvfilename + "', 'GIBI', 'MED', 1, r'" + medfilename + "')";
+ cmd += "\"";
+ system(cmd.c_str());
+ SMESH::mesh_array* result = CreateMeshesFromMEDorSAUV(medfilename.c_str(), theStatus, "CreateMeshesFromSAUV", sauvfilename.c_str());
+#ifdef WNT
+ cmd = "%PYTHONBIN% ";
+#else
+ cmd = "python ";
+#endif
+ cmd += "-c \"";
+ cmd += "from medutilities import my_remove ; my_remove(r'" + medfilename + "')";
+ cmd += "\"";
+ system(cmd.c_str());
+ return result;
+}
+
//=============================================================================
/*!
* SMESH_Gen_i::CreateMeshFromSTL
SMESH::DriverMED_ReadStatus& theStatus )
throw ( SALOME::SALOME_Exception );
+ // Create mesh(es) and import data from MED file
+ SMESH::mesh_array* CreateMeshesFromSAUV( const char* theFileName,
+ SMESH::DriverMED_ReadStatus& theStatus )
+ throw ( SALOME::SALOME_Exception );
+
// Create mesh(es) and import data from STL file
SMESH::SMESH_Mesh_ptr CreateMeshesFromSTL( const char* theFileName )
throw ( SALOME::SALOME_Exception );
static void loadGeomData( SALOMEDS::SComponent_ptr theCompRoot );
+ SMESH::mesh_array* CreateMeshesFromMEDorSAUV( const char* theFileName,
+ SMESH::DriverMED_ReadStatus& theStatus,
+ const char* theCommandNameForPython,
+ const char* theFileNameForPython);
+
private:
static GEOM::GEOM_Gen_var myGeomGen;
static CORBA::ORB_var myOrb; // ORB reference
}
}
-void SMESH_Mesh_i::ExportToMEDX (const char* file,
- CORBA::Boolean auto_groups,
- SMESH::MED_VERSION theVersion,
- CORBA::Boolean overwrite)
- throw(SALOME::SALOME_Exception)
+string SMESH_Mesh_i::PrepareMeshNameAndGroups(const char* file,
+ CORBA::Boolean overwrite)
{
- Unexpect aCatch(SALOME_SalomeException);
-
// Perform Export
PrepareForWriting(file, overwrite);
string aMeshName = "Mesh";
// check names of groups
checkGroupNames();
+ return aMeshName;
+}
+
+void SMESH_Mesh_i::ExportToMEDX (const char* file,
+ CORBA::Boolean auto_groups,
+ SMESH::MED_VERSION theVersion,
+ CORBA::Boolean overwrite)
+ throw(SALOME::SALOME_Exception)
+{
+ Unexpect aCatch(SALOME_SalomeException);
+ string aMeshName = PrepareMeshNameAndGroups(file, true);
TPythonDump() << _this() << ".ExportToMEDX( r'"
<< file << "', " << auto_groups << ", " << theVersion << ", " << overwrite << " )";
ExportToMEDX(file,auto_groups,SMESH::MED_V2_2,true);
}
+//================================================================================
+/*!
+ * \brief Export a mesh to a SAUV file
+ */
+//================================================================================
+
+void SMESH_Mesh_i::ExportSAUV (const char* file,
+ CORBA::Boolean auto_groups)
+ throw(SALOME::SALOME_Exception)
+{
+ Unexpect aCatch(SALOME_SalomeException);
+ string aMeshName = PrepareMeshNameAndGroups(file, true);
+ TPythonDump() << _this() << ".ExportSAUV( r'" << file << "', " << auto_groups << " )";
+ _impl->ExportSAUV(file, aMeshName.c_str(), auto_groups);
+}
+
+
//================================================================================
/*!
* \brief Export a mesh to a DAT file
void ExportMED ( const char* file,
CORBA::Boolean auto_groups ) throw (SALOME::SALOME_Exception);
+ void ExportSAUV( const char* file, CORBA::Boolean auto_groups ) throw (SALOME::SALOME_Exception);
+
void ExportDAT( const char* file ) throw (SALOME::SALOME_Exception);
void ExportUNV( const char* file ) throw (SALOME::SALOME_Exception);
void ExportSTL( const char* file, bool isascii ) throw (SALOME::SALOME_Exception);
std::map<int, ::SMESH_subMesh*> _mapSubMesh; //NRI
private:
+ std::string PrepareMeshNameAndGroups( const char* file, CORBA::Boolean overwrite );
+
/*!
* Check and correct names of mesh groups
*/
aMeshes.append(aMesh)
return aMeshes, aStatus
+ ## Creates a Mesh object(s) importing data from the given SAUV file
+ # @return a list of Mesh class instances
+ # @ingroup l2_impexp
+ def CreateMeshesFromSAUV( self,theFileName ):
+ aSmeshMeshes, aStatus = SMESH._objref_SMESH_Gen.CreateMeshesFromSAUV(self,theFileName)
+ aMeshes = []
+ for iMesh in range(len(aSmeshMeshes)) :
+ aMesh = Mesh(self, self.geompyD, aSmeshMeshes[iMesh])
+ aMeshes.append(aMesh)
+ return aMeshes, aStatus
+
## Creates a Mesh object importing data from the given STL file
# @return an instance of Mesh class
# @ingroup l2_impexp
else:
self.mesh.ExportToMEDX(f, auto_groups, version, overwrite)
+ ## Exports the mesh in a file in SAUV format
+ # @param f is the file name
+ # @param auto_groups boolean parameter for creating/not creating
+ # the groups Group_On_All_Nodes, Group_On_All_Faces, ... ;
+ # the typical use is auto_groups=false.
+ # @ingroup l2_impexp
+ def ExportSAUV(self, f, auto_groups=0):
+ self.mesh.ExportSAUV(f, auto_groups)
+
## Exports the mesh in a file in DAT format
# @param f the file name
# @param meshPart a part of mesh (group, sub-mesh) to export instead of the mesh