- myEditCurrentArgument->setText(aName);
- myOkBase = true;
- } else if (myEditCurrentArgument == GroupPoints->LineEdit2 ||
- myEditCurrentArgument == GroupPoints->LineEdit3) {
- myEditCurrentArgument == GroupPoints->LineEdit2 ? myOkPath = false : myOkVec = false;
- bool myOk = false;
-
- if (myEditCurrentArgument == GroupPoints->LineEdit2 && !GroupPoints->CheckButton1->isChecked() ){
- myPath = aSelectedObject;
- myOkPath = true;
- myEditCurrentArgument->setText(aName);
- } else {
- TColStd_IndexedMapOfInteger aMap;
- aSelMgr->GetIndexes(aSelList.First(), aMap);
- if (aMap.Extent() == 1) {
- int anIndex = aMap(1);
- aName.append(":edge_" + QString::number(anIndex));
-
- //Find SubShape Object in Father
- GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather(aSelectedObject, aName);
-
- if (aFindedObject->_is_nil()) { // Object not found in study
- GEOM::GEOM_IShapesOperations_var aShapesOp =
- getGeomEngine()->GetIShapesOperations(getStudyId());
- aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
- myOk = true;
- } else { // get Object from study
- aSelectedObject = aFindedObject;
- myOk = true;
- }
- } else {
- myOk = true;
- if (S.ShapeType() != TopAbs_EDGE) {
- aSelectedObject = GEOM::GEOM_Object::_nil();
- aName = "";
- myOk = false;
- }
- }
- if (myEditCurrentArgument == GroupPoints->LineEdit2) {
- myPath = aSelectedObject;
- myOkPath = myOk;
- } else if (myEditCurrentArgument == GroupPoints->LineEdit3) {
- myVec = aSelectedObject;
- myOkVec = myOk;
- }
- myEditCurrentArgument->setText(aName);
-
- if (myOkPath) {
- if (!myOkBase)
- GroupPoints->PushButton1->click();
- else if (!myOkVec)
- GroupPoints->PushButton3->click();
- } else if (myOkVec) {
- if (!myOkBase)
- GroupPoints->PushButton1->click();
- else if (!myOkPath)
- GroupPoints->PushButton2->click();
- }
+ if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) {
+ myBaseObjects.clear();
+ QList<GEOM::GeomObjPtr> objects = getSelected( TopAbs_SHAPE, -1 );
+ for ( int i = 0; i < objects.count(); i++ ) {
+ GEOM::shape_type stype = objects[i]->GetMaxShapeType();
+ GEOM::shape_type maxallowed = getConstructorId() == 1 ? GEOM::FACE : GEOM::SHELL;
+ GEOM::shape_type minallowed = getConstructorId() == 1 ? GEOM::EDGE : GEOM::VERTEX;
+ if ( stype < maxallowed || stype > minallowed )
+ continue;
+ myBaseObjects << objects[i];
+ }
+ if ( !myBaseObjects.isEmpty() ) {
+ QString aName = myBaseObjects.count() > 1 ? QString( "%1_objects").arg( myBaseObjects.count() ) : GEOMBase::GetName( myBaseObjects[0].get() );
+ myEditCurrentArgument->setText( aName );
+ }
+ }
+ else if (myEditCurrentArgument == GroupPoints->LineEdit2) {
+ QList<TopAbs_ShapeEnum> types;
+ types << TopAbs_EDGE << TopAbs_WIRE;
+ myPath = getSelected( types );
+ if ( myPath ) {
+ QString aName = GEOMBase::GetName( myPath.get() );
+ myEditCurrentArgument->setText( aName );
+ if ( getConstructorId() == 1 && !myVec )
+ GroupPoints->PushButton3->click();
+ else if ( myBaseObjects.isEmpty() )
+ GroupPoints->PushButton1->click();
+ }
+ }
+ else if (myEditCurrentArgument == GroupPoints->LineEdit3) {
+ myVec = getSelected( TopAbs_EDGE );
+ if ( myVec ) {
+ QString aName = GEOMBase::GetName( myVec.get() );
+ myEditCurrentArgument->setText( aName );
+ if ( myBaseObjects.isEmpty() )
+ GroupPoints->PushButton1->click();
+ else if ( !myPath )
+ GroupPoints->PushButton2->click();