X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_ExtrusionAlongPathDlg.cxx;h=a49334d9800c2971e4ab29bd853581cfcf45fd71;hp=53b2cbf48824146d3d824ba2cc55d9df6993bbaa;hb=b7a7d49664daa32e1befb558280e13ed0bde37c9;hpb=5c19bc1e1684ec6a466423361949ed7b60556968 diff --git a/src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.cxx b/src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.cxx index 53b2cbf48..a49334d98 100644 --- a/src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -253,7 +253,7 @@ SMESHGUI_ExtrusionAlongPathDlg::SMESHGUI_ExtrusionAlongPathDlg( SMESHGUI* theMod OkButton->setAutoDefault(true); OkButton->setDefault(true); - ApplyButton = new QPushButton(tr("SMESH_BUT_APPLY"), GroupButtons); + ApplyButton = new QPushButton(tr("SMESH_BUT_APPLY"), GroupButtons); ApplyButton->setAutoDefault(true); CloseButton = new QPushButton(tr("SMESH_BUT_CLOSE"), GroupButtons); @@ -289,7 +289,7 @@ SMESHGUI_ExtrusionAlongPathDlg::SMESHGUI_ExtrusionAlongPathDlg( SMESHGUI* theMod myPathMeshFilter = new SMESH_TypeFilter(SMESH::MESHorSUBMESH); - myHelpFileName = "extrusion_along_path_page.html"; + myHelpFileName = "extrusion_along_path.html"; Init(); @@ -394,7 +394,7 @@ void SMESHGUI_ExtrusionAlongPathDlg::CheckIsEnable() //================================================================================= bool SMESHGUI_ExtrusionAlongPathDlg::ClickOnApply() { - if (mySMESHGUI->isActiveStudyLocked()) + if (SMESHGUI::isStudyLocked()) return false; if ( !SelectorWdg->IsAnythingSelected() || myPath->_is_nil() ) @@ -444,64 +444,64 @@ bool SMESHGUI_ExtrusionAlongPathDlg::ClickOnApply() mesh->SetParameters( aParameters.join(":").toLatin1().constData() ); - SMESH::ListOfIDSources_var nodes = new SMESH::ListOfIDSources(); - SMESH::ListOfIDSources_var edges = new SMESH::ListOfIDSources(); - SMESH::ListOfIDSources_var faces = new SMESH::ListOfIDSources(); - maxSelType = SelectorWdg->GetSelected( nodes, edges, faces ); - - // is it necessary to switch on the next Display Mode? - SMESH::ElementType newType = (SMESH::ElementType)( maxSelType + 1 ); - SMESH::array_of_ElementType_var oldTypes = mesh->GetTypes(); - meshHadNewTypeBefore = false; - for ( size_t i = 0; i < oldTypes->length() && !meshHadNewTypeBefore; ++i ) - meshHadNewTypeBefore = ( oldTypes[i] >= newType ); - - SMESH::SMESH_MeshEditor_var aMeshEditor = mesh->GetMeshEditor(); - SMESH::SMESH_MeshEditor::Extrusion_Error retVal; - - SMESH::ListOfGroups_var groups = - aMeshEditor->ExtrusionAlongPathObjects( nodes, edges, faces, myPath, - GEOM::GEOM_Object::_nil(), - aNodeStart, AnglesGrp->isChecked(), - anAngles, LinearAnglesCheck->isChecked(), - BasePointGrp->isChecked(), aBasePoint, - makeGroups, retVal ); - - wc.suspend(); - switch (retVal) { - case SMESH::SMESH_MeshEditor::EXTR_NO_ELEMENTS: - SUIT_MessageBox::warning(this, - tr("SMESH_ERROR"), - tr("NO_ELEMENTS_SELECTED")); - return false; break; - case SMESH::SMESH_MeshEditor::EXTR_PATH_NOT_EDGE: - SUIT_MessageBox::warning(this, - tr("SMESH_ERROR"), - tr("SELECTED_PATH_IS_NOT_EDGE")); - return false; break; - case SMESH::SMESH_MeshEditor::EXTR_BAD_PATH_SHAPE: - SUIT_MessageBox::warning(this, - tr("SMESH_ERROR"), - tr("BAD_SHAPE_TYPE")); - return false; break; - case SMESH::SMESH_MeshEditor::EXTR_BAD_STARTING_NODE: - SUIT_MessageBox::warning(this, - tr("SMESH_ERROR"), - tr("EXTR_BAD_STARTING_NODE")); - return false; break; - case SMESH::SMESH_MeshEditor::EXTR_BAD_ANGLES_NUMBER: - SUIT_MessageBox::warning(this, - tr("SMESH_ERROR"), - tr("WRONG_ANGLES_NUMBER")); - return false; break; - case SMESH::SMESH_MeshEditor::EXTR_CANT_GET_TANGENT: - SUIT_MessageBox::warning(this, - tr("SMESH_ERROR"), - tr("CANT_GET_TANGENT")); - return false; break; - case SMESH::SMESH_MeshEditor::EXTR_OK: - break; - } + SMESH::ListOfIDSources_var nodes = new SMESH::ListOfIDSources(); + SMESH::ListOfIDSources_var edges = new SMESH::ListOfIDSources(); + SMESH::ListOfIDSources_var faces = new SMESH::ListOfIDSources(); + maxSelType = SelectorWdg->GetSelected( nodes, edges, faces ); + + // is it necessary to switch on the next Display Mode? + SMESH::ElementType newType = (SMESH::ElementType)( maxSelType + 1 ); + SMESH::array_of_ElementType_var oldTypes = mesh->GetTypes(); + meshHadNewTypeBefore = false; + for ( size_t i = 0; i < oldTypes->length() && !meshHadNewTypeBefore; ++i ) + meshHadNewTypeBefore = ( oldTypes[i] >= newType ); + + SMESH::SMESH_MeshEditor_var aMeshEditor = mesh->GetMeshEditor(); + SMESH::SMESH_MeshEditor::Extrusion_Error retVal; + + SMESH::ListOfGroups_var groups = + aMeshEditor->ExtrusionAlongPathObjects( nodes, edges, faces, myPath, + GEOM::GEOM_Object::_nil(), + aNodeStart, AnglesGrp->isChecked(), + anAngles, LinearAnglesCheck->isChecked(), + BasePointGrp->isChecked(), aBasePoint, + makeGroups, retVal ); + + wc.suspend(); + switch (retVal) { + case SMESH::SMESH_MeshEditor::EXTR_NO_ELEMENTS: + SUIT_MessageBox::warning(this, + tr("SMESH_ERROR"), + tr("NO_ELEMENTS_SELECTED")); + return false; break; + case SMESH::SMESH_MeshEditor::EXTR_PATH_NOT_EDGE: + SUIT_MessageBox::warning(this, + tr("SMESH_ERROR"), + tr("SELECTED_PATH_IS_NOT_EDGE")); + return false; break; + case SMESH::SMESH_MeshEditor::EXTR_BAD_PATH_SHAPE: + SUIT_MessageBox::warning(this, + tr("SMESH_ERROR"), + tr("BAD_SHAPE_TYPE")); + return false; break; + case SMESH::SMESH_MeshEditor::EXTR_BAD_STARTING_NODE: + SUIT_MessageBox::warning(this, + tr("SMESH_ERROR"), + tr("EXTR_BAD_STARTING_NODE")); + return false; break; + case SMESH::SMESH_MeshEditor::EXTR_BAD_ANGLES_NUMBER: + SUIT_MessageBox::warning(this, + tr("SMESH_ERROR"), + tr("WRONG_ANGLES_NUMBER")); + return false; break; + case SMESH::SMESH_MeshEditor::EXTR_CANT_GET_TANGENT: + SUIT_MessageBox::warning(this, + tr("SMESH_ERROR"), + tr("CANT_GET_TANGENT")); + return false; break; + case SMESH::SMESH_MeshEditor::EXTR_OK: + break; + } } catch (...) { return false; } @@ -826,7 +826,7 @@ void SMESHGUI_ExtrusionAlongPathDlg::SetEditCurrentArgument (QPushButton* button if (!myPath->_is_nil()) { SMESH_Actor* aPathActor = SMESH::FindActorByObject(myPath); if (aPathActor) { - SMESH::SetPointRepresentation(true); + aPathActor->SetPointRepresentation( true ); if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) aViewWindow->SetSelectionMode(NodeSelection); SMESH::SetPickable(aPathActor); @@ -1048,11 +1048,19 @@ bool SMESHGUI_ExtrusionAlongPathDlg::isValuesValid() if ( type != SMESH::NODE ) return false; - SMESH::long_array_var elems = mesh->GetNodeInverseElements( aNodeStart ); - if ( elems->length() != 1 || - mesh->GetElementType( elems[0], true ) != SMESH::EDGE ) - return false; - + if ( mesh->HasShapeToMesh() ) + { + SMESH::NodePosition_var pos = mesh->GetNodePosition( aNodeStart ); + if ( pos->shapeType != GEOM::VERTEX ) + return false; + } + else + { + SMESH::long_array_var elems = mesh->GetNodeInverseElements( aNodeStart ); + if ( elems->length() != 1 || + mesh->GetElementType( elems[0], true ) != SMESH::EDGE ) + return false; + } return true; }