IPAL 18221 correct names and selection engine on NPAL 16768

This commit is contained in:
dmv 2007-12-19 10:06:25 +00:00
parent d11e79ac18
commit e8b2a375db
16 changed files with 211 additions and 144 deletions

View File

@ -287,9 +287,9 @@ void BasicGUI_ArcDlg::SelectionIntoArgument()
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes );
if ( !CORBA::is_nil( aSelectedObject ) && aRes )
{
myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
// Get Selected object if selected subshape
TopoDS_Shape aShape;
QString aName = GEOMBase::GetName( aSelectedObject );
if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() )
{
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
@ -300,13 +300,14 @@ void BasicGUI_ArcDlg::SelectionIntoArgument()
GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() );
int anIndex = aMap( 1 );
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( aShape, aShapes );
aShape = aShapes.FindKey( anIndex );
aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
aSelMgr->clearSelected();
aName.append( ":vertex_" + QString::number( anIndex ) );
}
}
myEditCurrentArgument->setText( aName );
switch (getConstructorId())
{
case 0:

View File

@ -30,6 +30,7 @@
#include "SUIT_Desktop.h"
#include "SUIT_Session.h"
#include "SalomeApp_Application.h"
#include "SalomeApp_Study.h"
#include "LightApp_SelectionMgr.h"
#include <qlabel.h>
@ -270,61 +271,97 @@ void BasicGUI_CurveDlg::SelectionIntoArgument()
myEditCurrentArgument->setText("");
Standard_Boolean aRes = Standard_False;
int i = 0;
int IOC = IObjectCount();
bool is_append = myPoints->length() < IOC; // if true - add point, else remove
myPoints->length( IOC ); // this length may be greater than number of objects,
// bool is_append = myPoints->length() < IOC; // if true - add point, else remove
// myPoints->length( IOC ); // this length may be greater than number of objects,
// that will actually be put into myPoints
for ( SALOME_ListIteratorOfListIO anIt( selectedIO() ); anIt.More(); anIt.Next() )
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
SalomeApp_Application* app =
dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
_PTR(Study) aDStudy = appStudy->studyDS();
GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
int anIndex;
TopoDS_Shape aShape;
TColStd_IndexedMapOfInteger aMapIndexes;
GEOM::GEOM_Object_var anObject;
std::list<GEOM::GEOM_Object_var> aList;
SALOME_ListIO selected;
aSelMgr->selectedObjects( selected, QString::null, false );
for ( SALOME_ListIteratorOfListIO anIt( selected ); anIt.More(); anIt.Next() )
{
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( anIt.Value(), aRes );
if ( !CORBA::is_nil( aSelectedObject ) && aRes )
{
//TopoDS_Shape aPointShape;
//if ( myGeomBase->GetShape( aSelectedObject, aPointShape, TopAbs_VERTEX ) )
TopoDS_Shape aShape;
if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() )
{
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
TColStd_IndexedMapOfInteger aMap;
aSelMgr->GetIndexes( anIt.Value(), aMap );
if ( aMap.Extent() == 1 )
aSelMgr->GetIndexes( anIt.Value(), aMapIndexes );
if ( aMapIndexes.Extent() > 0 )
{
GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() );
int anIndex = aMap( 1 );
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( aShape, aShapes );
aShape = aShapes.FindKey( anIndex );
aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
aSelMgr->clearSelected();
}
}
for (int ii=1; ii <= aMapIndexes.Extent(); ii++) {
anIndex = aMapIndexes(ii);
QString aName = GEOMBase::GetName( aSelectedObject );
aName = aName + ":vertex_" + QString::number( anIndex );
anObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
//Find Object in study
_PTR(SObject) obj ( aDStudy->FindObjectID( anIt.Value()->getEntry() ) );
bool inStudy = false;
for (_PTR(ChildIterator) iit (aDStudy->NewChildIterator(obj)); iit->More(); iit->Next()) {
_PTR(SObject) child (iit->Value());
QString aChildName = child->GetName();
if (aChildName == aName) {
inStudy = true;
CORBA::Object_var corbaObj = GeometryGUI::ClientSObjectToObject(iit->Value());
anObject = GEOM::GEOM_Object::_narrow( corbaObj );
}
}
int pos = isPointInList(myOrderedSel,aSelectedObject);
if(is_append && pos==-1)
myOrderedSel.push_back(aSelectedObject);
myPoints[i++] = aSelectedObject;
if (!inStudy)
GeometryGUI::GetGeomGen()->AddInStudy(GeometryGUI::ClientStudyToStudy(aDStudy),
anObject, aName, aSelectedObject);
int pos = isPointInList(myOrderedSel, anObject);
if (pos==-1) {
myOrderedSel.push_back(anObject);
}
// if (!inStudy)
aList.push_back(anObject);
}
} else { // aMap.Extent() == 0
int pos = isPointInList(myOrderedSel,aSelectedObject);
if(pos==-1)
myOrderedSel.push_back(aSelectedObject);
aList.push_back(aSelectedObject);
}
}
}
}
myPoints->length( i ); // this is the right length, smaller of equal to the previously set
myPoints->length( aList.size() );
int k=0;
for (list<GEOM::GEOM_Object_var>::iterator j=aList.begin();j!=aList.end();j++)
myPoints[k++] = *j;
if(IOC == 0)
myOrderedSel.clear();
else
removeUnnecessaryPnt(myOrderedSel,myPoints);
removeUnnecessaryPnt(myOrderedSel, myPoints);
if(myOrderedSel.size() == myPoints->length()){
int k=0;
for (list<GEOM::GEOM_Object_var>::iterator j=myOrderedSel.begin();j!=myOrderedSel.end();j++)
myPoints[k++] = *j;
} else {
//cout << "ERROR: Ordered sequence size != selection sequence size! ("<<myOrderedSel.size()<<"!="<<myPoints->length()<<")"<<endl;
}
if ( i )
GroupPoints->LineEdit1->setText( QString::number( i ) + "_" + tr( "GEOM_POINT" ) + tr( "_S_" ) );
// if ( myOrderedSel.size() == myPoints->length() ) {
myPoints->length( myOrderedSel.size() );
k=0;
for (list<GEOM::GEOM_Object_var>::iterator j=myOrderedSel.begin();j!=myOrderedSel.end();j++)
myPoints[k++] = *j;
// }
if ( myPoints->length() > 0 )
GroupPoints->LineEdit1->setText( QString::number( myPoints->length() ) + "_" + tr( "GEOM_POINT" ) + tr( "_S_" ) );
displayPreview();
}

