// Module : SMESH
// $Header$
-using namespace std;
#include "SMESHGUI_InitMeshDlg.h"
+
#include "SMESHGUI.h"
-#include "SALOME_ListIteratorOfListIO.hxx"
+#include "SMESHGUI_Utils.h"
+#include "SMESHGUI_SMESHGenUtils.h"
+#include "SMESHGUI_HypothesesUtils.h"
+
+#include "GEOMBase.h"
#include "QAD_Application.h"
#include "QAD_Desktop.h"
#include "QAD_WaitCursor.h"
#include "QAD_Operation.h"
+#include "SALOME_ListIteratorOfListIO.hxx"
+#include "SALOMEGUI_QtCatchCorbaException.hxx"
+
#include "utilities.h"
// QT Includes
#include <qlayout.h>
#include <qpixmap.h>
+using namespace std;
+
+namespace SMESH{
+ SMESH::SMESH_Mesh_var InitMesh(GEOM::GEOM_Object_ptr theShapeObject,
+ const char* theMeshName)
+ {
+ SMESH::SMESH_Mesh_var aMesh;
+ try {
+ SMESH::SMESH_Gen_var aSMESHGen = SMESH::GetSMESHGen();
+ if ( !aSMESHGen->_is_nil() && !theShapeObject->_is_nil() ) {
+ aMesh = aSMESHGen->CreateMesh( theShapeObject );
+ if ( !aMesh->_is_nil() ) {
+ SALOMEDS::SObject_var aMeshSObject = SMESH::FindSObject( aMesh.in() );
+ SMESH::SetName( aMeshSObject, theMeshName );
+ }
+ }
+ }
+ catch( const SALOME::SALOME_Exception& S_ex ) {
+ QtCatchCorbaException( S_ex );
+ }
+ return aMesh._retn();
+ }
+}
+
//=================================================================================
// class : SMESHGUI_InitMeshDlg()
// purpose : Constructs a SMESHGUI_InitMeshDlg which is a child of 'parent', with the
SelectButtonC1A1->setToggleButton( FALSE );
GroupC1Layout->addWidget( SelectButtonC1A1, 1, 1 );
LineEditC1A1 = new QLineEdit( GroupC1, "LineEditC1A1" );
+ LineEditC1A1->setReadOnly( true );
GroupC1Layout->addWidget( LineEditC1A1, 1, 2 );
TextLabelC1A1Hyp = new QLabel( tr( "SMESH_OBJECT_HYPOTHESIS" ), GroupC1, "TextLabelC1A1Hyp" );
SelectButtonC1A1Hyp->setPixmap( image0 );
GroupC1Layout->addWidget( SelectButtonC1A1Hyp, 2, 1 );
LineEditC1A1Hyp = new QLineEdit( GroupC1, "LineEditC1A1Hyp" );
+ LineEditC1A1Hyp->setReadOnly( true );
GroupC1Layout->addWidget( LineEditC1A1Hyp, 2, 2 );
TextLabelC1A1Algo = new QLabel( tr( "SMESH_OBJECT_ALGORITHM" ), GroupC1, "TextLabelC1A1Algo" );
SelectButtonC1A1Algo->setPixmap( image0 );
GroupC1Layout->addWidget( SelectButtonC1A1Algo, 3, 1 );
LineEditC1A1Algo = new QLineEdit( GroupC1, "LineEditC1A1Algo" );
+ LineEditC1A1Algo->setReadOnly( true );
GroupC1Layout->addWidget( LineEditC1A1Algo, 3, 2 );
SMESHGUI_InitMeshDlgLayout->addWidget( GroupC1, 1, 0 );
this->move( x, y ) ;
this->show() ;
- LineEdit_NameMesh->setText( tr( "SMESH_OBJECT_MESH" ) );
+ LineEdit_NameMesh->setText( GetDefaultMeshName() );
LineEdit_NameMesh->setFocus() ;
myEditCurrentArgument = LineEditC1A1 ;
mySelection->ClearFilters() ;
//=================================================================================
bool SMESHGUI_InitMeshDlg::ClickOnApply()
{
+ if (mySMESHGUI->ActiveStudyLocked())
+ return false;
+
QString myNameMesh = LineEdit_NameMesh->text().stripWhiteSpace();
if ( myNameMesh.isEmpty() ) {
QAD_MessageBox::warn1( this, tr( "SMESH_WRN_WARNING" ), tr( "SMESH_WRN_EMPTY_NAME" ), tr( "SMESH_BUT_OK" ) );
op->start();
// create mesh
- SMESH::SMESH_Mesh_var aMesh = mySMESHGUI->InitMesh( myGeomShape, myNameMesh ) ;
+ SMESH::SMESH_Mesh_var aMesh = SMESH::InitMesh( myGeomShape, myNameMesh ) ;
if ( !aMesh->_is_nil() ) {
// assign hypotheses
for( int i = 0; i < HypoList.count(); i++ ) {
- SALOMEDS::SObject_var aHypSO = mySMESHGUI->GetStudy()->FindObjectID( HypoList[i] );
+ SALOMEDS::SObject_var aHypSO = SMESH::GetActiveStudyDocument()->FindObjectID( HypoList[i] );
if ( !aHypSO->_is_nil() ) {
CORBA::Object_var anObject = aHypSO->GetObject();
if ( !CORBA::is_nil( anObject ) ) {
SMESH::SMESH_Hypothesis_var aHyp = SMESH::SMESH_Hypothesis::_narrow( anObject );
if ( !aHyp->_is_nil() ) {
- if ( !mySMESHGUI->AddHypothesisOnMesh( aMesh, aHyp ) ) {
+ if ( !SMESH::AddHypothesisOnMesh( aMesh, aHyp ) ) {
// abort transaction
op->abort();
return false;
}
// assign algorithms
for( int i = 0; i < AlgoList.count(); i++ ) {
- SALOMEDS::SObject_var aHypSO = mySMESHGUI->GetStudy()->FindObjectID( AlgoList[i] );
+ SALOMEDS::SObject_var aHypSO = SMESH::GetActiveStudyDocument()->FindObjectID( AlgoList[i] );
if ( !aHypSO->_is_nil() ) {
CORBA::Object_var anObject = aHypSO->GetObject();
if ( !CORBA::is_nil( anObject ) ) {
SMESH::SMESH_Hypothesis_var aHyp = SMESH::SMESH_Hypothesis::_narrow( anObject );
if ( !aHyp->_is_nil() ) {
- if ( !mySMESHGUI->AddAlgorithmOnMesh( aMesh, aHyp ) ) {
+ if ( !SMESH::AddHypothesisOnMesh( aMesh, aHyp ) ) {
// abort transaction
op->abort();
return false;
}
// commit transaction
op->finish();
+ LineEdit_NameMesh->setText( GetDefaultMeshName() );
return true;
}
{
QString aString = "";
- int nbSel = mySMESHGUI->GetNameOfSelectedIObjects(mySelection, aString) ;
+ int nbSel = SMESH::GetNameOfSelectedIObjects( mySelection, aString );
- if ( myEditCurrentArgument == LineEditC1A1 ) {
+ if ( myEditCurrentArgument == LineEditC1A1 )
+ {
// geom shape
- if ( nbSel != 1 ) {
- myGeomShape = GEOM::GEOM_Shape::_nil();
+ if ( nbSel != 1 )
+ {
+ myGeomShape = GEOM::GEOM_Object::_nil();
aString = "";
}
- else {
- Standard_Boolean testResult ;
+ else
+ {
Handle(SALOME_InteractiveObject) IO = mySelection->firstIObject() ;
- myGeomShape = mySMESHGUI->ConvertIOinGEOMShape(IO, testResult) ;
- if( !testResult ) {
- myGeomShape = GEOM::GEOM_Shape::_nil();
- aString = "";
+ myGeomShape = SMESH::IObjectToInterface<GEOM::GEOM_Object>( IO ) ;
+ if ( myGeomShape->_is_nil() || !GEOMBase::IsShape( myGeomShape ) )
+ {
+ myGeomShape = GEOM::GEOM_Object::_nil();
+ aString = "";
}
}
}
buttonApply->setEnabled( isEnabled );
}
+//=================================================================================
+// function : GetDefaultMeshName()
+// purpose : Generates default mesh name(Mesh_1, Mesh_2, etc.)
+//=================================================================================
+QString SMESHGUI_InitMeshDlg::GetDefaultMeshName()
+{
+ SALOMEDS::Study_var aStudy = QAD_Application::getDesktop()->getActiveStudy()->getStudyDocument();
+ int aNumber = 0;
+ QString aMeshName;
+ SALOMEDS::SObject_var obj;
+
+ do
+ {
+ aMeshName = QString(tr("SMESH_OBJECT_MESH")) +"_"+QString::number(++aNumber);
+ obj = aStudy->FindObject(aMeshName);
+ }
+ while (!obj->_is_nil());
+ return aMeshName;
+}