mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-04-24 01:32:05 +05:00
Mantis issue 0020508: EDF 1059 GEOM : Selection of a group in Suppress Faces.
This commit is contained in:
parent
8ee4f1c7fc
commit
8383160903
Binary file not shown.
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 23 KiB |
@ -34,6 +34,7 @@
|
|||||||
#include <SalomeApp_Application.h>
|
#include <SalomeApp_Application.h>
|
||||||
#include <SalomeApp_Study.h>
|
#include <SalomeApp_Study.h>
|
||||||
#include <LightApp_SelectionMgr.h>
|
#include <LightApp_SelectionMgr.h>
|
||||||
|
#include <SALOME_ListIteratorOfListIO.hxx>
|
||||||
|
|
||||||
// OCCT Includes
|
// OCCT Includes
|
||||||
#include <TopAbs.hxx>
|
#include <TopAbs.hxx>
|
||||||
@ -109,6 +110,8 @@ void RepairGUI_SuppressFacesDlg::Init()
|
|||||||
myObject = GEOM::GEOM_Object::_nil();
|
myObject = GEOM::GEOM_Object::_nil();
|
||||||
myFacesInd = new GEOM::short_array();
|
myFacesInd = new GEOM::short_array();
|
||||||
myFacesInd->length(0);
|
myFacesInd->length(0);
|
||||||
|
|
||||||
|
mainFrame()->GroupBoxPublish->show();
|
||||||
|
|
||||||
// signals and slots connections
|
// signals and slots connections
|
||||||
connect(buttonOk(), SIGNAL(clicked()), this, SLOT(ClickOnOk()));
|
connect(buttonOk(), SIGNAL(clicked()), this, SLOT(ClickOnOk()));
|
||||||
@ -170,10 +173,10 @@ void RepairGUI_SuppressFacesDlg::SelectionIntoArgument()
|
|||||||
SALOME_ListIO aSelList;
|
SALOME_ListIO aSelList;
|
||||||
aSelMgr->selectedObjects(aSelList);
|
aSelMgr->selectedObjects(aSelList);
|
||||||
|
|
||||||
if (aSelList.Extent() == 1) {
|
if (myEditCurrentArgument == GroupArgs->LineEdit1) {
|
||||||
Handle(SALOME_InteractiveObject) anIO = aSelList.First();
|
if (aSelList.Extent() == 1) {
|
||||||
|
Handle(SALOME_InteractiveObject) anIO = aSelList.First();
|
||||||
|
|
||||||
if (myEditCurrentArgument == GroupArgs->LineEdit1) {
|
|
||||||
Standard_Boolean aRes;
|
Standard_Boolean aRes;
|
||||||
myObject = GEOMBase::ConvertIOinGEOMObject(anIO, aRes);
|
myObject = GEOMBase::ConvertIOinGEOMObject(anIO, aRes);
|
||||||
if (aRes && GEOMBase::IsShape(myObject)) {
|
if (aRes && GEOMBase::IsShape(myObject)) {
|
||||||
@ -193,26 +196,35 @@ void RepairGUI_SuppressFacesDlg::SelectionIntoArgument()
|
|||||||
else
|
else
|
||||||
myObject = GEOM::GEOM_Object::_nil();
|
myObject = GEOM::GEOM_Object::_nil();
|
||||||
}
|
}
|
||||||
else if (myEditCurrentArgument == GroupArgs->LineEdit2) {
|
}
|
||||||
TColStd_IndexedMapOfInteger aMap;
|
else if (myEditCurrentArgument == GroupArgs->LineEdit2) {
|
||||||
aSelMgr->GetIndexes(anIO, aMap);
|
TColStd_IndexedMapOfInteger aMap;
|
||||||
|
|
||||||
if (aMap.IsEmpty()) { // try to detect selected published sub-shape
|
if (aSelList.Extent() == 1) {
|
||||||
|
Handle(SALOME_InteractiveObject) anIO = aSelList.First();
|
||||||
|
aSelMgr->GetIndexes(anIO, aMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (aMap.IsEmpty() && aSelList.Extent() > 0) { // try to detect selected published sub-shape
|
||||||
|
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>(myGeomGUI->getApp()->activeStudy());
|
||||||
|
if (!appStudy) return;
|
||||||
|
_PTR(Study) aStudy = appStudy->studyDS();
|
||||||
|
|
||||||
|
TopTools_IndexedMapOfShape aMainMap;
|
||||||
|
TopoDS_Shape aMainShape = GEOM_Client().GetShape(GeometryGUI::GetGeomGen(), myObject);
|
||||||
|
TopExp::MapShapes(aMainShape, aMainMap);
|
||||||
|
|
||||||
|
SALOME_ListIteratorOfListIO anIter (aSelList);
|
||||||
|
for (int i = 0; anIter.More(); anIter.Next(), i++) {
|
||||||
|
Handle(SALOME_InteractiveObject) anIO = anIter.Value();
|
||||||
QString anEntry = anIO->getEntry();
|
QString anEntry = anIO->getEntry();
|
||||||
|
|
||||||
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>(myGeomGUI->getApp()->activeStudy());
|
|
||||||
if (!appStudy) return;
|
|
||||||
_PTR(Study) aStudy = appStudy->studyDS();
|
|
||||||
_PTR(SObject) aSObj (aStudy->FindObjectID(anEntry.toLatin1().constData()));
|
_PTR(SObject) aSObj (aStudy->FindObjectID(anEntry.toLatin1().constData()));
|
||||||
GEOM::GEOM_Object_var aGeomObj =
|
GEOM::GEOM_Object_var aGeomObj =
|
||||||
GEOM::GEOM_Object::_narrow(GeometryGUI::ClientSObjectToObject(aSObj));
|
GEOM::GEOM_Object::_narrow(GeometryGUI::ClientSObjectToObject(aSObj));
|
||||||
TopoDS_Shape aShape;
|
TopoDS_Shape aShape;
|
||||||
if (GEOMBase::GetShape(aGeomObj, aShape)) {
|
if (GEOMBase::GetShape(aGeomObj, aShape)) {
|
||||||
if (aGeomObj->GetType() == GEOM_GROUP || aShape.ShapeType() == TopAbs_FACE) {
|
if (aGeomObj->GetType() == GEOM_GROUP || aShape.ShapeType() == TopAbs_FACE) {
|
||||||
TopTools_IndexedMapOfShape aMainMap;
|
|
||||||
TopoDS_Shape aMainShape = GEOM_Client().GetShape(GeometryGUI::GetGeomGen(), myObject);
|
|
||||||
TopExp::MapShapes(aMainShape, aMainMap);
|
|
||||||
|
|
||||||
TopExp_Explorer anExp (aShape, TopAbs_FACE);
|
TopExp_Explorer anExp (aShape, TopAbs_FACE);
|
||||||
for (; anExp.More(); anExp.Next()) {
|
for (; anExp.More(); anExp.Next()) {
|
||||||
TopoDS_Shape aSubShape = anExp.Current();
|
TopoDS_Shape aSubShape = anExp.Current();
|
||||||
@ -224,14 +236,14 @@ void RepairGUI_SuppressFacesDlg::SelectionIntoArgument()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const int n = aMap.Extent();
|
|
||||||
myFacesInd->length(n);
|
|
||||||
for (int i = 1; i <= n; i++)
|
|
||||||
myFacesInd[i-1] = aMap(i);
|
|
||||||
if (n)
|
|
||||||
myEditCurrentArgument->setText(QString::number(n) + "_" + tr("GEOM_FACE") + tr("_S_"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const int n = aMap.Extent();
|
||||||
|
myFacesInd->length(n);
|
||||||
|
for (int i = 1; i <= n; i++)
|
||||||
|
myFacesInd[i-1] = aMap(i);
|
||||||
|
if (n)
|
||||||
|
myEditCurrentArgument->setText(QString::number(n) + "_" + tr("GEOM_FACE") + tr("_S_"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -373,3 +385,18 @@ void RepairGUI_SuppressFacesDlg::initSelection()
|
|||||||
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
|
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
|
||||||
this, SLOT(SelectionIntoArgument()));
|
this, SLOT(SelectionIntoArgument()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : restoreSubShapes
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
void RepairGUI_SuppressFacesDlg::restoreSubShapes (SALOMEDS::Study_ptr theStudy,
|
||||||
|
SALOMEDS::SObject_ptr theSObject)
|
||||||
|
{
|
||||||
|
if (mainFrame()->CheckBoxRestoreSS->isChecked()) {
|
||||||
|
// empty list of arguments means that all arguments should be restored
|
||||||
|
getGeomEngine()->RestoreSubShapesSO(theStudy, theSObject, GEOM::ListOfGO(),
|
||||||
|
/*theFindMethod=*/GEOM::FSM_GetInPlace,
|
||||||
|
/*theInheritFirstArg=*/true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -47,6 +47,7 @@ protected:
|
|||||||
virtual GEOM::GEOM_IOperations_ptr createOperation();
|
virtual GEOM::GEOM_IOperations_ptr createOperation();
|
||||||
virtual bool isValid( QString& );
|
virtual bool isValid( QString& );
|
||||||
virtual bool execute( ObjectList& );
|
virtual bool execute( ObjectList& );
|
||||||
|
virtual void restoreSubShapes( SALOMEDS::Study_ptr, SALOMEDS::SObject_ptr );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void Init();
|
void Init();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user