View File

@ -108,8 +108,7 @@ void BasicGUI_EllipseDlg::Init()
{
/* init variables */
myEditCurrentArgument = GroupPoints->LineEdit1;
// globalSelection( GEOM_POINT );
localSelection(GEOM::GEOM_Object::_nil(), TopAbs_VERTEX); //Select Vertex on All Shapes
localSelection(GEOM::GEOM_Object::_nil(), TopAbs_VERTEX);
myPoint = myDir = GEOM::GEOM_Object::_nil();
@ -214,9 +213,10 @@ void BasicGUI_EllipseDlg::SelectionIntoArgument()
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes );
if ( !CORBA::is_nil( aSelectedObject ) && aRes )
{
myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
// Get Selected object if selected subshape
TopoDS_Shape aShape;
QString aName = GEOMBase::GetName( aSelectedObject );
if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() )
{
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
@ -227,13 +227,17 @@ void BasicGUI_EllipseDlg::SelectionIntoArgument()
GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() );
int anIndex = aMap( 1 );
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( aShape, aShapes );
aShape = aShapes.FindKey( anIndex );
aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
aName.append( ":edge_" + QString::number( anIndex ) );
else
aName.append( ":vertex_" + QString::number( anIndex ) );
aSelMgr->clearSelected();
}
}
myEditCurrentArgument->setText( aName );
if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint = aSelectedObject;
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myDir = aSelectedObject;
}
@ -249,6 +253,7 @@ void BasicGUI_EllipseDlg::SelectionIntoArgument()
void BasicGUI_EllipseDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
globalSelection( GEOM_POINT );
if ( send == GroupPoints->PushButton1 ) myEditCurrentArgument = GroupPoints->LineEdit1;
else if ( send == GroupPoints->PushButton2 ) myEditCurrentArgument = GroupPoints->LineEdit2;

View File

