0020044: EDF 866 GEOM: Extrusion along a path : impossible to select a Wire

This commit is contained in:
dmv 2008-11-18 11:09:15 +00:00
parent 6dd2eac181
commit 2620958c22
6 changed files with 106 additions and 60 deletions

View File

@ -1,7 +1,7 @@
/**************************************************************************** /****************************************************************************
** Form implementation generated from reading ui file 'DlgRef_3Sel1Check_QTD.ui' ** Form implementation generated from reading ui file 'DlgRef_3Sel1Check_QTD.ui'
** **
** Created: Mon Oct 29 18:14:59 2007 ** Created: Tue Nov 18 12:14:50 2008
** by: The User Interface Compiler ($Id$) ** by: The User Interface Compiler ($Id$)
** **
** WARNING! All changes made in this file will be lost! ** WARNING! All changes made in this file will be lost!
@ -46,7 +46,7 @@ DlgRef_3Sel1Check_QTD::DlgRef_3Sel1Check_QTD( QWidget* parent, const char* name,
LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" );
GroupBox1Layout->addMultiCellWidget( LineEdit1, 0, 0, 2, 3 ); GroupBox1Layout->addWidget( LineEdit1, 0, 2 );
TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); TextLabel1 = new QLabel( GroupBox1, "TextLabel1" );
TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) );
@ -60,7 +60,7 @@ DlgRef_3Sel1Check_QTD::DlgRef_3Sel1Check_QTD( QWidget* parent, const char* name,
LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" ); LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" );
GroupBox1Layout->addMultiCellWidget( LineEdit2, 1, 1, 2, 3 ); GroupBox1Layout->addWidget( LineEdit2, 1, 2 );
TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); TextLabel2 = new QLabel( GroupBox1, "TextLabel2" );
TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) );
@ -74,14 +74,14 @@ DlgRef_3Sel1Check_QTD::DlgRef_3Sel1Check_QTD( QWidget* parent, const char* name,
LineEdit3 = new QLineEdit( GroupBox1, "LineEdit3" ); LineEdit3 = new QLineEdit( GroupBox1, "LineEdit3" );
GroupBox1Layout->addMultiCellWidget( LineEdit3, 2, 2, 2, 3 ); GroupBox1Layout->addWidget( LineEdit3, 2, 2 );
TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); TextLabel3 = new QLabel( GroupBox1, "TextLabel3" );
TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) );
GroupBox1Layout->addWidget( TextLabel3, 2, 0 ); GroupBox1Layout->addWidget( TextLabel3, 2, 0 );
Spacer3 = new QSpacerItem( 16, 721, QSizePolicy::Minimum, QSizePolicy::Expanding ); Spacer3 = new QSpacerItem( 16, 721, QSizePolicy::Minimum, QSizePolicy::Expanding );
GroupBox1Layout->addItem( Spacer3, 4, 3 ); GroupBox1Layout->addItem( Spacer3, 4, 2 );
CheckButton1 = new QCheckBox( GroupBox1, "CheckButton1" ); CheckButton1 = new QCheckBox( GroupBox1, "CheckButton1" );
@ -89,7 +89,7 @@ DlgRef_3Sel1Check_QTD::DlgRef_3Sel1Check_QTD( QWidget* parent, const char* name,
DlgRef_3Sel1Check_QTDLayout->addWidget( GroupBox1, 0, 0 ); DlgRef_3Sel1Check_QTDLayout->addWidget( GroupBox1, 0, 0 );
languageChange(); languageChange();
resize( QSize(403, 441).expandedTo(minimumSizeHint()) ); resize( QSize(311, 299).expandedTo(minimumSizeHint()) );
clearWState( WState_Polished ); clearWState( WState_Polished );
// tab order // tab order

View File

@ -1,7 +1,7 @@
/**************************************************************************** /****************************************************************************
** Form interface generated from reading ui file 'DlgRef_3Sel1Check_QTD.ui' ** Form interface generated from reading ui file 'DlgRef_3Sel1Check_QTD.ui'
** **
** Created: Mon Oct 29 18:14:59 2007 ** Created: Tue Nov 18 12:14:50 2008
** by: The User Interface Compiler ($Id$) ** by: The User Interface Compiler ($Id$)
** **
** WARNING! All changes made in this file will be lost! ** WARNING! All changes made in this file will be lost!
@ -10,8 +10,6 @@
#ifndef DLGREF_3SEL1CHECK_QTD_H #ifndef DLGREF_3SEL1CHECK_QTD_H
#define DLGREF_3SEL1CHECK_QTD_H #define DLGREF_3SEL1CHECK_QTD_H
#include "GEOM_DlgRef.hxx"
#include <qvariant.h> #include <qvariant.h>
#include <qwidget.h> #include <qwidget.h>
@ -25,7 +23,7 @@ class QLineEdit;
class QLabel; class QLabel;
class QCheckBox; class QCheckBox;
class GEOM_DLGREF_EXPORT DlgRef_3Sel1Check_QTD : public QWidget class DlgRef_3Sel1Check_QTD : public QWidget
{ {
Q_OBJECT Q_OBJECT

View File

@ -8,8 +8,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>403</width> <width>311</width>
<height>441</height> <height>299</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
@ -74,7 +74,7 @@
<string></string> <string></string>
</property> </property>
</widget> </widget>
<widget class="QLineEdit" row="0" column="2" rowspan="1" colspan="2"> <widget class="QLineEdit" row="0" column="2">
<property name="name"> <property name="name">
<cstring>LineEdit1</cstring> <cstring>LineEdit1</cstring>
</property> </property>
@ -111,7 +111,7 @@
<string></string> <string></string>
</property> </property>
</widget> </widget>
<widget class="QLineEdit" row="1" column="2" rowspan="1" colspan="2"> <widget class="QLineEdit" row="1" column="2">
<property name="name"> <property name="name">
<cstring>LineEdit2</cstring> <cstring>LineEdit2</cstring>
</property> </property>
@ -148,7 +148,7 @@
<string></string> <string></string>
</property> </property>
</widget> </widget>
<widget class="QLineEdit" row="2" column="2" rowspan="1" colspan="2"> <widget class="QLineEdit" row="2" column="2">
<property name="name"> <property name="name">
<cstring>LineEdit3</cstring> <cstring>LineEdit3</cstring>
</property> </property>
@ -169,7 +169,7 @@
<string>TL3</string> <string>TL3</string>
</property> </property>
</widget> </widget>
<spacer row="4" column="3"> <spacer row="4" column="2">
<property name="name"> <property name="name">
<cstring>Spacer3</cstring> <cstring>Spacer3</cstring>
</property> </property>

View File

@ -1205,6 +1205,9 @@ msgstr "<< Set"
msgid "GEOM_PIPE_TITLE" msgid "GEOM_PIPE_TITLE"
msgstr "Pipe Construction" msgstr "Pipe Construction"
msgid "GEOM_SELECT_UNPUBLISHED_EDGES"
msgstr "Select unpublished edges"
#: GeometryGUI_PointDlg.cxx:52 #: GeometryGUI_PointDlg.cxx:52
msgid "GEOM_POINT_TITLE" msgid "GEOM_POINT_TITLE"
msgstr "Point Construction" msgstr "Point Construction"

View File

@ -34,7 +34,7 @@
#include "LightApp_SelectionMgr.h" #include "LightApp_SelectionMgr.h"
#include <qlabel.h> #include <qlabel.h>
#include <qcheckbox.h>
#include <TopoDS_Edge.hxx> #include <TopoDS_Edge.hxx>
#include <TopoDS_Shape.hxx> #include <TopoDS_Shape.hxx>
#include <TopoDS.hxx> #include <TopoDS.hxx>
@ -43,6 +43,8 @@
#include <TopTools_IndexedMapOfShape.hxx> #include <TopTools_IndexedMapOfShape.hxx>
#include <BRepBuilderAPI_MakeWire.hxx> #include <BRepBuilderAPI_MakeWire.hxx>
#include <BRepOffsetAPI_MakePipe.hxx> #include <BRepOffsetAPI_MakePipe.hxx>
#include <TColStd_IndexedMapOfInteger.hxx>
#include <TColStd_MapOfInteger.hxx>
#if OCC_VERSION_MAJOR >= 5 #if OCC_VERSION_MAJOR >= 5
#include <BRepAlgo.hxx> #include <BRepAlgo.hxx>
#else #else
@ -77,7 +79,7 @@ GenerationGUI_PipeDlg::GenerationGUI_PipeDlg(GeometryGUI* theGeometryGUI, QWidge
RadioButton2->setPixmap(image2); RadioButton2->setPixmap(image2);
RadioButton3->close(TRUE); RadioButton3->close(TRUE);
GroupPoints = new DlgRef_3Sel_QTD(this, "GroupPoints"); GroupPoints = new DlgRef_3Sel1Check_QTD(this, "GroupPoints");
GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS"));
GroupPoints->TextLabel1->setText(tr("GEOM_BASE_OBJECT")); GroupPoints->TextLabel1->setText(tr("GEOM_BASE_OBJECT"));
GroupPoints->TextLabel2->setText(tr("GEOM_PATH_OBJECT")); GroupPoints->TextLabel2->setText(tr("GEOM_PATH_OBJECT"));
@ -85,6 +87,7 @@ GenerationGUI_PipeDlg::GenerationGUI_PipeDlg(GeometryGUI* theGeometryGUI, QWidge
GroupPoints->PushButton1->setPixmap(image1); GroupPoints->PushButton1->setPixmap(image1);
GroupPoints->PushButton2->setPixmap(image1); GroupPoints->PushButton2->setPixmap(image1);
GroupPoints->PushButton3->setPixmap(image1); GroupPoints->PushButton3->setPixmap(image1);
GroupPoints->CheckButton1->setText(tr("GEOM_SELECT_UNPUBLISHED_EDGES"));
Layout1->addWidget(GroupPoints, 2, 0); Layout1->addWidget(GroupPoints, 2, 0);
/***************************************************************/ /***************************************************************/
@ -119,6 +122,8 @@ void GenerationGUI_PipeDlg::Init()
myOkBase = myOkPath = myOkVec = false; myOkBase = myOkPath = myOkVec = false;
GroupPoints->CheckButton1->setEnabled(false);
/* signals and slots connections */ /* signals and slots connections */
connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk()));
connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply()));
@ -131,6 +136,8 @@ void GenerationGUI_PipeDlg::Init()
connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
connect(GroupPoints->LineEdit3, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); connect(GroupPoints->LineEdit3, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
connect(GroupPoints->CheckButton1, SIGNAL(toggled(bool)), this, SLOT(SelectionTypeButtonClicked()));
connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
@ -175,6 +182,22 @@ void GenerationGUI_PipeDlg::ConstructorsClicked( int constructorId )
displayPreview(); displayPreview();
} }
//=================================================================================
// function : SelectionBittonClicked()
// purpose : Selection type Radio button management
//=================================================================================
void GenerationGUI_PipeDlg::SelectionTypeButtonClicked()
{
if ( GroupPoints->CheckButton1->isChecked() ) {
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
} else {
TColStd_MapOfInteger aMap;
aMap.Add(GEOM_WIRE);
aMap.Add(GEOM_LINE);
globalSelection(aMap);
}
}
//================================================================================= //=================================================================================
// function : ClickOnOk() // function : ClickOnOk()
@ -258,49 +281,55 @@ void GenerationGUI_PipeDlg::SelectionIntoArgument()
return; return;
QString aName = GEOMBase::GetName( aSelectedObject ); QString aName = GEOMBase::GetName( aSelectedObject );
if (myEditCurrentArgument == GroupPoints->LineEdit2 && !GroupPoints->CheckButton1->isChecked() ){
if ( testResult && !aSelectedObject->_is_nil() && aSelectedObject != myBase) myPath = aSelectedObject;
{ myOkPath = true;
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); }
TColStd_IndexedMapOfInteger aMap; else
{
aSelMgr->GetIndexes( firstIObject(), aMap ); if ( testResult && !aSelectedObject->_is_nil() && aSelectedObject != myBase)
if ( aMap.Extent() == 1 ) {
{ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
int anIndex = aMap( 1 ); TColStd_IndexedMapOfInteger aMap;
aName.append( ":edge_" + QString::number( anIndex ) );
aSelMgr->GetIndexes( firstIObject(), aMap );
//Find SubShape Object in Father if ( aMap.Extent() == 1 )
GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather(aSelectedObject, aName); {
int anIndex = aMap( 1 );
if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study aName.append( ":edge_" + QString::number( anIndex ) );
GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() ); //Find SubShape Object in Father
aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex); GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather(aSelectedObject, aName);
myOk = true;
} if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
else { // get Object from study GEOM::GEOM_IShapesOperations_var aShapesOp =
getGeomEngine()->GetIShapesOperations( getStudyId() );
aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
myOk = true;
}
else { // get Object from study
aSelectedObject = aFindedObject; aSelectedObject = aFindedObject;
myOk = true; myOk = true;
}
}
else {
myOk = true;
if (S.ShapeType() != TopAbs_EDGE) {
aSelectedObject = GEOM::GEOM_Object::_nil();
aName = "";
myOk = false;
} }
} }
else { if (myEditCurrentArgument == GroupPoints->LineEdit2) {
myOk = true; myPath = aSelectedObject;
if (S.ShapeType() != TopAbs_EDGE) { myOkPath = myOk;
aSelectedObject = GEOM::GEOM_Object::_nil(); }
aName = ""; else if (myEditCurrentArgument == GroupPoints->LineEdit3) {
myOk = false; myVec = aSelectedObject;
myOkVec = myOk;
} }
} }
if (myEditCurrentArgument == GroupPoints->LineEdit2) { }
myPath = aSelectedObject;
myOkPath = myOk;
}
else if (myEditCurrentArgument == GroupPoints->LineEdit3) {
myVec = aSelectedObject;
myOkVec = myOk;
}
}
myEditCurrentArgument->setText( aName ); myEditCurrentArgument->setText( aName );
} }
@ -321,18 +350,28 @@ void GenerationGUI_PipeDlg::SetEditCurrentArgument()
GroupPoints->LineEdit1->setFocus(); GroupPoints->LineEdit1->setFocus();
globalSelection( GEOM_ALLSHAPES ); globalSelection( GEOM_ALLSHAPES );
myEditCurrentArgument = GroupPoints->LineEdit1; myEditCurrentArgument = GroupPoints->LineEdit1;
GroupPoints->CheckButton1->setEnabled(false);
} }
else if(send == GroupPoints->PushButton2) { else if(send == GroupPoints->PushButton2) {
GroupPoints->LineEdit2->setFocus(); GroupPoints->LineEdit2->setFocus();
myEditCurrentArgument = GroupPoints->LineEdit2; myEditCurrentArgument = GroupPoints->LineEdit2;
globalSelection();
localSelection(GEOM::GEOM_Object::_nil(), TopAbs_EDGE); if ( GroupPoints->CheckButton1->isChecked() ) {
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
} else {
TColStd_MapOfInteger aMap;
aMap.Add(GEOM_WIRE);
aMap.Add(GEOM_LINE);
globalSelection(aMap);
}
GroupPoints->CheckButton1->setEnabled(true);
} }
else if(send == GroupPoints->PushButton3) { else if(send == GroupPoints->PushButton3) {
GroupPoints->LineEdit3->setFocus(); GroupPoints->LineEdit3->setFocus();
myEditCurrentArgument = GroupPoints->LineEdit3; myEditCurrentArgument = GroupPoints->LineEdit3;
globalSelection(); globalSelection();
localSelection(GEOM::GEOM_Object::_nil(), TopAbs_EDGE); localSelection(GEOM::GEOM_Object::_nil(), TopAbs_EDGE);
GroupPoints->CheckButton1->setEnabled(false);
} }
SelectionIntoArgument(); SelectionIntoArgument();
} }
@ -352,6 +391,11 @@ void GenerationGUI_PipeDlg::LineEditReturnPressed()
myEditCurrentArgument = send; myEditCurrentArgument = send;
GEOMBase_Skeleton::LineEditReturnPressed(); GEOMBase_Skeleton::LineEditReturnPressed();
} }
if (send == GroupPoints->LineEdit2)
GroupPoints->CheckButton1->setEnabled(true);
else
GroupPoints->CheckButton1->setEnabled(false);
} }
@ -373,7 +417,7 @@ void GenerationGUI_PipeDlg::enterEvent(QEvent* e)
void GenerationGUI_PipeDlg::ActivateThisDialog() void GenerationGUI_PipeDlg::ActivateThisDialog()
{ {
GEOMBase_Skeleton::ActivateThisDialog(); GEOMBase_Skeleton::ActivateThisDialog();
globalSelection( GEOM_ALLSHAPES ); // globalSelection( GEOM_ALLSHAPES );
connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
ConstructorsClicked(getConstructorId()); ConstructorsClicked(getConstructorId());

View File

@ -31,7 +31,7 @@
#include "GenerationGUI.h" #include "GenerationGUI.h"
#include "GEOMBase_Skeleton.h" #include "GEOMBase_Skeleton.h"
#include "DlgRef_3Sel_QTD.h" #include "DlgRef_3Sel1Check_QTD.h"
//================================================================================= //=================================================================================
// class : GenerationGUI_PipeDlg // class : GenerationGUI_PipeDlg
@ -64,7 +64,7 @@ private:
bool myOkPath; bool myOkPath;
bool myOkVec; /* to check when arguments are defined */ bool myOkVec; /* to check when arguments are defined */
DlgRef_3Sel_QTD* GroupPoints; DlgRef_3Sel1Check_QTD* GroupPoints;
private slots: private slots:
void ClickOnOk(); void ClickOnOk();
@ -74,6 +74,7 @@ private slots:
void SelectionIntoArgument(); void SelectionIntoArgument();
void SetEditCurrentArgument(); void SetEditCurrentArgument();
void ConstructorsClicked(int constructorId); void ConstructorsClicked(int constructorId);
void SelectionTypeButtonClicked();
}; };
#endif // DIALOGBOX_PIPE_H #endif // DIALOGBOX_PIPE_H