X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_MeshOp.cxx;h=f9f5ab83ab4fe362ec1f26df2d76926d30d3a309;hp=8adb028046c82a5e2dac8b78137c6d4e14d5a564;hb=264eeb2edd6977ccf2d2bd88cbb210353f63f7c9;hpb=dd0d39d752a4d5ba58ed2e417651093764bb8d09 diff --git a/src/SMESHGUI/SMESHGUI_MeshOp.cxx b/src/SMESHGUI/SMESHGUI_MeshOp.cxx index 8adb02804..f9f5ab83a 100644 --- a/src/SMESHGUI/SMESHGUI_MeshOp.cxx +++ b/src/SMESHGUI/SMESHGUI_MeshOp.cxx @@ -133,7 +133,7 @@ LightApp_Dialog* SMESHGUI_MeshOp::dlg() const //================================================================================ bool SMESHGUI_MeshOp::onApply() { - if (isStudyLocked()) + if (SMESHGUI::isStudyLocked()) return false; QString aMess; @@ -227,7 +227,7 @@ void SMESHGUI_MeshOp::startOperation() } SMESHGUI_SelectionOp::startOperation(); // iterate through dimensions and get available algorithms, set them to the dialog - _PTR(SComponent) aFather = SMESH::GetActiveStudyDocument()->FindComponent( "SMESH" ); + _PTR(SComponent) aFather = SMESH::getStudy()->FindComponent( "SMESH" ); for ( int i = SMESH::DIM_0D; i <= SMESH::DIM_3D; i++ ) { SMESHGUI_MeshTab* aTab = myDlg->tab( i ); @@ -271,7 +271,7 @@ void SMESHGUI_MeshOp::startOperation() /*! * \brief Selects a recently created mesh or sub-mesh if necessary * - * Virtual method redefined from base class called when operation is commited + * Virtual method redefined from base class called when operation is committed * selects a recently created mesh or sub-mesh if necessary. Allows to perform * selection when the custom selection filters are removed. */ @@ -329,7 +329,7 @@ bool SMESHGUI_MeshOp::isSubshapeOk() const // mesh QString aMeshEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Mesh ); - _PTR(SObject) pMesh = studyDS()->FindObjectID( aMeshEntry.toLatin1().data() ); + _PTR(SObject) pMesh = SMESH::getStudy()->FindObjectID( aMeshEntry.toLatin1().data() ); if (!pMesh) return false; SMESH::SMESH_Mesh_var mesh = SMESH::SObjectToInterface( pMesh ); @@ -345,17 +345,16 @@ bool SMESHGUI_MeshOp::isSubshapeOk() const if (aGEOMs.count() > 0) { GEOM::GEOM_Gen_var geomGen = SMESH::GetGEOMGen(); - _PTR(Study) aStudy = SMESH::GetActiveStudyDocument(); - if (geomGen->_is_nil() || !aStudy) return false; + if (geomGen->_is_nil()) return false; - GEOM::GEOM_IGroupOperations_wrap op = geomGen->GetIGroupOperations(aStudy->StudyId()); + GEOM::GEOM_IGroupOperations_wrap op = geomGen->GetIGroupOperations(); if (op->_is_nil()) return false; // check all selected shapes QStringList::const_iterator aSubShapesIter = aGEOMs.begin(); for ( ; aSubShapesIter != aGEOMs.end(); aSubShapesIter++) { QString aSubGeomEntry = (*aSubShapesIter); - _PTR(SObject) pSubGeom = studyDS()->FindObjectID(aSubGeomEntry.toLatin1().data()); + _PTR(SObject) pSubGeom = SMESH::getStudy()->FindObjectID(aSubGeomEntry.toLatin1().data()); if (!pSubGeom) return false; GEOM::GEOM_Object_var aSubGeomVar = @@ -375,7 +374,7 @@ bool SMESHGUI_MeshOp::isSubshapeOk() const if ( aSubGeomVar->GetShapeType() == GEOM::COMPOUND ) { // is aSubGeomVar a compound of sub-shapes? - GEOM::GEOM_IShapesOperations_wrap sop = geomGen->GetIShapesOperations(aStudy->StudyId()); + GEOM::GEOM_IShapesOperations_wrap sop = geomGen->GetIShapesOperations(); if (sop->_is_nil()) return false; GEOM::ListOfLong_var ids = sop->GetAllSubShapesIDs( aSubGeomVar, GEOM::SHAPE,/*sorted=*/false); @@ -417,7 +416,7 @@ char* SMESHGUI_MeshOp::isSubmeshIgnored() const QString aMeshEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Mesh ); QString aGeomEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Geom ); - _PTR(SObject) pMesh = studyDS()->FindObjectID( aMeshEntry.toLatin1().data() ); + _PTR(SObject) pMesh = SMESH::getStudy()->FindObjectID( aMeshEntry.toLatin1().data() ); if ( pMesh ) { QStringList algoNames; @@ -433,7 +432,7 @@ char* SMESHGUI_MeshOp::isSubmeshIgnored() const } // GEOM::GEOM_Object_var geom; -// if (_PTR(SObject) pGeom = studyDS()->FindObjectID( aGeomEntry.toLatin1().data() )) +// if (_PTR(SObject) pGeom = SMESH::getStudy()->FindObjectID( aGeomEntry.toLatin1().data() )) // geom = SMESH::SObjectToInterface( pGeom ); // if ( !geom->_is_nil() && geom->GetShapeType() >= GEOM::FACE ) { // WIRE, EDGE as well @@ -462,8 +461,8 @@ _PTR(SObject) SMESHGUI_MeshOp::getSubmeshByGeom() const { QString aMeshEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Mesh ); QString aGeomEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Geom ); - _PTR(SObject) pMesh = studyDS()->FindObjectID( aMeshEntry.toLatin1().data() ); - _PTR(SObject) pGeom = studyDS()->FindObjectID( aGeomEntry.toLatin1().data() ); + _PTR(SObject) pMesh = SMESH::getStudy()->FindObjectID( aMeshEntry.toLatin1().data() ); + _PTR(SObject) pGeom = SMESH::getStudy()->FindObjectID( aGeomEntry.toLatin1().data() ); if ( pMesh && pGeom ) { GEOM::GEOM_Object_var geom = SMESH::SObjectToInterface( pGeom ); if ( !geom->_is_nil() ) { @@ -480,7 +479,7 @@ _PTR(SObject) SMESHGUI_MeshOp::getSubmeshByGeom() const } _PTR(GenericAttribute) anAttr; _PTR(SObject) aSubmeshRoot; - _PTR(Study) aStudy = SMESH::GetActiveStudyDocument(); + _PTR(Study) aStudy = SMESH::getStudy(); if ( pMesh->FindSubObject( tag, aSubmeshRoot ) ) { _PTR(ChildIterator) smIter = aStudy->NewChildIterator( aSubmeshRoot ); @@ -523,7 +522,7 @@ void SMESHGUI_MeshOp::selectionDone() //Check geometry for mesh QString anObjEntry = myDlg->selectedObject(SMESHGUI_MeshDlg::Obj); - _PTR(SObject) pObj = studyDS()->FindObjectID(anObjEntry.toLatin1().data()); + _PTR(SObject) pObj = SMESH::getStudy()->FindObjectID(anObjEntry.toLatin1().data()); if (pObj) { SMESH::SMESH_Mesh_var aMeshVar = @@ -551,7 +550,7 @@ void SMESHGUI_MeshOp::selectionDone() int iSubSh = 0; for ( ; aSubShapesIter != aGEOMs.end(); aSubShapesIter++, iSubSh++) { QString aSubGeomEntry = (*aSubShapesIter); - _PTR(SObject) pSubGeom = studyDS()->FindObjectID(aSubGeomEntry.toLatin1().data()); + _PTR(SObject) pSubGeom = SMESH::getStudy()->FindObjectID(aSubGeomEntry.toLatin1().data()); if( pSubGeom ) { SALOMEDS_SObject* sobj = _CAST(SObject,pSubGeom); @@ -567,7 +566,7 @@ void SMESHGUI_MeshOp::selectionDone() } else { // get geometry by selected sub-mesh QString anObjEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Obj ); - _PTR(SObject) pObj = studyDS()->FindObjectID( anObjEntry.toLatin1().data() ); + _PTR(SObject) pObj = SMESH::getStudy()->FindObjectID( anObjEntry.toLatin1().data() ); GEOM::GEOM_Object_var aGeomVar = SMESH::GetShapeOnMeshOrSubMesh( pObj ); if (!aGeomVar->_is_nil()) { aSeq->length(1); @@ -694,12 +693,12 @@ void SMESHGUI_MeshOp::selectionDone() // enable/disable popup for choice of geom selection way bool enable = false; QString aMeshEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Mesh ); - if ( _PTR(SObject) pMesh = studyDS()->FindObjectID( aMeshEntry.toLatin1().data() )) { + if ( _PTR(SObject) pMesh = SMESH::getStudy()->FindObjectID( aMeshEntry.toLatin1().data() )) { SMESH::SMESH_Mesh_var mesh = SMESH::SObjectToInterface( pMesh ); if ( !mesh->_is_nil() ) { //rnv: issue 21056: EDF 1608 SMESH: Dialog Box "Create Sub Mesh": focus should automatically switch to geometry QString aGeomEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Geom ); - _PTR(SObject) pGeom = studyDS()->FindObjectID( aGeomEntry.toLatin1().data() ); + _PTR(SObject) pGeom = SMESH::getStudy()->FindObjectID( aGeomEntry.toLatin1().data() ); if ( !pGeom || GEOM::GEOM_Object::_narrow( _CAST( SObject,pGeom )->GetObject() )->_is_nil() ) myDlg->activateObject(SMESHGUI_MeshDlg::Geom); enable = ( shapeDim > 1 ) && ( mesh->NbEdges() > 0 ); @@ -709,15 +708,14 @@ void SMESHGUI_MeshOp::selectionDone() } } else { // no geometry defined - myDlg->enableTab( SMESH::DIM_3D ); - QStringList hypList; - availableHyps( SMESH::DIM_3D, Algo, hypList, - myAvailableHypData[SMESH::DIM_3D][Algo]); - SMESHGUI_MeshTab* aTab = myDlg->tab( SMESH::DIM_3D ); - aTab->setAvailableHyps( Algo, hypList ); - for (int i = SMESH::DIM_0D;i < SMESH::DIM_3D; ++i) { - myDlg->disableTab(i); + QStringList hypList; + for ( int dim = SMESH::DIM_0D; dim <= SMESH::DIM_3D; dim++ ) + { + availableHyps( dim, Algo, hypList, myAvailableHypData[dim][Algo]); + myDlg->tab( dim )->setAvailableHyps( Algo, hypList ); + if ( hypList.empty() ) myDlg->disableTab( dim ); + else myDlg->enableTab( dim ); } myMaxShapeDim = -1; //Hide labels and fields (Mesh and Geometry) @@ -775,7 +773,7 @@ bool SMESHGUI_MeshOp::isValid( QString& theMess ) const { QString aMeshEntry = myDlg->selectedObject ( myToCreate ? SMESHGUI_MeshDlg::Mesh : SMESHGUI_MeshDlg::Obj ); - if ( _PTR(SObject) pMesh = studyDS()->FindObjectID( aMeshEntry.toLatin1().data() )) { + if ( _PTR(SObject) pMesh = SMESH::getStudy()->FindObjectID( aMeshEntry.toLatin1().data() )) { SMESH::SMESH_Mesh_var mesh = SMESH::SObjectToInterface( pMesh ); if ( !mesh->_is_nil() && CORBA::is_nil( mesh->GetShapeToMesh() )) { theMess = tr( "IMPORTED_MESH" ); @@ -804,7 +802,7 @@ bool SMESHGUI_MeshOp::isValid( QString& theMess ) const } return true; } - _PTR(SObject) pGeom = studyDS()->FindObjectID( aGeomEntry.toLatin1().data() ); + _PTR(SObject) pGeom = SMESH::getStudy()->FindObjectID( aGeomEntry.toLatin1().data() ); if ( !pGeom || GEOM::GEOM_Object::_narrow( _CAST( SObject,pGeom )->GetObject() )->_is_nil() ) { theMess = tr( "GEOMETRY_OBJECT_IS_NULL" ); @@ -820,7 +818,7 @@ bool SMESHGUI_MeshOp::isValid( QString& theMess ) const theMess = tr( "MESH_IS_NOT_DEFINED" ); return false; } - _PTR(SObject) pMesh = studyDS()->FindObjectID( aMeshEntry.toLatin1().data() ); + _PTR(SObject) pMesh = SMESH::getStudy()->FindObjectID( aMeshEntry.toLatin1().data() ); if ( !pMesh || SMESH::SMESH_Mesh::_narrow( _CAST( SObject,pMesh )->GetObject() )->_is_nil() ) { theMess = tr( "MESH_IS_NULL" ); @@ -947,7 +945,7 @@ void SMESHGUI_MeshOp::availableHyps( const int theDim, QString aCurrentGeomToSelect; if ( !theMeshType.isEmpty() ) { aCurrentGeomToSelect = myDlg->selectedObject( myToCreate ? SMESHGUI_MeshDlg::Geom : SMESHGUI_MeshDlg::Obj ); - if ( _PTR(SObject) so = studyDS()->FindObjectID( aCurrentGeomToSelect.toLatin1().data() )) { + if ( _PTR(SObject) so = SMESH::getStudy()->FindObjectID( aCurrentGeomToSelect.toLatin1().data() )) { aGeomVar = SMESH::GetGeom( so ); } if ( aCurrentGeomToSelect != myLastGeomToSelect ) @@ -1051,8 +1049,7 @@ void SMESHGUI_MeshOp::existingHyps( const int theDim, if ( theFather->FindSubObject( aPart, aHypRoot ) ) { - _PTR(ChildIterator) anIter = - SMESH::GetActiveStudyDocument()->NewChildIterator( aHypRoot ); + _PTR(ChildIterator) anIter = SMESH::getStudy()->NewChildIterator( aHypRoot ); for ( ; anIter->More(); anIter->Next() ) { _PTR(SObject) anObj = anIter->Value(); @@ -1123,14 +1120,14 @@ SMESHGUI_MeshOp::getInitParamsHypothesis( const QString& aHypType, { anEntry = myDlg->selectedObject ( myToCreate ? SMESHGUI_MeshDlg::Mesh : SMESHGUI_MeshDlg::Obj ); - if ( _PTR(SObject) pObj = studyDS()->FindObjectID( anEntry.toLatin1().data() )) + if ( _PTR(SObject) pObj = SMESH::getStudy()->FindObjectID( anEntry.toLatin1().data() )) { CORBA::Object_ptr Obj = _CAST( SObject,pObj )->GetObject(); if ( myToCreate ) // mesh and geom may be selected { aMeshVar = SMESH::SMESH_Mesh::_narrow( Obj ); anEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Geom ); - if ( _PTR(SObject) pGeom = studyDS()->FindObjectID( anEntry.toLatin1().data() )) + if ( _PTR(SObject) pGeom = SMESH::getStudy()->FindObjectID( anEntry.toLatin1().data() )) aGeomVar= GEOM::GEOM_Object::_narrow( _CAST( SObject,pGeom )->GetObject() ); } else // edition: sub-mesh may be selected @@ -1148,7 +1145,7 @@ SMESHGUI_MeshOp::getInitParamsHypothesis( const QString& aHypType, if ( !myToCreate ) // mesh to edit can be selected { anEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Obj ); - if ( _PTR(SObject) pMesh = studyDS()->FindObjectID( anEntry.toLatin1().data() )) + if ( _PTR(SObject) pMesh = SMESH::getStudy()->FindObjectID( anEntry.toLatin1().data() )) { aMeshVar = SMESH::SMESH_Mesh::_narrow( _CAST( SObject,pMesh )->GetObject() ); if ( !aMeshVar->_is_nil() ) @@ -1157,7 +1154,7 @@ SMESHGUI_MeshOp::getInitParamsHypothesis( const QString& aHypType, } if ( aGeomVar->_is_nil() ) { anEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Geom ); - if ( _PTR(SObject) pGeom = studyDS()->FindObjectID( anEntry.toLatin1().data() )) + if ( _PTR(SObject) pGeom = SMESH::getStudy()->FindObjectID( anEntry.toLatin1().data() )) { aGeomVar= GEOM::GEOM_Object::_narrow( _CAST( SObject,pGeom )->GetObject() ); } @@ -1192,24 +1189,21 @@ void SMESHGUI_MeshOp::initHypCreator( SMESHGUI_GenericHypothesisCreator* theCrea // Set shapes, of mesh and sub-mesh if any // get Entry of the Geom object - QString aGeomEntry = ""; - QString aMeshEntry = ""; - QString anObjEntry = ""; - aGeomEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Geom ); - aMeshEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Mesh ); - anObjEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Obj ); + QString aGeomEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Geom ); + QString aMeshEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Mesh ); + QString anObjEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Obj ); if ( myToCreate && myIsMesh ) aMeshEntry = aGeomEntry; if ( aMeshEntry != aGeomEntry ) { // Get Geom object from Mesh of a sub-mesh being edited - _PTR(SObject) pObj = studyDS()->FindObjectID( aMeshEntry.toLatin1().data() ); + _PTR(SObject) pObj = SMESH::getStudy()->FindObjectID( aMeshEntry.toLatin1().data() ); GEOM::GEOM_Object_var aGeomVar = SMESH::GetShapeOnMeshOrSubMesh( pObj ); aMeshEntry = ( aGeomVar->_is_nil() ) ? QString() : SMESH::toQStr( aGeomVar->GetStudyEntry() ); } if ( aMeshEntry == "" && aGeomEntry == "" ) { // get geom of an object being edited - _PTR(SObject) pObj = studyDS()->FindObjectID( anObjEntry.toLatin1().data() ); + _PTR(SObject) pObj = SMESH::getStudy()->FindObjectID( anObjEntry.toLatin1().data() ); bool isMesh; GEOM::GEOM_Object_var aGeomVar = SMESH::GetShapeOnMeshOrSubMesh( pObj, &isMesh ); if ( !aGeomVar->_is_nil() ) @@ -1222,7 +1216,7 @@ void SMESHGUI_MeshOp::initHypCreator( SMESHGUI_GenericHypothesisCreator* theCrea if ( anObjEntry != "" && aGeomEntry != "" && aMeshEntry == "" ) { // take geometry from submesh being created - _PTR(SObject) pObj = studyDS()->FindObjectID( anObjEntry.toLatin1().data() ); + _PTR(SObject) pObj = SMESH::getStudy()->FindObjectID( anObjEntry.toLatin1().data() ); if ( pObj ) { // if current object is sub-mesh SMESH::SMESH_subMesh_var aSubMeshVar = @@ -1242,14 +1236,16 @@ void SMESHGUI_MeshOp::initHypCreator( SMESHGUI_GenericHypothesisCreator* theCrea theCreator->setShapeEntry( aGeomEntry ); if ( aMeshEntry != "" ) theCreator->setMainShapeEntry( aMeshEntry ); + + theCreator->setNoGeomMesh( !myIsOnGeometry && myIsMesh && !myToCreate ); } //================================================================================ /*! - * \Brief Returns tab dimention + * \Brief Returns tab dimension * \param tab - the tab in the dlg * \param dlg - my dialogue - * \retval int - dimention + * \retval int - dimension */ //================================================================================ static int getTabDim (const QObject* tab, SMESHGUI_MeshDlg* dlg ) @@ -1368,7 +1364,8 @@ void SMESHGUI_MeshOp::createHypothesis(const int theDim, aCreator->create(initParamHyp, aHypName, myDlg, this, SLOT( onHypoCreated( int ) ) ); dialog = true; } - else { + else + { SMESH::SMESH_Hypothesis_var aHyp = SMESH::CreateHypothesis(theTypeName, aHypName, false); aHyp.out(); @@ -1397,7 +1394,7 @@ void SMESHGUI_MeshOp::onHypoCreated( int result ) myDlg->setEnabled( true ); } - _PTR(SComponent) aFather = SMESH::GetActiveStudyDocument()->FindComponent("SMESH"); + _PTR(SComponent) aFather = SMESH::getStudy()->FindComponent("SMESH"); int nbHyp = myExistingHyps[myDim][myType].count(); HypothesisData* algoData = hypData( myDim, Algo, currentHyp( myDim, Algo )); @@ -1505,7 +1502,8 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex, if ( myIgnoreAlgoSelection ) return; - int aDim = theDim < 0 ? getTabDim( sender(), myDlg ): theDim; + int curDim = getTabDim( sender(), myDlg ); + int aDim = theDim < 0 ? curDim : theDim; if (aDim == -1) return; @@ -1587,7 +1585,7 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex, myDlg->tab( dim )->setAvailableHyps( Algo, anAvailable ); noCompatible = anAvailable.isEmpty(); algoIndex = myAvailableHypData[dim][Algo].indexOf( curAlgo ); - if ( !isSubmesh && algoIndex < 0 && soleCompatible && !forward && dim != SMESH::DIM_0D) { + if ( !isSubmesh && algoIndex < 0 && soleCompatible && !forward && dim == curDim ) { // select the sole compatible algo algoIndex = 0; } @@ -1610,7 +1608,7 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex, // set hypotheses corresponding to the found algorithms - _PTR(SObject) pObj = SMESH::GetActiveStudyDocument()->FindComponent("SMESH"); + _PTR(SObject) pObj = SMESH::getStudy()->FindComponent("SMESH"); for ( int dim = SMESH::DIM_0D; dim <= SMESH::DIM_3D; dim++ ) { @@ -1682,7 +1680,8 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex, hypIndex = this->find( curHyp, myExistingHyps[ dim ][ type ]); else hypIndex = -1; - if ( !isSubmesh && myToCreate && hypIndex < 0 && anExisting.count() == 1 ) { + if ( !isSubmesh && myToCreate && hypIndex < 0 && anExisting.count() == 1 && dim == curDim ) + { // none is yet selected => select the sole existing if it is not optional CORBA::String_var hypTypeName = myExistingHyps[ dim ][ type ].first().first->GetName(); bool isOptional = true; @@ -1828,7 +1827,7 @@ bool SMESHGUI_MeshOp::createMesh( QString& theMess, QStringList& theEntryList ) for ( int i = 0; it!=aList.end(); it++, ++i ) { QString aGeomEntry = *it; - _PTR(SObject) pGeom = studyDS()->FindObjectID( aGeomEntry.toLatin1().data() ); + _PTR(SObject) pGeom = SMESH::getStudy()->FindObjectID( aGeomEntry.toLatin1().data() ); GEOM::GEOM_Object_var aGeomVar = GEOM::GEOM_Object::_narrow( _CAST( SObject,pGeom )->GetObject() ); @@ -1895,7 +1894,7 @@ bool SMESHGUI_MeshOp::createSubMesh( QString& theMess, QStringList& theEntryList // get mesh object QString aMeshEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Mesh ); - _PTR(SObject) pMesh = studyDS()->FindObjectID( aMeshEntry.toLatin1().data() ); + _PTR(SObject) pMesh = SMESH::getStudy()->FindObjectID( aMeshEntry.toLatin1().data() ); SMESH::SMESH_Mesh_var aMeshVar = SMESH::SMESH_Mesh::_narrow( _CAST( SObject,pMesh )->GetObject() ); if (aMeshVar->_is_nil()) @@ -1915,17 +1914,16 @@ bool SMESHGUI_MeshOp::createSubMesh( QString& theMess, QStringList& theEntryList { //QString aGeomEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Geom ); QString aGeomEntry = aGEOMs.first(); - _PTR(SObject) pGeom = studyDS()->FindObjectID( aGeomEntry.toLatin1().data() ); + _PTR(SObject) pGeom = SMESH::getStudy()->FindObjectID( aGeomEntry.toLatin1().data() ); aGeomVar = GEOM::GEOM_Object::_narrow( _CAST( SObject,pGeom )->GetObject() ); } else if (aGEOMs.count() > 1) { // create a GEOM group GEOM::GEOM_Gen_var geomGen = SMESH::GetGEOMGen(); - _PTR(Study) aStudy = SMESH::GetActiveStudyDocument(); - if (!geomGen->_is_nil() && aStudy) { + if (!geomGen->_is_nil()) { GEOM::GEOM_IGroupOperations_wrap op = - geomGen->GetIGroupOperations(aStudy->StudyId()); + geomGen->GetIGroupOperations(); if (!op->_is_nil()) { // check and add all selected GEOM objects: they must be // a sub-shapes of the main GEOM and must be of one type @@ -1936,7 +1934,7 @@ bool SMESHGUI_MeshOp::createSubMesh( QString& theMess, QStringList& theEntryList QStringList::const_iterator aSubShapesIter = aGEOMs.begin(); for ( ; aSubShapesIter != aGEOMs.end(); aSubShapesIter++, iSubSh++) { QString aSubGeomEntry = (*aSubShapesIter); - _PTR(SObject) pSubGeom = studyDS()->FindObjectID(aSubGeomEntry.toLatin1().data()); + _PTR(SObject) pSubGeom = SMESH::getStudy()->FindObjectID(aSubGeomEntry.toLatin1().data()); GEOM::GEOM_Object_var aSubGeomVar = GEOM::GEOM_Object::_narrow(_CAST(SObject,pSubGeom)->GetObject()); TopAbs_ShapeEnum aSubShapeType = (TopAbs_ShapeEnum)aSubGeomVar->GetShapeType(); @@ -1959,9 +1957,8 @@ bool SMESHGUI_MeshOp::createSubMesh( QString& theMess, QStringList& theEntryList // publish the GEOM group in study QString aNewGeomGroupName ("Auto_group_for_"); aNewGeomGroupName += aName; - SALOMEDS::Study_var aStudyVar = _CAST(Study, aStudy)->GetStudy(); SALOMEDS::SObject_wrap aNewGroupSO = - geomGen->AddInStudy( aStudyVar, aGeomVar, + geomGen->AddInStudy( aGeomVar, aNewGeomGroupName.toLatin1().data(), mainGeom); } } @@ -2116,7 +2113,7 @@ void SMESHGUI_MeshOp::setDefaultName( const QString& thePrefix ) const { QString aResName; - _PTR(Study) aStudy = SMESH::GetActiveStudyDocument(); + _PTR(Study) aStudy = SMESH::getStudy(); int i = 1; QString aPrefix = thePrefix; @@ -2157,7 +2154,7 @@ SMESH::SMESH_Hypothesis_var SMESHGUI_MeshOp::getAlgo( const int theDim ) QString aHypName = dataList[ aHypIndex ]->TypeName; // get existing algorithms - _PTR(SObject) pObj = SMESH::GetActiveStudyDocument()->FindComponent("SMESH"); + _PTR(SObject) pObj = SMESH::getStudy()->FindComponent("SMESH"); QStringList tmp; existingHyps( theDim, Algo, pObj, tmp, myExistingHyps[ theDim ][ Algo ]); @@ -2184,7 +2181,7 @@ SMESH::SMESH_Hypothesis_var SMESHGUI_MeshOp::getAlgo( const int theDim ) { // Call hypothesis creation server method (without GUI) SMESH::SMESH_Hypothesis_var aHyp = - SMESH::CreateHypothesis(aHypName, aHypName, true); + SMESH::CreateHypothesis(aHypName, aHypData->Label, true); aHyp.out(); } else @@ -2197,13 +2194,13 @@ SMESH::SMESH_Hypothesis_var SMESHGUI_MeshOp::getAlgo( const int theDim ) aCreator->create( true, aHypName, myDlg, 0, QString::null ); else { SMESH::SMESH_Hypothesis_var aHyp = - SMESH::CreateHypothesis(aHypName, aHypName, true); + SMESH::CreateHypothesis(aHypName, aHypData->Label, true); aHyp.out(); } delete aCreator; } QStringList tmpList; - _PTR(SComponent) aFather = SMESH::GetActiveStudyDocument()->FindComponent( "SMESH" ); + _PTR(SComponent) aFather = SMESH::getStudy()->FindComponent( "SMESH" ); existingHyps( theDim, Algo, aFather, tmpList, myExistingHyps[ theDim ][ Algo ] ); } @@ -2232,7 +2229,7 @@ SMESH::SMESH_Hypothesis_var SMESHGUI_MeshOp::getAlgo( const int theDim ) void SMESHGUI_MeshOp::readMesh() { QString anObjEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Obj ); - _PTR(SObject) pObj = studyDS()->FindObjectID( anObjEntry.toLatin1().data() ); + _PTR(SObject) pObj = SMESH::getStudy()->FindObjectID( anObjEntry.toLatin1().data() ); if ( !pObj ) return; @@ -2260,7 +2257,7 @@ void SMESHGUI_MeshOp::readMesh() // Get hypotheses and algorithms assigned to the mesh/sub-mesh QStringList anExisting; - const int lastDim = ( myIsOnGeometry ) ? SMESH::DIM_0D : SMESH::DIM_3D; + const int lastDim = ( myIsOnGeometry ) ? SMESH::DIM_0D : SMESH::DIM_2D; bool algoFound = false; for ( int dim = SMESH::DIM_3D; dim >= lastDim; --dim ) { @@ -2384,7 +2381,7 @@ int SMESHGUI_MeshOp::find( const SMESH::SMESH_Hypothesis_var& theHyp, /*! * \brief Edits mesh or sub-mesh * \param theMess - Output parameter intended for returning error message - * \retval bool - TRUE if mesh is edited succesfully, FALSE otherwise + * \retval bool - TRUE if mesh is edited successfully, FALSE otherwise * * Assigns new name hypotheses and algoriths to the mesh or sub-mesh */ @@ -2398,7 +2395,7 @@ bool SMESHGUI_MeshOp::editMeshOrSubMesh( QString& theMess ) return false; QString anObjEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Obj ); - _PTR(SObject) pObj = studyDS()->FindObjectID( anObjEntry.toLatin1().data() ); + _PTR(SObject) pObj = SMESH::getStudy()->FindObjectID( anObjEntry.toLatin1().data() ); if ( !pObj ) return false; @@ -2407,7 +2404,7 @@ bool SMESHGUI_MeshOp::editMeshOrSubMesh( QString& theMess ) // Set new name QString aName = myDlg->objectText( SMESHGUI_MeshDlg::Obj ); SMESH::SetName( pObj, aName ); - int aDim = ( myIsOnGeometry ) ? SMESH::DIM_0D : SMESH::DIM_3D; + int aDim = ( myIsOnGeometry ) ? SMESH::DIM_0D : SMESH::DIM_2D; // First, remove old algos in order to avoid messages on algorithm hiding for ( int dim = aDim; dim <= SMESH::DIM_3D; dim++ ) @@ -2554,7 +2551,7 @@ bool SMESHGUI_MeshOp::checkSubMeshConcurrency(SMESH::SMESH_Mesh_ptr mesh, * * method redefined from base class verifies whether given operator is valid for * this one (i.e. can be started "above" this operator). In current implementation method - * retuns false if theOtherOp operation is not intended for deleting objects or mesh + * returns false if theOtherOp operation is not intended for deleting objects or mesh * elements. */ //================================================================================ @@ -2581,7 +2578,7 @@ void SMESHGUI_MeshOp::onGeomSelectionByMesh( bool theByMesh ) } // set mesh object to SMESHGUI_ShapeByMeshOp and start it QString aMeshEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Mesh ); - if ( _PTR(SObject) pMesh = studyDS()->FindObjectID( aMeshEntry.toLatin1().data() )) { + if ( _PTR(SObject) pMesh = SMESH::getStudy()->FindObjectID( aMeshEntry.toLatin1().data() )) { SMESH::SMESH_Mesh_var aMeshVar = SMESH::SMESH_Mesh::_narrow( _CAST( SObject,pMesh )->GetObject() ); if ( !aMeshVar->_is_nil() ) { @@ -2610,7 +2607,7 @@ void SMESHGUI_MeshOp::onPublishShapeByMeshDlg(SUIT_Operation* op) if ( !aGeomVar->_is_nil() ) { QString ID = SMESH::toQStr( aGeomVar->GetStudyEntry() ); - if ( _PTR(SObject) aGeomSO = studyDS()->FindObjectID( ID.toLatin1().data() )) { + if ( _PTR(SObject) aGeomSO = SMESH::getStudy()->FindObjectID( ID.toLatin1().data() )) { selectObject( aGeomSO ); selectionDone(); } @@ -2743,8 +2740,9 @@ void SMESHGUI_MeshOp::setFilteredAlgoData( const int theTabIndex, const int theI } if ( !myIsOnGeometry ) for ( int i = SMESH::DIM_0D; i <= SMESH::DIM_3D; i++ ) { - if ( i < SMESH::DIM_3D ) myDlg->disableTab( i ); - else myDlg->enableTab( i ); + bool disable = myAvailableHypData[i][Algo].isEmpty(); + if ( disable ) myDlg->disableTab( i ); + else myDlg->enableTab( i ); } else for ( int i = SMESH::DIM_0D; i <= SMESH::DIM_3D; i++ ) {