@ -200,6 +200,7 @@ void BasicGUI_LineDlg::ConstructorsClicked(int constructorId)
{
case 0:
{
globalSelection(GEOM_POINT); // to break previous local selection
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
myEditCurrentArgument = GroupPoints->LineEdit1;
myEditCurrentArgument->setText("");
@ -211,6 +212,7 @@ void BasicGUI_LineDlg::ConstructorsClicked(int constructorId)
}
case 1:
{
globalSelection(GEOM_PLANE); // to break previous local selection
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_FACE );
myEditCurrentArgument = GroupFaces->LineEdit1;
myEditCurrentArgument->setText("");
@ -249,8 +251,9 @@ void BasicGUI_LineDlg::SelectionIntoArgument()
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes );
if ( !CORBA::is_nil( aSelectedObject ) && aRes )
{
myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
TopoDS_Shape aShape;
QString aName = GEOMBase::GetName( aSelectedObject );
if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() )
{
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
@ -261,13 +264,17 @@ void BasicGUI_LineDlg::SelectionIntoArgument()
GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() );
int anIndex = aMap( 1 );
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( aShape, aShapes );
aShape = aShapes.FindKey( anIndex );
if ( myEditCurrentArgument == GroupFaces->LineEdit1 ||
myEditCurrentArgument == GroupFaces->LineEdit2 )
aName.append( ":face_" + QString::number( anIndex ) );
else
aName.append( ":vertex_" + QString::number( anIndex ) );
aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
aSelMgr->clearSelected();
}
}
myEditCurrentArgument->setText( aName );
if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint1 = aSelectedObject;
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myPoint2 = aSelectedObject;
else if ( myEditCurrentArgument == GroupFaces->LineEdit1 ) myFace1 = aSelectedObject;
@ -321,7 +328,6 @@ void BasicGUI_LineDlg::ActivateThisDialog()
SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
// myGeomGUI->SetState( 0 );
// globalSelection( GEOM_POINT );
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
myEditCurrentArgument = GroupPoints->LineEdit1;

View File

