X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_ComputeDlg.cxx;h=32b472ff6d3545b5dde30bb5e3e154d896dfb7cb;hp=c7b72d386ff2607d853719458c63a4266dd0595d;hb=21af9b3a2c317f5693f228cd8ed55c2bb44b0a07;hpb=c18fd9d00c0ebf0fbad0f1ce8861cc67549d83e4 diff --git a/src/SMESHGUI/SMESHGUI_ComputeDlg.cxx b/src/SMESHGUI/SMESHGUI_ComputeDlg.cxx index c7b72d386..32b472ff6 100644 --- a/src/SMESHGUI/SMESHGUI_ComputeDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_ComputeDlg.cxx @@ -54,6 +54,7 @@ #include #include #include +#include #include // SALOME KERNEL includes @@ -95,12 +96,13 @@ // VTK includes #include +#include // STL includes #include #include -#ifndef WIN32 +#if !defined WIN32 && !defined __APPLE__ #include #endif @@ -683,6 +685,7 @@ void SMESHGUI_BaseComputeOp::startOperation() myMesh = SMESH::SMESH_Mesh::_nil(); myMainShape = GEOM::GEOM_Object::_nil(); + myCurShape = GEOM::GEOM_Object::_nil(); // check selection LightApp_SelectionMgr *Sel = selectionMgr(); @@ -698,7 +701,23 @@ void SMESHGUI_BaseComputeOp::startOperation() } myIObject = selected.First(); - myMesh = SMESH::GetMeshByIO(myIObject); + CORBA::Object_var anObj = SMESH::IObjectToObject( myIObject ); + + myMesh = SMESH::SMESH_Mesh::_narrow(anObj); + if ( myMesh->_is_nil() ) + { + SMESH::SMESH_subMesh_var aSubMesh = SMESH::SMESH_subMesh::_narrow(anObj); + if ( !aSubMesh->_is_nil() ) + { + myMesh = aSubMesh->GetFather(); + myCurShape = aSubMesh->GetSubShape(); + } + } + else + { + myCurShape = myMesh->GetShapeToMesh(); + } + if (myMesh->_is_nil()) { SUIT_MessageBox::warning(desktop(), tr("SMESH_WRN_WARNING"), @@ -706,6 +725,7 @@ void SMESHGUI_BaseComputeOp::startOperation() onCancel(); return; } + myMainShape = myMesh->GetShapeToMesh(); SMESHGUI_Operation::startOperation(); @@ -766,7 +786,7 @@ SMESHGUI_ComputeDlg_QThreadQDialog(QWidget * parent, QLabel * nbElemsName = new QLabel(tr("SMESH_MESHINFO_ELEMENTS"), this ); nbNodesLabel = new QLabel("0", this ); nbElemsLabel = new QLabel("0", this ); -#ifndef WIN32 +#if !defined WIN32 && !defined __APPLE__ QLabel * freeRAMName = new QLabel(tr("SMESH_FREERAM"), this ); freeRAMLabel = new QLabel("", this ); #endif @@ -782,7 +802,7 @@ SMESHGUI_ComputeDlg_QThreadQDialog(QWidget * parent, layout->addWidget(nbNodesLabel, row++, 1); layout->addWidget(nbElemsName, row, 0); layout->addWidget(nbElemsLabel, row++, 1); -#ifndef WIN32 +#if !defined WIN32 && !defined __APPLE__ layout->addWidget(freeRAMName, row, 0); layout->addWidget(freeRAMLabel, row++, 1); #endif @@ -822,7 +842,7 @@ void SMESHGUI_ComputeDlg_QThreadQDialog::timerEvent(QTimerEvent *event) { nbNodesLabel->setText( QString("%1").arg( qthread.getMesh()->NbNodes() )); nbElemsLabel->setText( QString("%1").arg( qthread.getMesh()->NbElements() )); -#ifndef WIN32 +#if !defined WIN32 && !defined __APPLE__ struct sysinfo si; const int err = sysinfo( &si ); if ( err ) @@ -882,10 +902,8 @@ void SMESHGUI_BaseComputeOp::computeMesh() myMesh->Clear(); SUIT_OverrideCursor aWaitCursor; try { -#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100 OCC_CATCH_SIGNALS; -#endif - SMESHGUI_ComputeDlg_QThreadQDialog qthreaddialog(desktop(), gen, myMesh, myMainShape); + SMESHGUI_ComputeDlg_QThreadQDialog qthreaddialog(desktop(), gen, myMesh, myCurShape); qthreaddialog.exec(); computeFailed = !qthreaddialog.result(); } @@ -893,9 +911,7 @@ void SMESHGUI_BaseComputeOp::computeMesh() memoryLack = true; } try { -#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100 OCC_CATCH_SIGNALS; -#endif aCompErrors = gen->GetComputeErrors( myMesh, myMainShape ); // check if there are memory problems for ( CORBA::ULong i = 0; (i < aCompErrors->length()) && !memoryLack; ++i ) @@ -911,7 +927,8 @@ void SMESHGUI_BaseComputeOp::computeMesh() // NPAL16631: if ( !memoryLack ) { - SMESH::ModifiedMesh( aMeshSObj, + _PTR(SObject) sobj = SMESH::GetActiveStudyDocument()->FindObjectID(myIObject->getEntry()); + SMESH::ModifiedMesh( sobj, !computeFailed && aHypErrors.isEmpty(), myMesh->NbNodes() == 0); update( UF_ObjBrowser | UF_Model ); @@ -993,6 +1010,11 @@ void SMESHGUI_BaseComputeOp::computeMesh() Handle(SALOME_InteractiveObject) anIO = new SALOME_InteractiveObject ( (*anIter).second->GetID().c_str(), "SMESH", (*anIter).second->GetName().c_str() ); SMESH::Update(anIO, toDisplay); + if( SVTK_ViewWindow* vtkWnd = SMESH::GetVtkViewWindow(SMESH::GetActiveWindow() ) ) { + if( vtkWnd->getRenderer() ){ + vtkWnd->getRenderer()->ResetCameraClippingRange(); + } + } if ( limitExceeded && !aMesh->_is_nil() ) { @@ -1245,8 +1267,9 @@ void SMESHGUI_BaseComputeOp::stopOperation() void SMESHGUI_BaseComputeOp::onPublishShape() { - GEOM::GEOM_Gen_var geomGen = SMESH::GetGEOMGen(); - SALOMEDS::Study_var study = SMESHGUI::GetSMESHGen()->GetCurrentStudy(); + GEOM::GEOM_Gen_var geomGen = SMESH::GetGEOMGen(); + SALOMEDS::Study_var study = SMESHGUI::GetSMESHGen()->GetCurrentStudy(); + GEOM::GEOM_Object_var meshShape = myMesh->GetShapeToMesh(); QStringList entryList; QList rows; @@ -1754,14 +1777,15 @@ void SMESHGUI_PrecomputeOp::initDialog() */ //================================================================================ -void SMESHGUI_PrecomputeOp::getAssignedAlgos(_PTR(SObject) theMesh, +void SMESHGUI_PrecomputeOp::getAssignedAlgos(_PTR(SObject) theMesh, QMap& theModeMap) { if ( !theMesh ) return; + _PTR(SObject) aHypFolder; _PTR(GenericAttribute) anAttr; int aPart = SMESH::Tag_RefOnAppliedAlgorithms; - if ( theMesh->FindSubObject( aPart, aHypFolder ) ) + if ( theMesh->FindSubObject( aPart, aHypFolder )) { _PTR(ChildIterator) anIter = SMESH::GetActiveStudyDocument()->NewChildIterator( aHypFolder ); @@ -2105,7 +2129,7 @@ void SMESHGUI_PrecomputeDlg::setPreviewModes( const QList& theModes ) int SMESHGUI_PrecomputeDlg::getPreviewMode() const { - return myPreviewMode->currentId(); + return myPreviewMode->currentId().toInt(); } //================================================================================