From: dmv Date: Thu, 20 Dec 2007 11:01:43 +0000 (+0000) Subject: NPAL 16768 X-Git-Tag: V3_2_10~12 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=6f6764ffdcd081985b1a9fb6b7fe6e28998114fe;p=modules%2Fgeom.git NPAL 16768 --- diff --git a/src/MeasureGUI/MeasureGUI_NormaleDlg.cxx b/src/MeasureGUI/MeasureGUI_NormaleDlg.cxx index 07a42d2c9..cb7802a31 100644 --- a/src/MeasureGUI/MeasureGUI_NormaleDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_NormaleDlg.cxx @@ -32,6 +32,12 @@ #include "SalomeApp_Application.h" #include "LightApp_SelectionMgr.h" +#include +#include +#include +#include +#include + #include #include "GEOMImpl_Types.hxx" @@ -177,14 +183,36 @@ void MeasureGUI_NormaleDlg::SelectionIntoArgument() if (!testResult) return; + QString aName = GEOMBase::GetName(aSelectedObject); + if (myEditCurrentArgument == GroupArgs->LineEdit1) { myFace = aSelectedObject; } else if (myEditCurrentArgument == GroupArgs->LineEdit2) { + TopoDS_Shape aShape; + if (GEOMBase::GetShape(aSelectedObject, aShape, TopAbs_SHAPE) && !aShape.IsNull()) + { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + TColStd_IndexedMapOfInteger aMap; + aSelMgr->GetIndexes(firstIObject(), aMap); + if (aMap.Extent() == 1) // Local Selection + { + GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations(getStudyId()); + int anIndex = aMap( 1 ); + aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex); + aName += QString(":vertex_%1").arg(anIndex); + } + else // Global Selection + { + if (aShape.ShapeType() != TopAbs_VERTEX) { + aSelectedObject = GEOM::GEOM_Object::_nil(); + aName = ""; + } + } + } myPoint = aSelectedObject; } - - myEditCurrentArgument->setText(GEOMBase::GetName(aSelectedObject)); + myEditCurrentArgument->setText( aName ); displayPreview(); } @@ -211,14 +239,14 @@ void MeasureGUI_NormaleDlg::LineEditReturnPressed() void MeasureGUI_NormaleDlg::SetEditCurrentArgument() { QPushButton* send = (QPushButton*)sender(); + globalSelection(GEOM_FACE); if (send == GroupArgs->PushButton1) { myEditCurrentArgument = GroupArgs->LineEdit1; - globalSelection(GEOM_FACE); } else if (send == GroupArgs->PushButton2) { myEditCurrentArgument = GroupArgs->LineEdit2; - globalSelection(GEOM_POINT); + localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX ); } myEditCurrentArgument->setFocus();