@ -216,6 +216,7 @@ void BasicGUI_PlaneDlg::ConstructorsClicked(int constructorId)
GroupPntDir->LineEdit2->setText(tr(""));
/* for the first argument */
globalSelection( GEOM_POINT ); // to break previous local selection
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
break;
}
@ -232,6 +233,7 @@ void BasicGUI_PlaneDlg::ConstructorsClicked(int constructorId)
Group3Pnts->LineEdit3->setText("");
/* for the first argument */
globalSelection( GEOM_POINT ); // to break previous local selection
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
break;
}
@ -246,7 +248,7 @@ void BasicGUI_PlaneDlg::ConstructorsClicked(int constructorId)
GroupFace->LineEdit1->setText(tr(""));
/* for the first argument */
//globalSelection( GEOM_PLANE );
globalSelection( GEOM_PLANE );
TColStd_MapOfInteger aMap;
aMap.Add( GEOM_PLANE );
aMap.Add( GEOM_MARKER );
@ -319,8 +321,9 @@ void BasicGUI_PlaneDlg::SelectionIntoArgument()
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes );
if ( !CORBA::is_nil( aSelectedObject ) && aRes )
{
myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
TopoDS_Shape aShape;
QString aName = GEOMBase::GetName( aSelectedObject );
if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() )
{
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
@ -331,13 +334,17 @@ void BasicGUI_PlaneDlg::SelectionIntoArgument()
GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() );
int anIndex = aMap( 1 );
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( aShape, aShapes );
aShape = aShapes.FindKey( anIndex );
aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
if ( myEditCurrentArgument == GroupPntDir->LineEdit2 )
aName.append( ":edge_" + QString::number( anIndex ) );
else
aName.append( ":vertex_" + QString::number( anIndex ) );
aSelMgr->clearSelected();
}
}
myEditCurrentArgument->setText( aName );
if ( myEditCurrentArgument == GroupPntDir->LineEdit1 ) myPoint = aSelectedObject;
else if ( myEditCurrentArgument == GroupPntDir->LineEdit2 ) myDir = aSelectedObject;
else if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) myPoint1 = aSelectedObject;
@ -356,6 +363,7 @@ void BasicGUI_PlaneDlg::SelectionIntoArgument()
void BasicGUI_PlaneDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
globalSelection( GEOM_POINT );
if ( send == GroupPntDir->PushButton1 ) myEditCurrentArgument = GroupPntDir->LineEdit1;
else if ( send == GroupPntDir->PushButton2 ) myEditCurrentArgument = GroupPntDir->LineEdit2;
@ -366,12 +374,10 @@ void BasicGUI_PlaneDlg::SetEditCurrentArgument()
myEditCurrentArgument->setFocus();
if ( myEditCurrentArgument == GroupPntDir->LineEdit2 ) {
GEOM::GEOM_Object_var anObj;
localSelection( anObj, TopAbs_EDGE );
}
if ( myEditCurrentArgument == GroupPntDir->LineEdit2 )
localSelection(GEOM::GEOM_Object::_nil(), TopAbs_EDGE);
else if ( myEditCurrentArgument == GroupFace->LineEdit1 ) {
//globalSelection( GEOM_PLANE );
globalSelection( GEOM_PLANE );
TColStd_MapOfInteger aMap;
aMap.Add( GEOM_PLANE );
aMap.Add( GEOM_MARKER );

View File

@ -240,6 +240,7 @@ void BasicGUI_PointDlg::ConstructorsClicked(int constructorId)
{
case 0:
{
globalSelection( GEOM_POINT); // to break previous local selection
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
GroupRefPoint->hide();
@ -254,7 +255,7 @@ void BasicGUI_PointDlg::ConstructorsClicked(int constructorId)
myEditCurrentArgument = GroupRefPoint->LineEdit1;
myEditCurrentArgument->setText("");
myRefPoint = GEOM::GEOM_Object::_nil();
globalSelection( GEOM_POINT); // to break previous local selection
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
GroupXYZ->hide();
@ -269,7 +270,7 @@ void BasicGUI_PointDlg::ConstructorsClicked(int constructorId)
myEditCurrentArgument = GroupOnCurve->LineEdit1;
myEditCurrentArgument->setText("");
myEdge = GEOM::GEOM_Object::_nil();
globalSelection( GEOM_LINE); // to break previous local selection
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
GroupXYZ->hide();
@ -286,7 +287,7 @@ void BasicGUI_PointDlg::ConstructorsClicked(int constructorId)
GroupLineIntersection->LineEdit2->setText("");
myLine1 = GEOM::GEOM_Object::_nil();
myLine2 = GEOM::GEOM_Object::_nil();
globalSelection( GEOM_EDGE); // to break previous local selection
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
GroupXYZ->hide();
@ -373,25 +374,30 @@ void BasicGUI_PointDlg::SelectionIntoArgument()
{
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 )
{
GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() );
int anIndex = aMap( 1 );
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( aShape, aShapes );
aShape = aShapes.FindKey( anIndex );
aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
}
}
{
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
TColStd_IndexedMapOfInteger aMap;
aSelMgr->GetIndexes( firstIObject(), aMap );
if ( aMap.Extent() == 1 )
{
GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() );
int anIndex = aMap( 1 );
aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
if ( id == 2 || id == 3 )
aName.append( ":edge_" + QString::number( anIndex ) );
else
aName.append( ":vertex_" + QString::number( anIndex ) );
aSelMgr->clearSelected();
}
}
if ( id == 0 )
{
if ( aShape.IsNull() || aShape.ShapeType() != TopAbs_VERTEX )
return;
GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE );
if ( aShape.IsNull() || aShape.ShapeType() != TopAbs_VERTEX )
return;
gp_Pnt aPnt = BRep_Tool::Pnt( TopoDS::Vertex( aShape ) );
GroupXYZ->SpinBox_DX->SetValue( aPnt.X() );
@ -449,6 +455,7 @@ void BasicGUI_PointDlg::LineEditReturnPressed()
void BasicGUI_PointDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
globalSelection( GEOM_POINT); // to break previous local selection
if ( send == GroupRefPoint->PushButton1 )
{

View File

@ -276,8 +276,9 @@ void BasicGUI_VectorDlg::SelectionIntoArgument()
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes );
if ( !CORBA::is_nil( aSelectedObject ) && aRes )
{
myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
TopoDS_Shape aShape;
QString aName = GEOMBase::GetName( aSelectedObject );
if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() )
{
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
@ -288,13 +289,13 @@ void BasicGUI_VectorDlg::SelectionIntoArgument()
GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() );
int anIndex = aMap( 1 );
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( aShape, aShapes );
aShape = aShapes.FindKey( anIndex );
aName.append( ":vertex_" + QString::number( anIndex ) );
aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
aSelMgr->clearSelected();
}
}
myEditCurrentArgument->setText( aName );
if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint1 = aSelectedObject;
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myPoint2 = aSelectedObject;
}

