mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-02-21 00:19:41 +05:00
*** empty log message ***
This commit is contained in:
parent
56b5060f4b
commit
d097f4c8ff
@ -73,6 +73,7 @@ LIB_SRC = SMESHGUI.cxx \
|
|||||||
SMESHGUI_RemoveOp.cxx \
|
SMESHGUI_RemoveOp.cxx \
|
||||||
SMESHGUI_MeshInfosDlg.cxx \
|
SMESHGUI_MeshInfosDlg.cxx \
|
||||||
SMESHGUI_StandardMeshInfosDlg.cxx \
|
SMESHGUI_StandardMeshInfosDlg.cxx \
|
||||||
|
SMESHGUI_StandardMeshInfosOp.cxx \
|
||||||
SMESHGUI_Preferences_ColorDlg.cxx \
|
SMESHGUI_Preferences_ColorDlg.cxx \
|
||||||
SMESHGUI_Preferences_ScalarBarDlg.cxx \
|
SMESHGUI_Preferences_ScalarBarDlg.cxx \
|
||||||
SMESHGUI_Preferences_SelectionDlg.cxx \
|
SMESHGUI_Preferences_SelectionDlg.cxx \
|
||||||
@ -119,7 +120,8 @@ LIB_SRC = SMESHGUI.cxx \
|
|||||||
SMESHGUI_Dialog.cxx \
|
SMESHGUI_Dialog.cxx \
|
||||||
SMESHGUI_Operation.cxx \
|
SMESHGUI_Operation.cxx \
|
||||||
SMESHGUI_SelectionOp.cxx \
|
SMESHGUI_SelectionOp.cxx \
|
||||||
SMESHGUI_DeleteOp.cxx
|
SMESHGUI_DeleteOp.cxx \
|
||||||
|
SMESHGUI_ExportMeshOp.cxx
|
||||||
|
|
||||||
LIB_MOC = \
|
LIB_MOC = \
|
||||||
SMESHGUI.h \
|
SMESHGUI.h \
|
||||||
@ -142,6 +144,7 @@ LIB_MOC = \
|
|||||||
SMESHGUI_RemoveOp.h \
|
SMESHGUI_RemoveOp.h \
|
||||||
SMESHGUI_MeshInfosDlg.h \
|
SMESHGUI_MeshInfosDlg.h \
|
||||||
SMESHGUI_StandardMeshInfosDlg.h \
|
SMESHGUI_StandardMeshInfosDlg.h \
|
||||||
|
SMESHGUI_StandardMeshInfosOp.h \
|
||||||
SMESHGUI_Preferences_ColorDlg.h \
|
SMESHGUI_Preferences_ColorDlg.h \
|
||||||
SMESHGUI_Preferences_ScalarBarDlg.h \
|
SMESHGUI_Preferences_ScalarBarDlg.h \
|
||||||
SMESHGUI_Preferences_SelectionDlg.h \
|
SMESHGUI_Preferences_SelectionDlg.h \
|
||||||
@ -175,7 +178,8 @@ LIB_MOC = \
|
|||||||
SMESHGUI_CreatePolyhedralVolumeDlg.h \
|
SMESHGUI_CreatePolyhedralVolumeDlg.h \
|
||||||
SMESHGUI_Operation.h \
|
SMESHGUI_Operation.h \
|
||||||
SMESHGUI_DeleteOp.h \
|
SMESHGUI_DeleteOp.h \
|
||||||
SMESHGUI_SelectionOp.h
|
SMESHGUI_SelectionOp.h \
|
||||||
|
SMESHGUI_ExportMeshOp.h
|
||||||
|
|
||||||
LIB_CLIENT_IDL = SALOME_Exception.idl \
|
LIB_CLIENT_IDL = SALOME_Exception.idl \
|
||||||
GEOM_Gen.idl \
|
GEOM_Gen.idl \
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
// $Header$
|
// $Header$
|
||||||
|
|
||||||
#include "SMESHGUI.h"
|
#include "SMESHGUI.h"
|
||||||
|
#include "SMESHGUI_ExportMeshOp.h"
|
||||||
#include "SMESHGUI_InitMeshOp.h"
|
#include "SMESHGUI_InitMeshOp.h"
|
||||||
#include "SMESHGUI_AddSubMeshOp.h"
|
#include "SMESHGUI_AddSubMeshOp.h"
|
||||||
#include "SMESHGUI_NodesOp.h"
|
#include "SMESHGUI_NodesOp.h"
|
||||||
@ -34,7 +35,7 @@
|
|||||||
#include "SMESHGUI_GroupDlg.h"
|
#include "SMESHGUI_GroupDlg.h"
|
||||||
#include "SMESHGUI_RemoveOp.h"
|
#include "SMESHGUI_RemoveOp.h"
|
||||||
#include "SMESHGUI_MeshInfosDlg.h"
|
#include "SMESHGUI_MeshInfosDlg.h"
|
||||||
#include "SMESHGUI_StandardMeshInfosDlg.h"
|
#include "SMESHGUI_StandardMeshInfosOp.h"
|
||||||
#include "SMESHGUI_Preferences_ColorDlg.h"
|
#include "SMESHGUI_Preferences_ColorDlg.h"
|
||||||
#include "SMESHGUI_Preferences_ScalarBarDlg.h"
|
#include "SMESHGUI_Preferences_ScalarBarDlg.h"
|
||||||
#include "SMESHGUI_Preferences_SelectionDlg.h"
|
#include "SMESHGUI_Preferences_SelectionDlg.h"
|
||||||
@ -161,8 +162,6 @@ namespace{
|
|||||||
void ImportMeshesFromFile(SMESH::SMESH_Gen_ptr theComponentMesh,
|
void ImportMeshesFromFile(SMESH::SMESH_Gen_ptr theComponentMesh,
|
||||||
int theCommandID);
|
int theCommandID);
|
||||||
|
|
||||||
void ExportMeshToFile(int theCommandID);
|
|
||||||
|
|
||||||
void SetDisplayMode(int theCommandID);
|
void SetDisplayMode(int theCommandID);
|
||||||
|
|
||||||
void SetDisplayEntity(int theCommandID);
|
void SetDisplayEntity(int theCommandID);
|
||||||
@ -255,111 +254,6 @@ namespace{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ExportMeshToFile( int theCommandID )
|
|
||||||
{
|
|
||||||
SalomeApp_SelectionMgr *aSel = SMESHGUI::selectionMgr();
|
|
||||||
SALOME_ListIO selected;
|
|
||||||
if( aSel )
|
|
||||||
aSel->selectedObjects( selected );
|
|
||||||
|
|
||||||
if(selected.Extent()){
|
|
||||||
Handle(SALOME_InteractiveObject) anIObject = selected.First();
|
|
||||||
SMESH::SMESH_Mesh_var aMesh = SMESH::IObjectToInterface<SMESH::SMESH_Mesh>(anIObject);
|
|
||||||
if ( !aMesh->_is_nil() ) {
|
|
||||||
QString aFilter, aTitle = QObject::tr("Export mesh");
|
|
||||||
QMap<QString, SMESH::MED_VERSION> aFilterMap;
|
|
||||||
switch ( theCommandID ) {
|
|
||||||
case 125:
|
|
||||||
case 122:
|
|
||||||
aFilterMap.insert( QObject::tr("MED 2.1 (*.med)"), SMESH::MED_V2_1 );
|
|
||||||
aFilterMap.insert( QObject::tr("MED 2.2 (*.med)"), SMESH::MED_V2_2 );
|
|
||||||
break;
|
|
||||||
case 124:
|
|
||||||
case 121:
|
|
||||||
aFilter = QObject::tr("DAT files (*.dat)");
|
|
||||||
break;
|
|
||||||
case 126:
|
|
||||||
case 123: {
|
|
||||||
if(aMesh->NbPyramids()){
|
|
||||||
int aRet = SUIT_MessageBox::warn2(SMESHGUI::desktop(),
|
|
||||||
QObject::tr("SMESH_WRN_WARNING"),
|
|
||||||
QObject::tr("SMESH_EXPORT_UNV").arg(anIObject->getName()),
|
|
||||||
QObject::tr("SMESH_BUT_YES"),
|
|
||||||
QObject::tr("SMESH_BUT_NO"),
|
|
||||||
0,1,0);
|
|
||||||
if(aRet)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
aFilter = QObject::tr("IDEAS files (*.unv)");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return;
|
|
||||||
}}
|
|
||||||
|
|
||||||
QString aFilename;
|
|
||||||
SMESH::MED_VERSION aFormat;
|
|
||||||
|
|
||||||
if ( theCommandID != 122 && theCommandID != 125 )
|
|
||||||
aFilename = SUIT_FileDlg::getFileName(SMESHGUI::desktop(), "", aFilter, aTitle, false);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
QStringList filters;
|
|
||||||
for ( QMap<QString, SMESH::MED_VERSION>::const_iterator it = aFilterMap.begin(); it != aFilterMap.end(); ++it )
|
|
||||||
filters.push_back( it.key() );
|
|
||||||
|
|
||||||
SUIT_FileDlg* fd = new SUIT_FileDlg( SMESHGUI::desktop(), false, true, true );
|
|
||||||
fd->setCaption( aTitle );
|
|
||||||
fd->setFilters( filters );
|
|
||||||
bool is_ok = false;
|
|
||||||
while(!is_ok){
|
|
||||||
fd->exec();
|
|
||||||
aFilename = fd->selectedFile();
|
|
||||||
aFormat = aFilterMap[fd->selectedFilter()];
|
|
||||||
is_ok = true;
|
|
||||||
if( !aFilename.isEmpty()
|
|
||||||
&& (aMesh->NbPolygons()>0 or aMesh->NbPolyhedrons()>0)
|
|
||||||
&& aFormat==SMESH::MED_V2_1){
|
|
||||||
int aRet = SUIT_MessageBox::warn2(SMESHGUI::desktop(),
|
|
||||||
QObject::tr("SMESH_WRN_WARNING"),
|
|
||||||
QObject::tr("SMESH_EXPORT_MED_V2_1").arg(anIObject->getName()),
|
|
||||||
QObject::tr("SMESH_BUT_YES"),
|
|
||||||
QObject::tr("SMESH_BUT_NO"),
|
|
||||||
0,1,0);
|
|
||||||
if(aRet){
|
|
||||||
is_ok = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
delete fd;
|
|
||||||
}
|
|
||||||
if ( !aFilename.isEmpty() ) {
|
|
||||||
// Check whether the file already exists and delete it if yes
|
|
||||||
QFile aFile( aFilename );
|
|
||||||
if ( aFile.exists() )
|
|
||||||
aFile.remove();
|
|
||||||
SUIT_OverrideCursor wc;
|
|
||||||
switch ( theCommandID ) {
|
|
||||||
case 125:
|
|
||||||
case 122:
|
|
||||||
aMesh->ExportToMED( aFilename.latin1(), false, aFormat ); // currently, automatic groups are never created
|
|
||||||
break;
|
|
||||||
case 124:
|
|
||||||
case 121:
|
|
||||||
aMesh->ExportDAT( aFilename.latin1() );
|
|
||||||
break;
|
|
||||||
case 126:
|
|
||||||
case 123:
|
|
||||||
aMesh->ExportUNV( aFilename.latin1() );
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void InverseEntityMode(unsigned int& theOutputMode,
|
inline void InverseEntityMode(unsigned int& theOutputMode,
|
||||||
unsigned int theMode)
|
unsigned int theMode)
|
||||||
{
|
{
|
||||||
@ -1026,7 +920,8 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
|
|||||||
case 125:
|
case 125:
|
||||||
case 126:
|
case 126:
|
||||||
{
|
{
|
||||||
::ExportMeshToFile(theCommandID);
|
startOperation( theCommandID );
|
||||||
|
//::ExportMeshToFile(theCommandID);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1631,12 +1526,13 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
new SMESHGUI_MeshInfosDlg(this, "", false);
|
new SMESHGUI_MeshInfosDlg(this, "", false);
|
||||||
|
startOperation( 900 );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 902: // STANDARD MESH INFOS
|
case 902: // STANDARD MESH INFOS
|
||||||
{
|
{
|
||||||
EmitSignalDeactivateDialog();
|
/* EmitSignalDeactivateDialog();
|
||||||
SalomeApp_SelectionMgr *aSel = SMESHGUI::selectionMgr();
|
SalomeApp_SelectionMgr *aSel = SMESHGUI::selectionMgr();
|
||||||
SALOME_ListIO selected;
|
SALOME_ListIO selected;
|
||||||
if( aSel )
|
if( aSel )
|
||||||
@ -1655,7 +1551,8 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
|
|||||||
aSel->setSelectedObjects( selected );
|
aSel->setSelectedObjects( selected );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
new SMESHGUI_StandardMeshInfosDlg( this, "", false);
|
new SMESHGUI_StandardMeshInfosDlg( this, "", false);*/
|
||||||
|
startOperation( 902 );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3283,6 +3180,26 @@ SalomeApp_Operation* SMESHGUI::createOperation( const int id ) const
|
|||||||
op = new SMESHGUI_ExtrusionOp();
|
op = new SMESHGUI_ExtrusionOp();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/* case 900:
|
||||||
|
op = new SMESHGUI_MeshInfosOp();
|
||||||
|
break;*/
|
||||||
|
|
||||||
|
case 902:
|
||||||
|
op = new SMESHGUI_StandardMeshInfosOp();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 121: case 124:
|
||||||
|
op = new SMESHGUI_ExportMeshOp( SMESHGUI_ExportMeshOp::DAT );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 122: case 125:
|
||||||
|
op = new SMESHGUI_ExportMeshOp( SMESHGUI_ExportMeshOp::MED );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 123: case 126:
|
||||||
|
op = new SMESHGUI_ExportMeshOp( SMESHGUI_ExportMeshOp::UNV );
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
op = SalomeApp_Module::createOperation( id );
|
op = SalomeApp_Module::createOperation( id );
|
||||||
break;
|
break;
|
||||||
|
177
src/SMESHGUI/SMESHGUI_ExportMeshOp.cxx
Normal file
177
src/SMESHGUI/SMESHGUI_ExportMeshOp.cxx
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
// SMESH SMESHGUI : GUI for SMESH component
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : SMESHGUI_ExportMeshOp.cxx
|
||||||
|
// Author : Alexander SOLOVYOV
|
||||||
|
// Module : SMESH
|
||||||
|
// $Header$
|
||||||
|
|
||||||
|
#include "SMESHGUI_ExportMeshOp.h"
|
||||||
|
#include <SMESHGUI_MeshUtils.h>
|
||||||
|
#include <SMESHGUI_Utils.h>
|
||||||
|
|
||||||
|
#include <SalomeApp_SelectionMgr.h>
|
||||||
|
#include <SUIT_FileDlg.h>
|
||||||
|
#include <SUIT_MessageBox.h>
|
||||||
|
#include <SUIT_Desktop.h>
|
||||||
|
#include <SUIT_OverrideCursor.h>
|
||||||
|
|
||||||
|
#include <SALOME_ListIO.hxx>
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function :
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
SMESHGUI_ExportMeshOp::SMESHGUI_ExportMeshOp( const Type t )
|
||||||
|
: SMESHGUI_Operation(),
|
||||||
|
myType( t )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function :
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
SMESHGUI_ExportMeshOp::~SMESHGUI_ExportMeshOp()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function :
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
void SMESHGUI_ExportMeshOp::startOperation()
|
||||||
|
{
|
||||||
|
SMESHGUI_Operation::startOperation();
|
||||||
|
|
||||||
|
SalomeApp_SelectionMgr *aSel = selectionMgr();
|
||||||
|
SALOME_ListIO selected;
|
||||||
|
if( aSel )
|
||||||
|
aSel->selectedObjects( selected );
|
||||||
|
|
||||||
|
if( selected.Extent()==0 )
|
||||||
|
{
|
||||||
|
abort();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Handle(SALOME_InteractiveObject) anIObject = selected.First();
|
||||||
|
SMESH::SMESH_Mesh_var aMesh = SMESH::IObjectToInterface<SMESH::SMESH_Mesh>(anIObject);
|
||||||
|
if( !aMesh->_is_nil() )
|
||||||
|
{
|
||||||
|
QString aFilter, aTitle = QObject::tr("Export mesh");
|
||||||
|
QMap<QString, SMESH::MED_VERSION> aFilterMap;
|
||||||
|
switch( myType )
|
||||||
|
{
|
||||||
|
case MED:
|
||||||
|
aFilterMap.insert( QObject::tr("MED 2.1 (*.med)"), SMESH::MED_V2_1 );
|
||||||
|
aFilterMap.insert( QObject::tr("MED 2.2 (*.med)"), SMESH::MED_V2_2 );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DAT:
|
||||||
|
aFilter = QObject::tr("DAT files (*.dat)");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case UNV:
|
||||||
|
if( aMesh->NbPyramids() )
|
||||||
|
{
|
||||||
|
int aRet = SUIT_MessageBox::warn2( desktop(), tr("SMESH_WRN_WARNING"),
|
||||||
|
tr("SMESH_EXPORT_UNV").arg(anIObject->getName()), tr("SMESH_BUT_YES"),
|
||||||
|
tr("SMESH_BUT_NO"), 0,1,0 );
|
||||||
|
if(aRet)
|
||||||
|
{
|
||||||
|
abort();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
aFilter = QObject::tr("IDEAS files (*.unv)");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
abort();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString aFilename;
|
||||||
|
SMESH::MED_VERSION aFormat;
|
||||||
|
|
||||||
|
if( myType!=MED )
|
||||||
|
aFilename = SUIT_FileDlg::getFileName( desktop(), "", aFilter, aTitle, false );
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QStringList filters;
|
||||||
|
for( QMap<QString, SMESH::MED_VERSION>::const_iterator it = aFilterMap.begin(); it != aFilterMap.end(); ++it )
|
||||||
|
filters.push_back( it.key() );
|
||||||
|
|
||||||
|
SUIT_FileDlg* fd = new SUIT_FileDlg( desktop(), false, true, true );
|
||||||
|
fd->setCaption( aTitle );
|
||||||
|
fd->setFilters( filters );
|
||||||
|
bool is_ok = false;
|
||||||
|
while( !is_ok )
|
||||||
|
{
|
||||||
|
fd->exec();
|
||||||
|
aFilename = fd->selectedFile();
|
||||||
|
aFormat = aFilterMap[fd->selectedFilter()];
|
||||||
|
is_ok = true;
|
||||||
|
if( !aFilename.isEmpty() && (aMesh->NbPolygons()>0 or aMesh->NbPolyhedrons()>0 ) && aFormat==SMESH::MED_V2_1)
|
||||||
|
{
|
||||||
|
int aRet = SUIT_MessageBox::warn2( desktop(), tr("SMESH_WRN_WARNING"),
|
||||||
|
tr("SMESH_EXPORT_MED_V2_1").arg(anIObject->getName()), tr("SMESH_BUT_YES"),
|
||||||
|
tr("SMESH_BUT_NO"), 0,1,0 );
|
||||||
|
if(aRet)
|
||||||
|
is_ok = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delete fd;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !aFilename.isEmpty() )
|
||||||
|
{
|
||||||
|
// Check whether the file already exists and delete it if yes
|
||||||
|
QFile aFile( aFilename );
|
||||||
|
if( aFile.exists() )
|
||||||
|
aFile.remove();
|
||||||
|
SUIT_OverrideCursor wc;
|
||||||
|
switch( myType )
|
||||||
|
{
|
||||||
|
case MED:
|
||||||
|
aMesh->ExportToMED( aFilename.latin1(), false, aFormat ); // currently, automatic groups are never created
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DAT:
|
||||||
|
aMesh->ExportDAT( aFilename.latin1() );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case UNV:
|
||||||
|
aMesh->ExportUNV( aFilename.latin1() );
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
abort();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
commit();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
abort();
|
||||||
|
}
|
54
src/SMESHGUI/SMESHGUI_ExportMeshOp.h
Normal file
54
src/SMESHGUI/SMESHGUI_ExportMeshOp.h
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
// SMESH SMESHGUI : GUI for SMESH component
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : SMESHGUI_ExportMeshOp.h
|
||||||
|
// Author : Alexander SOLOVYOV
|
||||||
|
// Module : SMESH
|
||||||
|
// $Header$
|
||||||
|
|
||||||
|
#ifndef OPERATION_EXPORT_MESH_H
|
||||||
|
#define OPERATION_EXPORT_MESH_H
|
||||||
|
|
||||||
|
#include <SMESHGUI_Operation.h>
|
||||||
|
|
||||||
|
class SMESHGUI_ExportMeshOp : public SMESHGUI_Operation
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
MED, DAT, UNV
|
||||||
|
|
||||||
|
} Type;
|
||||||
|
|
||||||
|
public:
|
||||||
|
SMESHGUI_ExportMeshOp( const Type );
|
||||||
|
~SMESHGUI_ExportMeshOp();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void startOperation();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Type myType;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -70,7 +70,8 @@ void SMESHGUI_Operation::startOperation()
|
|||||||
if( dlg()->testButtonFlags( QtxDialog::Cancel ) )
|
if( dlg()->testButtonFlags( QtxDialog::Cancel ) )
|
||||||
connect( dlg(), SIGNAL( dlgCancel() ), this, SLOT( onCancel() ) );
|
connect( dlg(), SIGNAL( dlgCancel() ), this, SLOT( onCancel() ) );
|
||||||
|
|
||||||
if( dlg()->testButtonFlags( QtxDialog::Close ) )
|
//if( dlg()->testButtonFlags( QtxDialog::Close ) )
|
||||||
|
//if dialog hasn't close, cancel, no and etc buttons, dlgClose will be emitted when dialog is closed not by OK
|
||||||
connect( dlg(), SIGNAL( dlgClose() ), this, SLOT( onCancel() ) );
|
connect( dlg(), SIGNAL( dlgClose() ), this, SLOT( onCancel() ) );
|
||||||
|
|
||||||
initDialog();
|
initDialog();
|
||||||
|
@ -26,44 +26,13 @@
|
|||||||
// Module : SMESH
|
// Module : SMESH
|
||||||
// $Header$
|
// $Header$
|
||||||
|
|
||||||
#include "SMESHGUI_StandardMeshInfosDlg.h"
|
#include <SMESHGUI_StandardMeshInfosDlg.h>
|
||||||
|
|
||||||
#include "SMESHGUI.h"
|
#include <SMESH_Type.h>
|
||||||
#include "SMESHGUI_Utils.h"
|
|
||||||
#include "SMESHGUI_MeshUtils.h"
|
|
||||||
|
|
||||||
#include "SMESH.hxx"
|
|
||||||
#include "SMESH_TypeFilter.hxx"
|
|
||||||
|
|
||||||
#include "SALOMEDSClient_Study.hxx"
|
|
||||||
#include "SALOMEDSClient_SObject.hxx"
|
|
||||||
|
|
||||||
#include "SUIT_Desktop.h"
|
|
||||||
#include "SUIT_Session.h"
|
|
||||||
#include "SUIT_OverrideCursor.h"
|
|
||||||
|
|
||||||
#include "SalomeApp_SelectionMgr.h"
|
|
||||||
#include "SALOME_ListIO.hxx"
|
|
||||||
|
|
||||||
#include "utilities.h"
|
|
||||||
|
|
||||||
// QT Includes
|
|
||||||
#include <qgroupbox.h>
|
|
||||||
#include <qlabel.h>
|
|
||||||
#include <qlayout.h>
|
#include <qlayout.h>
|
||||||
#include <qlineedit.h>
|
#include <qgroupbox.h>
|
||||||
#include <qtextbrowser.h>
|
#include <qtextbrowser.h>
|
||||||
#include <qmap.h>
|
|
||||||
#include <qpushbutton.h>
|
|
||||||
|
|
||||||
// IDL Headers
|
|
||||||
#include "SALOMEconfig.h"
|
|
||||||
#include CORBA_SERVER_HEADER(SMESH_Mesh)
|
|
||||||
#include CORBA_SERVER_HEADER(SMESH_Group)
|
|
||||||
#include CORBA_SERVER_HEADER(GEOM_Gen)
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
/*!
|
/*!
|
||||||
@ -72,107 +41,41 @@ using namespace std;
|
|||||||
* Constructor
|
* Constructor
|
||||||
*/
|
*/
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
SMESHGUI_StandardMeshInfosDlg::SMESHGUI_StandardMeshInfosDlg( SMESHGUI* theModule, const char* name,
|
SMESHGUI_StandardMeshInfosDlg::SMESHGUI_StandardMeshInfosDlg()
|
||||||
bool modal, WFlags fl)
|
: SMESHGUI_Dialog( false, false, OK )
|
||||||
: QDialog( SMESH::GetDesktop( theModule ), name, modal, WStyle_Customize | WStyle_NormalBorder |
|
|
||||||
WStyle_Title | WStyle_SysMenu | WDestructiveClose),
|
|
||||||
mySMESHGUI( theModule ),
|
|
||||||
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) )
|
|
||||||
{
|
{
|
||||||
if (!name)
|
|
||||||
setName("SMESHGUI_StandardMeshInfosDlg");
|
|
||||||
setCaption(tr("SMESH_STANDARD_MESHINFO_TITLE" ));
|
setCaption(tr("SMESH_STANDARD_MESHINFO_TITLE" ));
|
||||||
setSizeGripEnabled(TRUE);
|
|
||||||
|
|
||||||
myStartSelection = true;
|
resize( 300, 200 );
|
||||||
myIsActiveWindow = true;
|
|
||||||
|
|
||||||
// dialog layout
|
// dialog layout
|
||||||
QGridLayout* aDlgLayout = new QGridLayout(this);
|
QVBoxLayout* main = new QVBoxLayout( mainFrame(), 0, 5 );
|
||||||
aDlgLayout->setSpacing(6);
|
|
||||||
aDlgLayout->setMargin(11);
|
|
||||||
|
|
||||||
// mesh group box
|
// mesh group box
|
||||||
myMeshGroup = new QGroupBox(this, "myMeshGroup");
|
QGroupBox* MeshGroup = new QGroupBox( mainFrame(), "myMeshGroup");
|
||||||
myMeshGroup->setTitle(tr("SMESH_MESH"));
|
MeshGroup->setTitle(tr("SMESH_MESH"));
|
||||||
myMeshGroup->setColumnLayout(0, Qt::Vertical);
|
MeshGroup->setColumnLayout(3, Qt::Horizontal);
|
||||||
myMeshGroup->layout()->setSpacing(0);
|
MeshGroup->layout()->setSpacing(0);
|
||||||
myMeshGroup->layout()->setMargin(0);
|
MeshGroup->layout()->setMargin(5);
|
||||||
QGridLayout* myMeshGroupLayout = new QGridLayout(myMeshGroup->layout());
|
|
||||||
myMeshGroupLayout->setAlignment(Qt::AlignTop);
|
|
||||||
myMeshGroupLayout->setSpacing(6);
|
|
||||||
myMeshGroupLayout->setMargin(11);
|
|
||||||
|
|
||||||
// select button, label and line edit with mesh name
|
createObject( tr("SMESH_NAME" ), MeshGroup, 0 );
|
||||||
myNameLab = new QLabel(myMeshGroup, "myNameLab");
|
setNameIndication( 0, OneName );
|
||||||
myNameLab->setText(tr("SMESH_NAME" ));
|
setObjectType( 0, prefix( "SMESH" ) + MESH, -1 );
|
||||||
myMeshGroupLayout->addWidget(myNameLab, 0, 0);
|
|
||||||
|
|
||||||
QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("SMESH",tr("ICON_SELECT")));
|
main->addWidget( MeshGroup );
|
||||||
mySelectBtn = new QPushButton(myMeshGroup, "mySelectBtn");
|
|
||||||
mySelectBtn->setPixmap(image0);
|
|
||||||
mySelectBtn->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
|
|
||||||
myMeshGroupLayout->addWidget(mySelectBtn, 0, 1);
|
|
||||||
|
|
||||||
myMeshLine = new QLineEdit(myMeshGroup, "myMeshLine");
|
|
||||||
myMeshGroupLayout->addWidget(myMeshLine, 0, 2);
|
|
||||||
|
|
||||||
aDlgLayout->addWidget(myMeshGroup, 0, 0);
|
|
||||||
|
|
||||||
// information group box
|
// information group box
|
||||||
myInfoGroup = new QGroupBox(this, "myInfoGroup");
|
QGroupBox* InfoGroup = new QGroupBox( mainFrame(), "myInfoGroup");
|
||||||
myInfoGroup->setTitle(tr("SMESH_INFORMATION"));
|
InfoGroup->setTitle(tr("SMESH_INFORMATION"));
|
||||||
myInfoGroup->setColumnLayout(0, Qt::Vertical);
|
InfoGroup->setColumnLayout(1, Qt::Vertical);
|
||||||
myInfoGroup->layout()->setSpacing(0);
|
InfoGroup->layout()->setSpacing(0);
|
||||||
myInfoGroup->layout()->setMargin(0);
|
InfoGroup->layout()->setMargin(5);
|
||||||
QGridLayout* myInfoGroupLayout = new QGridLayout(myInfoGroup->layout());
|
|
||||||
myInfoGroupLayout->setAlignment(Qt::AlignTop);
|
|
||||||
myInfoGroupLayout->setSpacing(6);
|
|
||||||
myInfoGroupLayout->setMargin(11);
|
|
||||||
|
|
||||||
// information text browser
|
// information text browser
|
||||||
myInfo = new QTextBrowser(myInfoGroup, "myInfo");
|
myInfo = new QTextBrowser( InfoGroup, "myInfo");
|
||||||
myInfoGroupLayout->addWidget(myInfo, 0, 0);
|
|
||||||
|
|
||||||
aDlgLayout->addWidget(myInfoGroup, 1, 0);
|
main->addWidget( InfoGroup );
|
||||||
|
|
||||||
// buttons group
|
|
||||||
myButtonsGroup = new QGroupBox(this, "myButtonsGroup");
|
|
||||||
myButtonsGroup->setColumnLayout(0, Qt::Vertical);
|
|
||||||
myButtonsGroup->layout()->setSpacing(0); myButtonsGroup->layout()->setMargin(0);
|
|
||||||
QHBoxLayout* myButtonsGroupLayout = new QHBoxLayout(myButtonsGroup->layout());
|
|
||||||
myButtonsGroupLayout->setAlignment(Qt::AlignTop);
|
|
||||||
myButtonsGroupLayout->setSpacing(6); myButtonsGroupLayout->setMargin(11);
|
|
||||||
|
|
||||||
// buttons --> OK button
|
|
||||||
myOkBtn = new QPushButton(tr("SMESH_BUT_OK" ), myButtonsGroup, "myOkBtn");
|
|
||||||
myOkBtn->setAutoDefault(TRUE); myOkBtn->setDefault(TRUE);
|
|
||||||
myButtonsGroupLayout->addStretch();
|
|
||||||
myButtonsGroupLayout->addWidget(myOkBtn);
|
|
||||||
myButtonsGroupLayout->addStretch();
|
|
||||||
|
|
||||||
aDlgLayout->addWidget(myButtonsGroup, 2, 0);
|
|
||||||
|
|
||||||
mySMESHGUI->SetActiveDialogBox(this);
|
|
||||||
|
|
||||||
// connect signals
|
|
||||||
connect( myOkBtn, SIGNAL(clicked()), this, SLOT(close()));
|
|
||||||
connect( mySelectBtn, SIGNAL(clicked()), this, SLOT(onStartSelection()));
|
|
||||||
connect( mySMESHGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(close()));
|
|
||||||
connect( mySMESHGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
|
|
||||||
connect( mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(onSelectionChanged()));
|
|
||||||
|
|
||||||
// resize and move dialog, then show
|
|
||||||
this->setMinimumSize(270, 428);
|
|
||||||
int x, y;
|
|
||||||
mySMESHGUI->DefineDlgPosition(this, x, y);
|
|
||||||
this->move(x, y);
|
|
||||||
this->show();
|
|
||||||
|
|
||||||
// init dialog with current selection
|
|
||||||
myMeshFilter = new SMESH_TypeFilter (MESH);
|
|
||||||
mySelectionMgr->installFilter(myMeshFilter);
|
|
||||||
onSelectionChanged();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -188,259 +91,12 @@ SMESHGUI_StandardMeshInfosDlg::~SMESHGUI_StandardMeshInfosDlg()
|
|||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
/*!
|
/*!
|
||||||
* SMESHGUI_StandardMeshInfosDlg::DumpMeshInfos
|
* SMESHGUI_StandardMeshInfosDlg::setInfo
|
||||||
|
*
|
||||||
|
* Set text to text browser
|
||||||
*/
|
*/
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
void SMESHGUI_StandardMeshInfosDlg::DumpMeshInfos()
|
void SMESHGUI_StandardMeshInfosDlg::setInfo( const QString& text )
|
||||||
{
|
{
|
||||||
SUIT_OverrideCursor wc;
|
myInfo->setText( text );
|
||||||
|
|
||||||
SALOME_ListIO aList;
|
|
||||||
mySelectionMgr->selectedObjects(aList);
|
|
||||||
|
|
||||||
int nbSel = aList.Extent();
|
|
||||||
myInfo->clear();
|
|
||||||
if (nbSel == 1) {
|
|
||||||
myStartSelection = false;
|
|
||||||
myMeshLine->setText("");
|
|
||||||
SMESH::SMESH_Mesh_var aMesh = SMESH::GetMeshByIO(aList.First());
|
|
||||||
|
|
||||||
if (!aMesh->_is_nil()) {
|
|
||||||
QString aName, anInfo;
|
|
||||||
SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aName);
|
|
||||||
myMeshLine->setText(aName);
|
|
||||||
int aNbNodes = (int)aMesh->NbNodes();
|
|
||||||
int aNbEdges = (int)aMesh->NbEdges();
|
|
||||||
int aNbFaces = (int)aMesh->NbFaces();
|
|
||||||
int aNbVolumes = (int)aMesh->NbVolumes();
|
|
||||||
|
|
||||||
int aDimension = 0;
|
|
||||||
double aNbDimElements = 0;
|
|
||||||
if (aNbVolumes > 0) {
|
|
||||||
aNbDimElements = aNbVolumes;
|
|
||||||
aDimension = 3;
|
|
||||||
}
|
|
||||||
else if(aNbFaces > 0) {
|
|
||||||
aNbDimElements = aNbFaces;
|
|
||||||
aDimension = 2;
|
|
||||||
}
|
|
||||||
else if(aNbEdges > 0) {
|
|
||||||
aNbDimElements = aNbEdges;
|
|
||||||
aDimension = 1;
|
|
||||||
}
|
|
||||||
else if(aNbNodes > 0) {
|
|
||||||
aNbDimElements = aNbNodes;
|
|
||||||
aDimension = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// information about the mesh
|
|
||||||
anInfo.append(QString("Nb of element of dimension %1:<b> %2</b><br>").arg(aDimension).arg(aNbDimElements));
|
|
||||||
anInfo.append(QString("Nb of nodes: <b>%1</b><br><br>").arg(aNbNodes));
|
|
||||||
|
|
||||||
// information about the groups of the mesh
|
|
||||||
_PTR(Study) aStudy = SMESH::GetActiveStudyDocument();
|
|
||||||
_PTR(SObject) aMeshSO = SMESH::FindSObject(aMesh);
|
|
||||||
_PTR(SObject) anObj;
|
|
||||||
|
|
||||||
bool hasGroup = false;
|
|
||||||
|
|
||||||
// info about groups on nodes
|
|
||||||
aMeshSO->FindSubObject(Tag_NodeGroups, anObj);
|
|
||||||
if (anObj) {
|
|
||||||
_PTR(ChildIterator) it = aStudy->NewChildIterator(anObj);
|
|
||||||
if (it->More()) {
|
|
||||||
anInfo.append(QString("Groups:<br><br>"));
|
|
||||||
hasGroup = true;
|
|
||||||
}
|
|
||||||
for (; it->More(); it->Next()) {
|
|
||||||
_PTR(SObject) subObj = it->Value();
|
|
||||||
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
|
|
||||||
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
|
|
||||||
if (!aGroup->_is_nil()) {
|
|
||||||
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
|
|
||||||
anInfo.append(QString("%1<br>").arg("on nodes"));
|
|
||||||
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
|
|
||||||
// check if the group based on geometry
|
|
||||||
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
|
|
||||||
if (!aGroupOnGeom->_is_nil()) {
|
|
||||||
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
|
|
||||||
QString aShapeName = "<unknown>";
|
|
||||||
_PTR(SObject) aGeomObj, aRef;
|
|
||||||
if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef))
|
|
||||||
aShapeName = aRef->GetName().c_str();
|
|
||||||
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
|
|
||||||
} else {
|
|
||||||
anInfo.append(QString("<br>"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// info about groups on edges
|
|
||||||
anObj.reset();
|
|
||||||
aMeshSO->FindSubObject(Tag_EdgeGroups, anObj);
|
|
||||||
if (anObj) {
|
|
||||||
_PTR(ChildIterator) it = aStudy->NewChildIterator(anObj);
|
|
||||||
if (!hasGroup && it->More()) {
|
|
||||||
anInfo.append(QString("Groups:<br><br>"));
|
|
||||||
hasGroup = true;
|
|
||||||
}
|
|
||||||
for (; it->More(); it->Next()) {
|
|
||||||
_PTR(SObject) subObj = it->Value();
|
|
||||||
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
|
|
||||||
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
|
|
||||||
if (!aGroup->_is_nil()) {
|
|
||||||
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
|
|
||||||
anInfo.append(QString("%1<br>").arg("on edges"));
|
|
||||||
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
|
|
||||||
// check if the group based on geometry
|
|
||||||
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
|
|
||||||
if (!aGroupOnGeom->_is_nil()) {
|
|
||||||
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
|
|
||||||
QString aShapeName = "<unknown>";
|
|
||||||
_PTR(SObject) aGeomObj, aRef;
|
|
||||||
if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef))
|
|
||||||
aShapeName = aRef->GetName().c_str();
|
|
||||||
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
|
|
||||||
} else {
|
|
||||||
anInfo.append(QString("<br>"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// info about groups on faces
|
|
||||||
anObj.reset();
|
|
||||||
aMeshSO->FindSubObject(Tag_FaceGroups , anObj);
|
|
||||||
if (anObj) {
|
|
||||||
_PTR(ChildIterator) it = aStudy->NewChildIterator(anObj);
|
|
||||||
if (!hasGroup && it->More()) {
|
|
||||||
anInfo.append(QString("Groups:<br><br>"));
|
|
||||||
hasGroup = true;
|
|
||||||
}
|
|
||||||
for (; it->More(); it->Next()) {
|
|
||||||
_PTR(SObject) subObj = it->Value();
|
|
||||||
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
|
|
||||||
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
|
|
||||||
if (!aGroup->_is_nil()) {
|
|
||||||
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
|
|
||||||
anInfo.append(QString("%1<br>").arg("on faces"));
|
|
||||||
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
|
|
||||||
// check if the group based on geometry
|
|
||||||
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
|
|
||||||
if (!aGroupOnGeom->_is_nil()) {
|
|
||||||
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
|
|
||||||
QString aShapeName = "<unknown>";
|
|
||||||
_PTR(SObject) aGeomObj, aRef;
|
|
||||||
if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef))
|
|
||||||
aShapeName = aRef->GetName().c_str();
|
|
||||||
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
|
|
||||||
} else {
|
|
||||||
anInfo.append(QString("<br>"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// info about groups on volumes
|
|
||||||
anObj.reset();
|
|
||||||
aMeshSO->FindSubObject(Tag_VolumeGroups, anObj);
|
|
||||||
if (anObj) {
|
|
||||||
_PTR(ChildIterator) it = aStudy->NewChildIterator(anObj);
|
|
||||||
if (!hasGroup && it->More())
|
|
||||||
anInfo.append(QString("Groups:<br>"));
|
|
||||||
for (; it->More(); it->Next()) {
|
|
||||||
_PTR(SObject) subObj = it->Value();
|
|
||||||
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
|
|
||||||
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
|
|
||||||
if (!aGroup->_is_nil()) {
|
|
||||||
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
|
|
||||||
anInfo.append(QString("%1<br>").arg("on volumes"));
|
|
||||||
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
|
|
||||||
// check if the group based on geometry
|
|
||||||
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
|
|
||||||
if (!aGroupOnGeom->_is_nil()) {
|
|
||||||
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
|
|
||||||
QString aShapeName = "<unknown>";
|
|
||||||
_PTR(SObject) aGeomObj, aRef;
|
|
||||||
if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef))
|
|
||||||
aShapeName = aRef->GetName().c_str();
|
|
||||||
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
|
|
||||||
} else {
|
|
||||||
anInfo.append(QString("<br>"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
myInfo->setText(anInfo);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//=================================================================================
|
|
||||||
// function : SelectionIntoArgument()
|
|
||||||
// purpose : Called when selection has changed
|
|
||||||
//=================================================================================
|
|
||||||
void SMESHGUI_StandardMeshInfosDlg::onSelectionChanged()
|
|
||||||
{
|
|
||||||
if (myStartSelection)
|
|
||||||
DumpMeshInfos();
|
|
||||||
}
|
|
||||||
|
|
||||||
//=================================================================================
|
|
||||||
// function : closeEvent()
|
|
||||||
// purpose :
|
|
||||||
//=================================================================================
|
|
||||||
void SMESHGUI_StandardMeshInfosDlg::closeEvent (QCloseEvent* e)
|
|
||||||
{
|
|
||||||
mySelectionMgr->clearFilters();
|
|
||||||
mySMESHGUI->ResetState();
|
|
||||||
QDialog::closeEvent(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
//=================================================================================
|
|
||||||
// function : windowActivationChange()
|
|
||||||
// purpose : called when window is activated/deactivated
|
|
||||||
//=================================================================================
|
|
||||||
void SMESHGUI_StandardMeshInfosDlg::windowActivationChange (bool oldActive)
|
|
||||||
{
|
|
||||||
QDialog::windowActivationChange(oldActive);
|
|
||||||
if (isActiveWindow() && myIsActiveWindow != isActiveWindow())
|
|
||||||
ActivateThisDialog();
|
|
||||||
myIsActiveWindow = isActiveWindow();
|
|
||||||
}
|
|
||||||
|
|
||||||
//=================================================================================
|
|
||||||
// function : DeactivateActiveDialog()
|
|
||||||
// purpose :
|
|
||||||
//=================================================================================
|
|
||||||
void SMESHGUI_StandardMeshInfosDlg::DeactivateActiveDialog()
|
|
||||||
{
|
|
||||||
disconnect(mySelectionMgr, 0, this, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
//=================================================================================
|
|
||||||
// function : ActivateThisDialog()
|
|
||||||
// purpose :
|
|
||||||
//=================================================================================
|
|
||||||
void SMESHGUI_StandardMeshInfosDlg::ActivateThisDialog()
|
|
||||||
{
|
|
||||||
/* Emit a signal to deactivate any active dialog */
|
|
||||||
mySMESHGUI->EmitSignalDeactivateDialog();
|
|
||||||
connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(onSelectionChanged()));
|
|
||||||
}
|
|
||||||
|
|
||||||
//=================================================================================
|
|
||||||
// function : onStartSelection()
|
|
||||||
// purpose : starts selection
|
|
||||||
//=================================================================================
|
|
||||||
void SMESHGUI_StandardMeshInfosDlg::onStartSelection()
|
|
||||||
{
|
|
||||||
myStartSelection = true;
|
|
||||||
mySelectionMgr->installFilter(myMeshFilter);
|
|
||||||
myMeshLine->setText(tr("Select a mesh"));
|
|
||||||
onSelectionChanged();
|
|
||||||
myStartSelection = true;
|
|
||||||
}
|
}
|
||||||
|
@ -29,60 +29,22 @@
|
|||||||
#ifndef SMESHGUI_STANDARDMESHINFOSDLG_H
|
#ifndef SMESHGUI_STANDARDMESHINFOSDLG_H
|
||||||
#define SMESHGUI_STANDARDMESHINFOSDLG_H
|
#define SMESHGUI_STANDARDMESHINFOSDLG_H
|
||||||
|
|
||||||
//#include "SMESH_TypeFilter.hxx"
|
#include <SMESHGUI_Dialog.h>
|
||||||
#include "SUIT_SelectionFilter.h"
|
|
||||||
|
|
||||||
// QT Includes
|
|
||||||
#include <qdialog.h>
|
|
||||||
|
|
||||||
class QGroupBox;
|
|
||||||
class QLabel;
|
|
||||||
class QPushButton;
|
|
||||||
class QLineEdit;
|
|
||||||
class QTextBrowser;
|
class QTextBrowser;
|
||||||
class SalomeApp_SelectionMgr;
|
|
||||||
class SMESHGUI;
|
|
||||||
|
|
||||||
|
class SMESHGUI_StandardMeshInfosDlg : public SMESHGUI_Dialog
|
||||||
class SMESHGUI_StandardMeshInfosDlg : public QDialog
|
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SMESHGUI_StandardMeshInfosDlg( SMESHGUI*, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
|
SMESHGUI_StandardMeshInfosDlg();
|
||||||
~SMESHGUI_StandardMeshInfosDlg();
|
~SMESHGUI_StandardMeshInfosDlg();
|
||||||
|
|
||||||
protected:
|
void setInfo( const QString& );
|
||||||
void closeEvent( QCloseEvent* e );
|
|
||||||
void windowActivationChange( bool oldActive );
|
|
||||||
void DumpMeshInfos();
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void onSelectionChanged();
|
|
||||||
void DeactivateActiveDialog() ;
|
|
||||||
void ActivateThisDialog();
|
|
||||||
void onStartSelection();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SMESHGUI* mySMESHGUI;
|
|
||||||
SalomeApp_SelectionMgr* mySelectionMgr;
|
|
||||||
bool myStartSelection;
|
|
||||||
bool myIsActiveWindow;
|
|
||||||
|
|
||||||
//Handle(SMESH_TypeFilter) myMeshFilter;
|
|
||||||
SUIT_SelectionFilter* myMeshFilter;
|
|
||||||
|
|
||||||
QLabel* myNameLab;
|
|
||||||
QPushButton* mySelectBtn;
|
|
||||||
QLineEdit* myMeshLine;
|
|
||||||
|
|
||||||
QTextBrowser* myInfo;
|
QTextBrowser* myInfo;
|
||||||
|
|
||||||
QGroupBox* myMeshGroup;
|
|
||||||
QGroupBox* myInfoGroup;
|
|
||||||
|
|
||||||
QGroupBox* myButtonsGroup;
|
|
||||||
QPushButton* myOkBtn;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SMESHGUI_STANDARDMESHINFOSDLG_H
|
#endif // SMESHGUI_STANDARDMESHINFOSDLG_H
|
||||||
|
333
src/SMESHGUI/SMESHGUI_StandardMeshInfosOp.cxx
Normal file
333
src/SMESHGUI/SMESHGUI_StandardMeshInfosOp.cxx
Normal file
@ -0,0 +1,333 @@
|
|||||||
|
// SMESH SMESHGUI : GUI for SMESH component
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : SMESHGUI_StandardMeshInfosOp.cxx
|
||||||
|
// Author : Alexander SOLOVYOV
|
||||||
|
// Module : SMESH
|
||||||
|
// $Header$
|
||||||
|
|
||||||
|
#include "SMESHGUI_StandardMeshInfosOp.h"
|
||||||
|
#include <SMESHGUI_StandardMeshInfosDlg.h>
|
||||||
|
#include <SMESHGUI_Utils.h>
|
||||||
|
|
||||||
|
#include <SMESH.hxx>
|
||||||
|
#include <SMESH_TypeFilter.hxx>
|
||||||
|
|
||||||
|
#include <SUIT_OverrideCursor.h>
|
||||||
|
|
||||||
|
#include CORBA_SERVER_HEADER(SMESH_Gen)
|
||||||
|
#include CORBA_SERVER_HEADER(SMESH_Group)
|
||||||
|
|
||||||
|
#include <SALOMEDS_SObject.hxx>
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : SMESHGUI_StandardMeshInfosOp()
|
||||||
|
// purpose : constructor
|
||||||
|
//=================================================================================
|
||||||
|
SMESHGUI_StandardMeshInfosOp::SMESHGUI_StandardMeshInfosOp()
|
||||||
|
: SMESHGUI_SelectionOp(),
|
||||||
|
myDlg( 0 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : ~SMESHGUI_StandardMeshInfosOp()
|
||||||
|
// purpose : destructor
|
||||||
|
//=================================================================================
|
||||||
|
SMESHGUI_StandardMeshInfosOp::~SMESHGUI_StandardMeshInfosOp()
|
||||||
|
{
|
||||||
|
if( myDlg )
|
||||||
|
delete myDlg;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : dlg
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
SalomeApp_Dialog* SMESHGUI_StandardMeshInfosOp::dlg() const
|
||||||
|
{
|
||||||
|
return myDlg;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : startOperation
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
void SMESHGUI_StandardMeshInfosOp::startOperation()
|
||||||
|
{
|
||||||
|
if( !myDlg )
|
||||||
|
myDlg = new SMESHGUI_StandardMeshInfosDlg();
|
||||||
|
|
||||||
|
SMESHGUI_SelectionOp::startOperation();
|
||||||
|
|
||||||
|
myDlg->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : createFilter
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
SUIT_SelectionFilter* SMESHGUI_StandardMeshInfosOp::createFilter( const int ) const
|
||||||
|
{
|
||||||
|
return new SMESH_TypeFilter( MESH );
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : fillMeshInfos
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
void SMESHGUI_StandardMeshInfosOp::fillMeshInfos()
|
||||||
|
{
|
||||||
|
if( !myDlg )
|
||||||
|
return;
|
||||||
|
|
||||||
|
SUIT_OverrideCursor wc;
|
||||||
|
|
||||||
|
QStringList ids; myDlg->selectedObject( 0, ids );
|
||||||
|
if( ids.count()==0 )
|
||||||
|
{
|
||||||
|
myDlg->setInfo( "" );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_PTR(SObject) SO = studyDS()->FindObjectID( ids.first() ), anObj;
|
||||||
|
if( !SO )
|
||||||
|
{
|
||||||
|
myDlg->setInfo( "" );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMESH::SMESH_Mesh_var aMesh = SMESH::SMESH_Mesh::_narrow( _CAST(SObject,SO)->GetObject() );
|
||||||
|
|
||||||
|
if( aMesh->_is_nil() )
|
||||||
|
{
|
||||||
|
myDlg->setInfo( "" );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString anInfo;
|
||||||
|
int aNbNodes = (int)aMesh->NbNodes();
|
||||||
|
int aNbEdges = (int)aMesh->NbEdges();
|
||||||
|
int aNbFaces = (int)aMesh->NbFaces();
|
||||||
|
int aNbVolumes = (int)aMesh->NbVolumes();
|
||||||
|
|
||||||
|
int aDimension = 0;
|
||||||
|
double aNbDimElements = 0;
|
||||||
|
if( aNbVolumes > 0 )
|
||||||
|
{
|
||||||
|
aNbDimElements = aNbVolumes;
|
||||||
|
aDimension = 3;
|
||||||
|
}
|
||||||
|
else if( aNbFaces > 0 )
|
||||||
|
{
|
||||||
|
aNbDimElements = aNbFaces;
|
||||||
|
aDimension = 2;
|
||||||
|
}
|
||||||
|
else if( aNbEdges > 0 )
|
||||||
|
{
|
||||||
|
aNbDimElements = aNbEdges;
|
||||||
|
aDimension = 1;
|
||||||
|
}
|
||||||
|
else if( aNbNodes > 0 )
|
||||||
|
{
|
||||||
|
aNbDimElements = aNbNodes;
|
||||||
|
aDimension = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// information about the mesh
|
||||||
|
anInfo.append(QString("Nb of element of dimension %1:<b> %2</b><br>").arg(aDimension).arg(aNbDimElements));
|
||||||
|
anInfo.append(QString("Nb of nodes: <b>%1</b><br><br>").arg(aNbNodes));
|
||||||
|
|
||||||
|
bool hasGroup = false;
|
||||||
|
|
||||||
|
// info about groups on nodes
|
||||||
|
SO->FindSubObject( Tag_NodeGroups, anObj );
|
||||||
|
if( anObj )
|
||||||
|
{
|
||||||
|
_PTR(ChildIterator) it = studyDS()->NewChildIterator(anObj);
|
||||||
|
if( it->More() )
|
||||||
|
{
|
||||||
|
anInfo.append(QString("Groups:<br><br>"));
|
||||||
|
hasGroup = true;
|
||||||
|
|
||||||
|
for( ; it->More(); it->Next() )
|
||||||
|
{
|
||||||
|
_PTR(SObject) subObj = it->Value();
|
||||||
|
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
|
||||||
|
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
|
||||||
|
if( !aGroup->_is_nil() )
|
||||||
|
{
|
||||||
|
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
|
||||||
|
anInfo.append(QString("%1<br>").arg("on nodes"));
|
||||||
|
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
|
||||||
|
// check if the group based on geometry
|
||||||
|
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
|
||||||
|
if (!aGroupOnGeom->_is_nil())
|
||||||
|
{
|
||||||
|
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
|
||||||
|
QString aShapeName = "<unknown>";
|
||||||
|
_PTR(SObject) aGeomObj, aRef;
|
||||||
|
if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef))
|
||||||
|
aShapeName = aRef->GetName().c_str();
|
||||||
|
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
anInfo.append(QString("<br>"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// info about groups on edges
|
||||||
|
anObj.reset();
|
||||||
|
SO->FindSubObject(Tag_EdgeGroups, anObj);
|
||||||
|
if( anObj )
|
||||||
|
{
|
||||||
|
_PTR(ChildIterator) it = studyDS()->NewChildIterator(anObj);
|
||||||
|
if( !hasGroup && it->More() )
|
||||||
|
{
|
||||||
|
anInfo.append(QString("Groups:<br><br>"));
|
||||||
|
hasGroup = true;
|
||||||
|
}
|
||||||
|
for( ; it->More(); it->Next() )
|
||||||
|
{
|
||||||
|
_PTR(SObject) subObj = it->Value();
|
||||||
|
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
|
||||||
|
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
|
||||||
|
if( !aGroup->_is_nil() )
|
||||||
|
{
|
||||||
|
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
|
||||||
|
anInfo.append(QString("%1<br>").arg("on edges"));
|
||||||
|
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
|
||||||
|
// check if the group based on geometry
|
||||||
|
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
|
||||||
|
if( !aGroupOnGeom->_is_nil() )
|
||||||
|
{
|
||||||
|
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
|
||||||
|
QString aShapeName = "<unknown>";
|
||||||
|
_PTR(SObject) aGeomObj, aRef;
|
||||||
|
if( subObj->FindSubObject( 1, aGeomObj ) && aGeomObj->ReferencedObject( aRef ) )
|
||||||
|
aShapeName = aRef->GetName().c_str();
|
||||||
|
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
anInfo.append(QString("<br>"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// info about groups on faces
|
||||||
|
anObj.reset();
|
||||||
|
SO->FindSubObject( Tag_FaceGroups, anObj );
|
||||||
|
if (anObj)
|
||||||
|
{
|
||||||
|
_PTR(ChildIterator) it = studyDS()->NewChildIterator(anObj);
|
||||||
|
if( !hasGroup && it->More() )
|
||||||
|
{
|
||||||
|
anInfo.append(QString("Groups:<br><br>"));
|
||||||
|
hasGroup = true;
|
||||||
|
}
|
||||||
|
for( ; it->More(); it->Next() )
|
||||||
|
{
|
||||||
|
_PTR(SObject) subObj = it->Value();
|
||||||
|
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
|
||||||
|
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
|
||||||
|
if( !aGroup->_is_nil() )
|
||||||
|
{
|
||||||
|
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
|
||||||
|
anInfo.append(QString("%1<br>").arg("on faces"));
|
||||||
|
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
|
||||||
|
// check if the group based on geometry
|
||||||
|
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
|
||||||
|
if( !aGroupOnGeom->_is_nil() )
|
||||||
|
{
|
||||||
|
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
|
||||||
|
QString aShapeName = "<unknown>";
|
||||||
|
_PTR(SObject) aGeomObj, aRef;
|
||||||
|
if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef))
|
||||||
|
aShapeName = aRef->GetName().c_str();
|
||||||
|
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
anInfo.append(QString("<br>"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// info about groups on volumes
|
||||||
|
anObj.reset();
|
||||||
|
SO->FindSubObject( Tag_VolumeGroups, anObj );
|
||||||
|
if( anObj )
|
||||||
|
{
|
||||||
|
_PTR(ChildIterator) it = studyDS()->NewChildIterator(anObj);
|
||||||
|
if( !hasGroup && it->More() )
|
||||||
|
anInfo.append(QString("Groups:<br>"));
|
||||||
|
for( ; it->More(); it->Next() )
|
||||||
|
{
|
||||||
|
_PTR(SObject) subObj = it->Value();
|
||||||
|
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
|
||||||
|
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
|
||||||
|
if( !aGroup->_is_nil() )
|
||||||
|
{
|
||||||
|
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
|
||||||
|
anInfo.append(QString("%1<br>").arg("on volumes"));
|
||||||
|
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
|
||||||
|
// check if the group based on geometry
|
||||||
|
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
|
||||||
|
if( !aGroupOnGeom->_is_nil() )
|
||||||
|
{
|
||||||
|
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
|
||||||
|
QString aShapeName = "<unknown>";
|
||||||
|
_PTR(SObject) aGeomObj, aRef;
|
||||||
|
if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef))
|
||||||
|
aShapeName = aRef->GetName().c_str();
|
||||||
|
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
anInfo.append(QString("<br>"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
myDlg->setInfo(anInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : onOk
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
void SMESHGUI_StandardMeshInfosOp::onOk()
|
||||||
|
{
|
||||||
|
commit();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : onSelectionChanged
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
void SMESHGUI_StandardMeshInfosOp::onSelectionChanged( int )
|
||||||
|
{
|
||||||
|
fillMeshInfos();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
59
src/SMESHGUI/SMESHGUI_StandardMeshInfosOp.h
Normal file
59
src/SMESHGUI/SMESHGUI_StandardMeshInfosOp.h
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
// SMESH SMESHGUI : GUI for SMESH component
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : SMESHGUI_StandardMeshInfos.h
|
||||||
|
// Author : Alexander SOLOVYOV
|
||||||
|
// Module : SMESH
|
||||||
|
// $Header:
|
||||||
|
|
||||||
|
#ifndef SMESHGUI_STANDARDMESHINFOSOP_H
|
||||||
|
#define SMESHGUI_STANDARDMESHINFOSOP_H
|
||||||
|
|
||||||
|
#include <SMESHGUI_SelectionOp.h>
|
||||||
|
|
||||||
|
class SMESHGUI_StandardMeshInfosDlg;
|
||||||
|
|
||||||
|
class SMESHGUI_StandardMeshInfosOp : public SMESHGUI_SelectionOp
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
SMESHGUI_StandardMeshInfosOp();
|
||||||
|
~SMESHGUI_StandardMeshInfosOp();
|
||||||
|
|
||||||
|
virtual SalomeApp_Dialog* dlg() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void startOperation();
|
||||||
|
virtual SUIT_SelectionFilter* createFilter( const int ) const;
|
||||||
|
void fillMeshInfos();
|
||||||
|
|
||||||
|
protected slots:
|
||||||
|
virtual void onOk();
|
||||||
|
virtual void onSelectionChanged( int );
|
||||||
|
|
||||||
|
private:
|
||||||
|
SMESHGUI_StandardMeshInfosDlg* myDlg;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SMESHGUI_STANDARDMESHINFOSOP_H
|
Loading…
Reference in New Issue
Block a user