From 9388b6fc9a2308a3886435c6db831e5d1b5e7edb Mon Sep 17 00:00:00 2001 From: dmv Date: Mon, 21 Jun 2010 07:59:37 +0000 Subject: [PATCH] 0020740: EDF 1253 GEOM : Be able to select edges of face when we build a wire --- doc/salome/gui/GEOM/images/neo-obj3.png | Bin 16230 -> 17051 bytes doc/salome/gui/GEOM/input/creating_wire.doc | 10 +- src/BuildGUI/BuildGUI_WireDlg.cxx | 148 +++++++++++++++++--- src/BuildGUI/BuildGUI_WireDlg.h | 9 +- 4 files changed, 142 insertions(+), 25 deletions(-) diff --git a/doc/salome/gui/GEOM/images/neo-obj3.png b/doc/salome/gui/GEOM/images/neo-obj3.png index cb9bd40b18114f8b3ecc5b25bf0fe90d8c61e372..c378521b8d07ba205253b08f94ed3dc7aeb4e0f3 100755 GIT binary patch literal 17051 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 M$cyJbe)abM0FaAZ`~Uy| diff --git a/doc/salome/gui/GEOM/input/creating_wire.doc b/doc/salome/gui/GEOM/input/creating_wire.doc index 52357774e..3dd6e3992 100644 --- a/doc/salome/gui/GEOM/input/creating_wire.doc +++ b/doc/salome/gui/GEOM/input/creating_wire.doc @@ -4,10 +4,14 @@ \n To create a \b Wire in the Main Menu select New Entity - > Build - > Wire -\n You can create a \b Wire from several connected edges and wires by +\n You can create a \b Wire from several connected edges or wires by selecting them in the object browser or in the viewer holding Shift -button. -\n Select \b Tolerance which will be used to check the +button. + +It is possible to select wires or edges from objects. To specify subshape type, use +the Object Type radio buttons. + +Select \b Tolerance which will be used to check the connections. If the \b Tolerance value is more than 1e-07, and a gap within this tolerance is detected, the corresponding edges will be modified to connect in the middle of the gap. diff --git a/src/BuildGUI/BuildGUI_WireDlg.cxx b/src/BuildGUI/BuildGUI_WireDlg.cxx index 5ecf3efb2..a769ce1c1 100644 --- a/src/BuildGUI/BuildGUI_WireDlg.cxx +++ b/src/BuildGUI/BuildGUI_WireDlg.cxx @@ -36,8 +36,11 @@ #include #include #include +#include #include +#include +#include #include //================================================================================= @@ -63,8 +66,14 @@ BuildGUI_WireDlg::BuildGUI_WireDlg( GeometryGUI* theGeometryGUI, QWidget* parent mainFrame()->RadioButton3->setAttribute( Qt::WA_DeleteOnClose ); mainFrame()->RadioButton3->close(); - GroupArgs = new DlgRef_1Sel1Spin( centralWidget() ); + GroupType = new DlgRef_3Radio( centralWidget() ); + GroupType->GroupBox1->setTitle( tr( "GEOM_OBJECT_TYPE" ) ); + GroupType->RadioButton1->setText( tr( "GEOM_EDGE" ) ); + GroupType->RadioButton2->setText( tr( "GEOM_WIRE" ) ); + GroupType->RadioButton3->setAttribute( Qt::WA_DeleteOnClose ); + GroupType->RadioButton3->close(); + GroupArgs = new DlgRef_1Sel1Spin( centralWidget() ); GroupArgs->GroupBox1->setTitle( tr( "GEOM_WIRE_CONNECT" ) ); GroupArgs->TextLabel1->setText( tr( "GEOM_OBJECTS" ) ); GroupArgs->PushButton1->setIcon( image1 ); @@ -78,6 +87,7 @@ BuildGUI_WireDlg::BuildGUI_WireDlg( GeometryGUI* theGeometryGUI, QWidget* parent QVBoxLayout* layout = new QVBoxLayout( centralWidget() ); layout->setMargin( 0 ); layout->setSpacing( 6 ); + layout->addWidget( GroupType ); layout->addWidget( GroupArgs ); /***************************************************************/ @@ -107,13 +117,11 @@ void BuildGUI_WireDlg::Init() /* init variables */ myEditCurrentArgument = GroupArgs->LineEdit1; GroupArgs->LineEdit1->setReadOnly( true ); + GroupType->RadioButton1->setChecked(true); myOkEdgesAndWires = false; - TColStd_MapOfInteger aMap; - aMap.Add( GEOM_WIRE ); - aMap.Add( GEOM_EDGE ); - globalSelection( aMap ); + localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE ); /* signals and slots connections */ connect( buttonOk(), SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) ); @@ -121,6 +129,12 @@ void BuildGUI_WireDlg::Init() connect( GroupArgs->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); + + connect( GroupType->RadioButton1, SIGNAL( clicked() ), this, SLOT( TypeButtonClicked() ) ); + connect( GroupType->RadioButton2, SIGNAL( clicked() ), this, SLOT( TypeButtonClicked() ) ); + + connect( myGeomGUI, SIGNAL( SignalDeactivateActiveDialog() ), this, SLOT( DeactivateActiveDialog() ) ); + connect( myGeomGUI, SIGNAL( SignalCloseAllDialogs() ), this, SLOT( ClickOnCancel() ) ); initName( tr( "GEOM_WIRE" ) ); SelectionIntoArgument(); @@ -144,13 +158,36 @@ void BuildGUI_WireDlg::ClickOnOk() //================================================================================= bool BuildGUI_WireDlg::ClickOnApply() { - if ( !onAccept() ) + if ( !onAccept() || !myOkEdgesAndWires ) return false; initName(); + TypeButtonClicked(); + myMapToStudy.clear(); + myEdgesAndWires.length(0); + myOkEdgesAndWires = false; + myEditCurrentArgument->setText( "" ); return true; } +//================================================================================= +// function : TypeBittonClicked() +// purpose : Radio button management +//================================================================================= +void BuildGUI_WireDlg::TypeButtonClicked() +{ + if ( GroupType->RadioButton1->isChecked() ) { + globalSelection(); // close local contexts, if any + localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE ); + GroupArgs->TextLabel1->setText( tr( "GEOM_EDGE" ) ); + } + else if ( GroupType->RadioButton2->isChecked() ) { + globalSelection(); // close local contexts, if any + localSelection( GEOM::GEOM_Object::_nil(), TopAbs_WIRE ); + GroupArgs->TextLabel1->setText( tr( "GEOM_WIRE" ) ); + } + SelectionIntoArgument(); +} //================================================================================= // function : SelectionIntoArgument() @@ -168,14 +205,71 @@ void BuildGUI_WireDlg::SelectionIntoArgument() myOkEdgesAndWires = false; int nbSel = GEOMBase::GetNameOfSelectedIObjects(aSelList, aString); - if ( nbSel == 0 ) - return; - if ( nbSel != 1 ) - aString = tr( "%1_objects" ).arg( nbSel ); - - GEOMBase::ConvertListOfIOInListOfGO(aSelList, myEdgesAndWires); - if ( !myEdgesAndWires.length() ) + if ( nbSel == 0 ) { + myMapToStudy.clear(); return; + } + + TopAbs_ShapeEnum aNeedType = TopAbs_EDGE; + if (GroupType->RadioButton2->isChecked()) + aNeedType = TopAbs_WIRE; + + std::list aList; // subshapes list + TopoDS_Shape aShape; + Standard_Boolean aRes = Standard_False; + for (SALOME_ListIteratorOfListIO anIt (aSelList); anIt.More(); anIt.Next()) { + TColStd_IndexedMapOfInteger aMap; + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( anIt.Value(), aRes ); + if ( !CORBA::is_nil(aSelectedObject) && aRes && GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) { + aSelMgr->GetIndexes( anIt.Value(), aMap ); + + if ( aMap.Extent() > 0 ) { // local selection + for (int ind = 1; ind <= aMap.Extent(); ind++) { + aString = aSelectedObject->GetName(); + int anIndex = aMap(ind); + if ( aNeedType == TopAbs_EDGE ) + aString += QString( ":edge_%1" ).arg( anIndex ); + else + aString += QString( ":wire_%1" ).arg( anIndex ); + + //Find SubShape Object in Father + GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObject, aString ); + + if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study + GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() ); + aList.push_back( aShapesOp->GetSubShape( aSelectedObject, anIndex ) ); + myMapToStudy[aString] = aShapesOp->GetSubShape( aSelectedObject, anIndex ); + } + else { + aList.push_back( aFindedObject ); // get Object from study + } + } + } else { // global selection + if ( aShape.ShapeType() == aNeedType ) { + GEOMBase::ConvertListOfIOInListOfGO(aSelList, myEdgesAndWires); + } else { + aList.clear(); + myEdgesAndWires.length(0); + } + } + } + } + + // convert aList in listofgo + if ( aList.size() ) { + myEdgesAndWires.length( aList.size() ); + int k = 0; + for ( std::list::iterator j = aList.begin(); j != aList.end(); j++ ) + myEdgesAndWires[k++] = *j; + } + + if ( myEdgesAndWires.length() > 1 ) + aString = tr( "%1_objects" ).arg( myEdgesAndWires.length() ); + + if ( !myEdgesAndWires.length() ) { + aString = ""; + myMapToStudy.clear(); + } myEditCurrentArgument->setText( aString ); myOkEdgesAndWires = true; @@ -192,10 +286,7 @@ void BuildGUI_WireDlg::SetEditCurrentArgument() if ( send != GroupArgs->PushButton1 ) return; - TColStd_MapOfInteger aMap; - aMap.Add( GEOM_WIRE ); - aMap.Add( GEOM_EDGE ); - globalSelection( aMap ); + TypeButtonClicked(); myEditCurrentArgument = GroupArgs->LineEdit1; myEditCurrentArgument->setFocus(); @@ -212,12 +303,18 @@ void BuildGUI_WireDlg::ActivateThisDialog() GEOMBase_Skeleton::ActivateThisDialog(); connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); - TColStd_MapOfInteger aMap; - aMap.Add( GEOM_WIRE ); - aMap.Add( GEOM_EDGE ); - globalSelection( aMap ); + + TypeButtonClicked(); } +//================================================================================= +// function : DeactivateActiveDialog() +// purpose : public slot to deactivate if active +//================================================================================= +void BuildGUI_WireDlg::DeactivateActiveDialog() +{ + GEOMBase_Skeleton::DeactivateActiveDialog(); +} //================================================================================= // function : enterEvent() @@ -262,3 +359,12 @@ bool BuildGUI_WireDlg::execute (ObjectList& objects) return true; } + +//================================================================================= +// function : addSubshapeToStudy +// purpose : virtual method to add new SubObjects if local selection +//================================================================================= +void BuildGUI_WireDlg::addSubshapesToStudy() +{ + addSubshapesToFather( myMapToStudy ); +} diff --git a/src/BuildGUI/BuildGUI_WireDlg.h b/src/BuildGUI/BuildGUI_WireDlg.h index d34966921..2ebe55958 100644 --- a/src/BuildGUI/BuildGUI_WireDlg.h +++ b/src/BuildGUI/BuildGUI_WireDlg.h @@ -30,6 +30,7 @@ #include class DlgRef_1Sel1Spin; +class DlgRef_3Radio; //================================================================================= // class : BuildGUI_WireDlg @@ -47,7 +48,8 @@ protected: // redefined from GEOMBase_Helper virtual GEOM::GEOM_IOperations_ptr createOperation(); virtual bool isValid( QString& ); - virtual bool execute( ObjectList& ); + virtual bool execute( ObjectList& ); + virtual void addSubshapesToStudy(); private: void Init(); @@ -58,13 +60,18 @@ private: bool myOkEdgesAndWires; /* to check when arguments is defined */ DlgRef_1Sel1Spin* GroupArgs; + DlgRef_3Radio* GroupType; + + QMap myMapToStudy; private slots: void ClickOnOk(); bool ClickOnApply(); void ActivateThisDialog(); + void DeactivateActiveDialog(); void SelectionIntoArgument(); void SetEditCurrentArgument(); + void TypeButtonClicked(); }; #endif // BUILDGUI_WIREDLG_H -- 2.39.2