View File

@ -239,7 +239,7 @@ msgstr "Warning"
#: GeometryGUI.cxx:3854
msgid "GEOM_REALLY_DELETE"
msgstr "Do you really want to delete this %1 object(s): %2"
msgstr "Do you really want to delete this %1 object(s):"
#
#==============================================================================

View File

@ -199,6 +199,7 @@ void GenerationGUI_PipeDlg::SelectionIntoArgument()
return;
myBase = aSelectedObject;
myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
myOkBase = true;
}
else if(myEditCurrentArgument == GroupPoints->LineEdit2) {
@ -211,28 +212,25 @@ void GenerationGUI_PipeDlg::SelectionIntoArgument()
{
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
TColStd_IndexedMapOfInteger aMap;
QString aName = GEOMBase::GetName( aSelectedObject );
aSelMgr->GetIndexes( firstIObject(), aMap );
if ( aMap.Extent() == 1 )
{
GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() );
int anIndex = aMap( 1 );
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( S, aShapes );
S = aShapes.FindKey( anIndex );
if ( S.ShapeType() == TopAbs_WIRE || S.ShapeType() == TopAbs_EDGE ) {
myPath = aShapesOp->GetSubShape(aSelectedObject, anIndex);
myOkPath = true;
aSelMgr->clearSelected();
}
myPath = aShapesOp->GetSubShape(aSelectedObject, anIndex);
aName.append( ":edge_" + QString::number( anIndex ) );
myOkPath = true;
aSelMgr->clearSelected();
}
else if ( S.ShapeType() == TopAbs_WIRE || S.ShapeType() == TopAbs_EDGE ) {
else {
myPath = aSelectedObject;
myOkPath = true;
}
myEditCurrentArgument->setText( aName );
}
}
myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
displayPreview();
}

View File

