- else if (myEditCurrentArgument == GroupPoints->LineEdit2) {
- if (aSelList.Extent() != 1)
- return;
-
- // nbSel == 1
- Standard_Boolean testResult = Standard_False;
- myArgument = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult);
- if (!testResult || CORBA::is_nil(myArgument))
- return;
-
- aName = GEOMBase::GetName(myArgument);
-
- if (testResult && !myArgument->_is_nil()) {
- TopoDS_Shape aShape;
- if (GEOMBase::GetShape(myArgument, aShape, TopAbs_SHAPE) && !aShape.IsNull()) {
- TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
- if (getConstructorId() == 1)
- aNeedType = TopAbs_EDGE;
- else if (getConstructorId() == 2)
- aNeedType = TopAbs_FACE;
-
- TColStd_IndexedMapOfInteger aMap;
- aSelMgr->GetIndexes(aSelList.First(), aMap);
- if (aMap.Extent() == 1) {
- int anIndex = aMap(1);
- if (aNeedType == TopAbs_VERTEX)
- aName += QString(":vertex_%1").arg(anIndex);
- else
- aName += QString(":edge_%1").arg(anIndex);
-
- //Find SubShape Object in Father
- GEOM::GEOM_Object_var aFindedObject = findObjectInFather(myArgument, aName);
-
- if (aFindedObject == GEOM::GEOM_Object::_nil()) { // Object not found in study
- GEOM::GEOM_IShapesOperations_var aShapesOp =
- getGeomEngine()->GetIShapesOperations(getStudyId());
- myArgument = aShapesOp->GetSubShape(myArgument, anIndex);
- }
- else {
- myArgument = aFindedObject; // get Object from study
- }
- }
- else {
- if (aShape.ShapeType() != aNeedType) {
- myArgument = GEOM::GEOM_Object::_nil();
- aName = "";
- }
- }
- }
+ else {
+ TopAbs_ShapeEnum aNeedType = ( getConstructorId() == 1 ) ?
+ TopAbs_EDGE : ( ( getConstructorId() == 2 ) ? TopAbs_FACE : TopAbs_VERTEX );
+ GEOM::GeomObjPtr aSelectedObject = getSelected( aNeedType );
+ TopoDS_Shape aShape;
+ if ( aSelectedObject && GEOMBase::GetShape( aSelectedObject.get(), aShape ) && !aShape.IsNull() ) {
+ QString aName = GEOMBase::GetName( aSelectedObject.get() );
+ myEditCurrentArgument->setText( aName );
+ myArgument = aSelectedObject;
+ if ( myObjects.isEmpty() )
+ GroupPoints->PushButton1->click();
+ }
+ else {
+ if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
+ myArgument.nullify();
+ myEditCurrentArgument->setText("");