@ -289,8 +289,8 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument()
if (!testResult)
return;
myEditCurrentArgument->setText(GEOMBase::GetName(aSelectedObject));
TopoDS_Shape aShape;
QString aName = GEOMBase::GetName( aSelectedObject );
if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() )
{
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
@ -301,10 +301,8 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument()
GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() );
int anIndex = aMap( 1 );
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( aShape, aShapes );
aShape = aShapes.FindKey( anIndex );
aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
aName.append( ":edge_" + QString::number( anIndex ) );
aSelMgr->clearSelected();
}
}
@ -317,7 +315,7 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument()
myVec = aSelectedObject;
myOkVec = true;
}
myEditCurrentArgument->setText(GEOMBase::GetName(aSelectedObject));
myEditCurrentArgument->setText( aName );
}
else // getConstructorId()==1 - extrusion using 2 points
{
@ -343,8 +341,9 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument()
if (!testResult || CORBA::is_nil( aSelectedObject ))
return;
myEditCurrentArgument->setText(GEOMBase::GetName(aSelectedObject));
QString aName = GEOMBase::GetName( aSelectedObject );
TopoDS_Shape aShape;
if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() )
{
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
@ -355,14 +354,14 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument()
GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() );
int anIndex = aMap( 1 );
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( aShape, aShapes );
aShape = aShapes.FindKey( anIndex );
aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
aName.append( ":vertex_" + QString::number( anIndex ) );
aSelMgr->clearSelected();
}
}
myEditCurrentArgument->setText( aName );
if (myEditCurrentArgument == GroupPoints2->LineEdit1) {
myBase = aSelectedObject;
myOkBase = true;
@ -408,6 +407,7 @@ void GenerationGUI_PrismDlg::LineEditReturnPressed()
void GenerationGUI_PrismDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
globalSelection( GEOM_POINT ); // to break previous local selection
if (send == GroupPoints->PushButton1) {
GroupPoints->LineEdit1->setFocus();
@ -417,9 +417,7 @@ void GenerationGUI_PrismDlg::SetEditCurrentArgument()
else if (send == GroupPoints->PushButton2) {
GroupPoints->LineEdit2->setFocus();
myEditCurrentArgument = GroupPoints->LineEdit2;
// globalSelection( GEOM_LINE );
GEOM::GEOM_Object_var anObj;
localSelection( anObj, TopAbs_EDGE );
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
}
else if (send == GroupPoints2->PushButton1) {
GroupPoints2->LineEdit1->setFocus();

View File

@ -221,6 +221,7 @@ void GenerationGUI_RevolDlg::SelectionIntoArgument()
// nbSel == 1
Standard_Boolean testResult = Standard_False;
GEOM::GEOM_Object_ptr aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult );
QString aName = GEOMBase::GetName( aSelectedObject );
if (!testResult)
return;
@ -250,9 +251,7 @@ void GenerationGUI_RevolDlg::SelectionIntoArgument()
GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() );
int anIndex = aMap( 1 );
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( aShape, aShapes );
aShape = aShapes.FindKey( anIndex );
aName.append( ":edge_" + QString::number( anIndex ) );
myAxis = aShapesOp->GetSubShape(aSelectedObject, anIndex);
aSelMgr->clearSelected();
}
@ -263,7 +262,7 @@ void GenerationGUI_RevolDlg::SelectionIntoArgument()
}
}
}
myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
myEditCurrentArgument->setText( aName );
displayPreview();
}
@ -286,8 +285,7 @@ void GenerationGUI_RevolDlg::SetEditCurrentArgument()
GroupPoints->LineEdit2->setFocus();
myEditCurrentArgument = GroupPoints->LineEdit2;
//globalSelection( GEOM_LINE );
GEOM::GEOM_Object_var anObj;
localSelection( anObj, TopAbs_EDGE );
localSelection(GEOM::GEOM_Object::_nil(), TopAbs_EDGE);
}
SelectionIntoArgument();
}

View File

@ -254,8 +254,8 @@ void PrimitiveGUI_BoxDlg::SelectionIntoArgument()
if(!testResult || CORBA::is_nil( aSelectedObject ))
return;
myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
TopoDS_Shape aShape;
QString aName = GEOMBase::GetName( aSelectedObject );
if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() )
{
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
@ -266,13 +266,14 @@ void PrimitiveGUI_BoxDlg::SelectionIntoArgument()
GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() );
int anIndex = aMap( 1 );
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( aShape, aShapes );
aShape = aShapes.FindKey( anIndex );
aName.append( ":vertex_" + QString::number( anIndex ) );
aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
aSelMgr->clearSelected();
}
}
myEditCurrentArgument->setText( aName );
if(myEditCurrentArgument == GroupPoints->LineEdit1)
myPoint1 = aSelectedObject;
else if(myEditCurrentArgument == GroupPoints->LineEdit2)

View File

@ -276,7 +276,8 @@ void PrimitiveGUI_ConeDlg::SelectionIntoArgument()
return;
TopoDS_Shape aShape;
myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
QString aName = GEOMBase::GetName( aSelectedObject );
if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() )
{
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
@ -287,13 +288,16 @@ void PrimitiveGUI_ConeDlg::SelectionIntoArgument()
GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() );
int anIndex = aMap( 1 );
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( aShape, aShapes );
aShape = aShapes.FindKey( anIndex );
if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
aName.append( ":edge_" + QString::number( anIndex ) );
else
aName.append( ":vertex_" + QString::number( anIndex ) );
aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
aSelMgr->clearSelected();
}
}
myEditCurrentArgument->setText( aName );
if (myEditCurrentArgument == GroupPoints->LineEdit1)
myPoint = aSelectedObject;
else if (myEditCurrentArgument == GroupPoints->LineEdit2)
@ -313,14 +317,13 @@ void PrimitiveGUI_ConeDlg::SetEditCurrentArgument()
if(send == GroupPoints->PushButton1) {
myEditCurrentArgument = GroupPoints->LineEdit1;
// globalSelection( GEOM_POINT );
globalSelection( GEOM_POINT ); // to break prvious local selection
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
}
else if(send == GroupPoints->PushButton2) {
myEditCurrentArgument = GroupPoints->LineEdit2;
// globalSelection( GEOM_LINE );
GEOM::GEOM_Object_var anObj;
localSelection( anObj, TopAbs_EDGE );
globalSelection( GEOM_LINE );// to break prvious local selection
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
}
myEditCurrentArgument->setFocus();

View File

@ -271,7 +271,7 @@ void PrimitiveGUI_CylinderDlg::SelectionIntoArgument()
if(!testResult || CORBA::is_nil( aSelectedObject ))
return;
myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
QString aName = GEOMBase::GetName( aSelectedObject );
TopoDS_Shape aShape;
if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() )
{
@ -283,13 +283,16 @@ void PrimitiveGUI_CylinderDlg::SelectionIntoArgument()
GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() );
int anIndex = aMap( 1 );
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( aShape, aShapes );
aShape = aShapes.FindKey( anIndex );
if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
aName.append( ":edge_" + QString::number( anIndex ) );
else
aName.append( ":vertex_" + QString::number( anIndex ) );
aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
aSelMgr->clearSelected();
}
}
myEditCurrentArgument->setText( aName );
if (myEditCurrentArgument == GroupPoints->LineEdit1)
myPoint = aSelectedObject;
else if (myEditCurrentArgument == GroupPoints->LineEdit2)
@ -308,14 +311,13 @@ void PrimitiveGUI_CylinderDlg::SetEditCurrentArgument()
if(send == GroupPoints->PushButton1) {
myEditCurrentArgument = GroupPoints->LineEdit1;
// globalSelection( GEOM_POINT );
globalSelection( GEOM_POINT ); // to break previous local selection
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
}
else if(send == GroupPoints->PushButton2) {
myEditCurrentArgument = GroupPoints->LineEdit2;
// globalSelection( GEOM_LINE );
GEOM::GEOM_Object_var anObj;
localSelection( anObj, TopAbs_EDGE );
globalSelection( GEOM_LINE ); // to break previous local selection
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
}
myEditCurrentArgument->setFocus();

View File

@ -244,7 +244,7 @@ void PrimitiveGUI_SphereDlg::SelectionIntoArgument()
if (!testResult || CORBA::is_nil( aSelectedObject ))
return;
myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
QString aName = GEOMBase::GetName( aSelectedObject );
TopoDS_Shape aShape;
if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() )
{
@ -256,13 +256,13 @@ void PrimitiveGUI_SphereDlg::SelectionIntoArgument()
GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() );
int anIndex = aMap( 1 );
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( aShape, aShapes );
aShape = aShapes.FindKey( anIndex );
aName.append( ":vertex_" + QString::number( anIndex ) );
aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
aSelMgr->clearSelected();
}
}
myEditCurrentArgument->setText( aName );
myPoint = aSelectedObject;
displayPreview();

View File

@ -262,7 +262,7 @@ void PrimitiveGUI_TorusDlg::SelectionIntoArgument()
if (!testResult || CORBA::is_nil( aSelectedObject ))
return;
myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
QString aName = GEOMBase::GetName( aSelectedObject );
TopoDS_Shape aShape;
if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() )
{
@ -274,13 +274,16 @@ void PrimitiveGUI_TorusDlg::SelectionIntoArgument()
GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() );
int anIndex = aMap( 1 );
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( aShape, aShapes );
aShape = aShapes.FindKey( anIndex );
if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
aName.append( ":edge_" + QString::number( anIndex ) );
else
aName.append( ":vertex_" + QString::number( anIndex ) );
aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
aSelMgr->clearSelected();
}
}
myEditCurrentArgument->setText( aName );
if (myEditCurrentArgument == GroupPoints->LineEdit1)
myPoint = aSelectedObject;
else if (myEditCurrentArgument == GroupPoints->LineEdit2)
@ -313,6 +316,7 @@ void PrimitiveGUI_TorusDlg::LineEditReturnPressed()
void PrimitiveGUI_TorusDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
globalSelection( GEOM_POINT ); // to break previous local selection
if (send == GroupPoints->PushButton1) {
myEditCurrentArgument = GroupPoints->LineEdit1;