If both objects are <b>vectors</b>, the angle is computed in accordance with their orientations, otherwise the minimum angle is computed.
-\n <b>TUI Command:</b> <em>geompy.GetAngle(shape1, shape2),</em> where
+\note This dialog supports navigation through the selectable objects (in OCC 3D viewer only):
+- Scroll mouse wheel with pressed \em Ctrl key or press \em "S", \em "P" keys when input focus is
+in the viewer to navigate between selectable objects.
+- Press left mouse button to select an appropriate object to the dialog box.
+.
+For more details, please refer to the \em "Functionality common for OCC and VTK viewers" chapter
+of the GUI module's documentation.
+
+<b>TUI Command:</b> <em>geompy.GetAngle(shape1, shape2),</em> where
Shape1 and Shape2 are shapes between which the angle is computed.
Another TUI command is <em>geompy.GetAngleRadians(shape1,shape2),</em>
which returns the value of angle in radians.
\image html neo-basicprop.png
-\n<b>TUI Command:</b> <em>geompy.BasicProperties(Shape),</em> where
+\note This dialog supports navigation through the selectable objects (in OCC 3D viewer only):
+- Scroll mouse wheel with pressed \em Ctrl key or press \em "S", \em "P" keys when input focus is
+in the viewer to navigate between selectable objects.
+- Press left mouse button to select an appropriate object to the dialog box.
+.
+For more details, please refer to the \em "Functionality common for OCC and VTK viewers" chapter
+of the GUI module's documentation.
+
+<b>TUI Command:</b> <em>geompy.BasicProperties(Shape),</em> where
\em Shape is a shape whose properties are inquired.
See also a \ref tui_basic_properties_page "TUI example".
Press \b Apply or <b>Apply and Close</b> button to publish the bounding \b Box in the study.
-\n <b>TUI Commands:</b> <em>[Xmin,Xmax, Ymin,Ymax, Zmin,Zmax] = geompy.BoundingBox(Shape, precise)</em>,
+\note This dialog supports navigation through the selectable objects (in OCC 3D viewer only):
+- Scroll mouse wheel with pressed \em Ctrl key or press \em "S", \em "P" keys when input focus is
+in the viewer to navigate between selectable objects.
+- Press left mouse button to select an appropriate object to the dialog box.
+.
+For more details, please refer to the \em "Functionality common for OCC and VTK viewers" chapter
+of the GUI module's documentation.
+
+<b>TUI Commands:</b> <em>[Xmin,Xmax, Ymin,Ymax, Zmin,Zmax] = geompy.BoundingBox(Shape, precise)</em>,
<em>BBox = geompy.MakeBoundingBox(Shape, precise)</em>, where \em Shape
is the shape for which the bounding box is computed. \em precise TRUE
for precise computation; FALSE for fast one. Default value is False.
Press \b Apply or <b>Apply and Close</b> button to publish the \b Point in the study.
-\n <b>TUI Command:</b> <em> geompy.MakeCDG(Shape),</em> where \em Shape is
+\note This dialog supports navigation through the selectable objects (in OCC 3D viewer only):
+- Scroll mouse wheel with pressed \em Ctrl key or press \em "S", \em "P" keys when input focus is
+in the viewer to navigate between selectable objects.
+- Press left mouse button to select an appropriate object to the dialog box.
+.
+For more details, please refer to the \em "Functionality common for OCC and VTK viewers" chapter
+of the GUI module's documentation.
+
+<b>TUI Command:</b> <em> geompy.MakeCDG(Shape),</em> where \em Shape is
the shape for which a center of gravity is computed.
See also a \ref tui_center_of_mass_page "TUI example".
projected point.
\image html point3_2.png
-\n Fourthly, we can define a point by intersection of two \b Lines or \b Wires (or a Wire and a Line).
-If they intersect only once, a point will be created. If there are several intersections, a compound of points will be created. The type of the selected object (Line or Wire) can be changed in the popup menu, after clicking the corresponding selection button.
+\n Fourthly, we can define a point by intersection of two \b Lines or \b Wires (or a Wire and a Line).
+If they intersect only once, a point will be created. If there are several intersections, a compound of points will be created.
\n <b>TUI Command:</b> <em>geompy.MakePointOnLinesIntersection(myLine1,myWire1).</em>
\n <b>Arguments:</b> Name + 2 1D objects
\image html point5_2.png
+\note This dialog supports navigation through the selectable objects (in OCC 3D viewer only):
+- Scroll mouse wheel with pressed \em Ctrl key or press \em "S", \em "P" keys when input focus is
+in the viewer to navigate between selectable objects.
+- Press left mouse button to select an appropriate object to the dialog box.
+.
+For more details, please refer to the \em "Functionality common for OCC and VTK viewers" chapter
+of the GUI module's documentation.
+
<b>Example:</b>
\image html points.png "Points by edge and parameter and by coordinates"
- 3*3 matrix of its own moments of inertia (in rows <b> 1:1, 2:1</b> and <b>3:1</b>) and
- the relative moments of inertia (in row <b>IX & IY & IZ</b>)
-\n <b>TUI Command:</b> <em>geompy.Inertia(Shape),</em> where \em Shape is
+\note This dialog supports navigation through the selectable objects (in OCC 3D viewer only):
+- Scroll mouse wheel with pressed \em Ctrl key or press \em "S", \em "P" keys when input focus is
+in the viewer to navigate between selectable objects.
+- Press left mouse button to select an appropriate object to the dialog box.
+.
+For more details, please refer to the \em "Functionality common for OCC and VTK viewers" chapter
+of the GUI module's documentation.
+
+<b>TUI Command:</b> <em>geompy.Inertia(Shape),</em> where \em Shape is
a shape for which the own matrix of inertia and the relative moments of inertia are
returned.
Press \b Apply or <b>Apply and Close</b> button to create a set of closest
points, corresponding to all found solutions.
+\note This dialog supports navigation through the selectable objects (in OCC 3D viewer only):
+- Scroll mouse wheel with pressed \em Ctrl key or press \em "S", \em "P" keys when input focus is
+in the viewer to navigate between selectable objects.
+- Press left mouse button to select an appropriate object to the dialog box.
+.
+For more details, please refer to the \em "Functionality common for OCC and VTK viewers" chapter
+of the GUI module's documentation.
+
<b>TUI Commands:</b>
-\n<em>aDist = geompy.MinDistance(Shape1, Shape2),</em>
-\n<em>[aDist, DX, DY, DZ] = geompy.MinDistanceComponents(Shape1, Shape2),</em>
-\n<em>[nbSols, (x11, y11, z11, x21, y21, z21, ...)] = geompy.ClosestPoints(Shape1, Shape2),</em>
-\n where \em Shape1 and \em Shape2 are the shapes, between which the minimal
+- <em>aDist = geompy.MinDistance(Shape1, Shape2),</em>
+- <em>[aDist, DX, DY, DZ] = geompy.MinDistanceComponents(Shape1, Shape2),</em>
+- <em>[nbSols, (x11, y11, z11, x21, y21, z21, ...)] = geompy.ClosestPoints(Shape1, Shape2),</em>
+.
+where \em Shape1 and \em Shape2 are the shapes, between which the minimal
distance is computed.
See also a \ref tui_min_distance_page "TUI example".
\page projection_operation_page Projection
-\n To produce a <b>Projection</b> in the <b>Main Menu</b> select
+To produce a <b>Projection</b> in the <b>Main Menu</b> select
<b>Operations - > Transformation - > Projection</b>
-\n This operation makes normal projection of one shape to another.
-\n There are 3 types of projection different by types of operands.
+This operation makes normal projection of one shape to another.
+
+There are 3 types of projection different by types of operands.
Firstly, you can project <b>Source vertex, edge or wire</b> on a given <b>Target face</b>.
\ref restore_presentation_parameters_page "Advanced options".
-\n <b>Example:</b>
+\note This dialog supports navigation through the selectable objects (in OCC 3D viewer only):
+- Scroll mouse wheel with pressed \em Ctrl key or press \em "S", \em "P" keys when input focus is
+in the viewer to navigate between selectable objects.
+- Press left mouse button to select an appropriate object to the dialog box.
+.
+For more details, please refer to the \em "Functionality common for OCC and VTK viewers" chapter
+of the GUI module's documentation.
+
+<b>Example:</b>
\image html projection_preview.png "The curve (in red) and its projection on the cylindric surface"
-\n <b>TUI Command:</b> <em>geompy.MakeProjection(Source, Target),</em>
- where \em Source is a shape which has to be projected, \em Target
- is a shape, on which the \em Source shape will be projected. The \em
- Result will be a \em GEOM_Object.
+<b>TUI Command:</b> <em>geompy.MakeProjection(Source, Target),</em>
+\n where \em Source is a shape which has to be projected, \em Target
+is a shape, on which the \em Source shape will be projected. The \em
+Result will be a \em GEOM_Object.
Our <b>TUI Scripts</b> provide you with useful examples of the use of
\ref tui_projection "Transformation Operations".
- Activate \ref restore_presentation_parameters_page "Advanced options" if required.
- Press "Apply" or "Apply & Close" button to get the result (VERTEX, EDGE, WIRE or COMPOUND).
+\note This dialog supports navigation through the selectable objects (in OCC 3D viewer only):
+- Scroll mouse wheel with pressed \em Ctrl key or press \em "S", \em "P" keys when input focus is
+in the viewer to navigate between selectable objects.
+- Press left mouse button to select an appropriate object to the dialog box.
+.
+For more details, please refer to the \em "Functionality common for OCC and VTK viewers" chapter
+of the GUI module's documentation.
+
This operation can be performed using a <b>TUI Command:</b>
<em>geompy.MakeSection(s1, s2, checkSelfInte)</em>
The table displays \b Min and \b Max tolerance values for \b Face, \b Edge and \b Vertex tolerance.
-\n <b>TUI Command:</b> <em>geompy.Tolerance(Shape),</em> where \em Shape
+\note This dialog supports navigation through the selectable objects (in OCC 3D viewer only):
+- Scroll mouse wheel with pressed \em Ctrl key or press \em "S", \em "P" keys when input focus is
+in the viewer to navigate between selectable objects.
+- Press left mouse button to select an appropriate object to the dialog box.
+.
+For more details, please refer to the \em "Functionality common for OCC and VTK viewers" chapter
+of the GUI module's documentation.
+
+<b>TUI Command:</b> <em>geompy.Tolerance(Shape),</em> where \em Shape
is a shape for which minimal and maximal tolerances are returned.
See also a \ref tui_tolerance_page "TUI example".
This operation provides the list of types and quantities of all topological
entities, composing the selected geometrical object.
-For the COMPOUND or COMPSOLID shape, additionally the information about
+For the \em COMPOUND or \em COMPSOLID shape, additionally the information about
"flat" content is shown - a number of "simple" top-level shapes enclosed into the compound.
\image html measures8.png
-\n <b>TUI Command:</b> <em>geompy.WhatIs(Shape),</em> where \em Shape is a
+\note This dialog supports navigation through the selectable objects (in OCC 3D viewer only):
+- Scroll mouse wheel with pressed \em Ctrl key or press \em "S", \em "P" keys when input focus is
+in the viewer to navigate between selectable objects.
+- Press left mouse button to select an appropriate object to the dialog box.
+.
+For more details, please refer to the \em "Functionality common for OCC and VTK viewers" chapter
+of the GUI module's documentation.
+
+<b>TUI Command:</b> <em>geompy.WhatIs(Shape),</em> where \em Shape is a
shape from which a description is returned.
-\n <b>Kind of Shape</b> field characterizes the
+<b>Kind of Shape</b> field characterizes the
whole shape. If there is no additional information about the
shape, <b>Basic Properties</b> button is disabled, otherwise it
provides information about center and dimensions of the shape.
\image html measures8a.png
-\n <b>TUI Command:</b> <em>geompy.KindOfShape(Shape),</em> where \em Shape is a
+<b>TUI Command:</b> <em>geompy.KindOfShape(Shape),</em> where \em Shape is a
shape from which a description is returned.
See also a \ref tui_whatis_page "TUI example".
showOnlyPreviewControl();
+ globalSelection();
+ localSelection(GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
//@@ initialize dialog box widgets here @@//
// Signal/slot connections
return false;
initName();
-
+ globalSelection();
+ localSelection(GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
return true;
}
void AdvancedGUI_SmoothingSurfaceDlg::ActivateThisDialog()
{
GEOMBase_Skeleton::ActivateThisDialog();
+ globalSelection();
+ localSelection(GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
//displayPreview();
}
return res;
}
+//=================================================================================
+// function : addSubshapesToStudy
+// purpose : virtual method to add new SubObjects if local selection
+//=================================================================================
+void AdvancedGUI_SmoothingSurfaceDlg::addSubshapesToStudy()
+{
+ for ( int i = 0; i < myPoints.count(); i++ )
+ GEOMBase::PublishSubObject( myPoints[i].get() );
+}
+
//=================================================================================
// function : getNbPoints()
// purpose : Returns the number of points in myPoints list.
if ( sender() == GroupPoints->PushButton1 )
myEditCurrentArgument = GroupPoints->LineEdit1;
myEditCurrentArgument->setFocus();
+ globalSelection();
+ localSelection(GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
SelectionIntoArgument();
}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
+ virtual void addSubshapesToStudy();
private:
void Init();
#include <QRadioButton>
#include <QMenu>
#include <QTimer>
+#include <QList>
#include <gp_Pnt.hxx>
#include <TopoDS_Shape.hxx>
#define SPACING 6
#define MARGIN 9
-enum { SelectEdge, SelectWire };
-
//=================================================================================
// class : BasicGUI_PointDlg()
// purpose : Constructs a BasicGUI_PointDlg which is a child of 'parent', with the
GroupRefPoint->TextLabel4->setText(tr("GEOM_DZ"));
/* popup menu for line intersect buttons */
- myBtnPopup = new QMenu(this);
QIcon ico_line = QIcon(image6);
QIcon ico_wire = QIcon(image7);
- myActions[myBtnPopup->addAction(ico_line, tr("GEOM_EDGE"))] = SelectEdge;
- myActions[myBtnPopup->addAction(ico_wire, tr("GEOM_WIRE"))] = SelectWire;
GroupLineIntersection = new DlgRef_2Sel(centralWidget());
GroupLineIntersection->GroupBox1->setTitle(tr("GEOM_LINE_INTERSECTION"));
GroupLineIntersection->TextLabel1->setText(tr("GEOM_LINE1"));
GroupLineIntersection->TextLabel2->setText(tr("GEOM_LINE2"));
GroupLineIntersection->PushButton1->setIcon(image2);
- GroupLineIntersection->PushButton1->setMenu(myBtnPopup);
GroupLineIntersection->PushButton2->setIcon(image2);
- GroupLineIntersection->PushButton2->setMenu(myBtnPopup);
GroupLineIntersection->LineEdit2->setEnabled(false);
myCoordGrp = new QGroupBox(tr("GEOM_COORDINATES_RES"), centralWidget());
connect(GroupOnSurface->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
connect(GroupLineIntersection->PushButton1, SIGNAL(pressed()), this, SLOT(SetEditCurrentArgument()));
connect(GroupLineIntersection->PushButton2, SIGNAL(pressed()), this, SLOT(SetEditCurrentArgument()));
-
- connect(myBtnPopup, SIGNAL(triggered(QAction*)), this, SLOT(onBtnPopup(QAction*)));
-
+
connect(GroupOnCurve->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
connect(GroupOnSurface->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
connect(GroupOnSurface->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
case GEOM_POINT_INTINT:
{
globalSelection(); // close local contexts, if any
- myNeedType = TopAbs_EDGE;
- localSelection(GEOM::GEOM_Object::_nil(), myNeedType);
+ std::list<int> needTypes;
+ needTypes.push_back( TopAbs_EDGE ), needTypes.push_back( TopAbs_WIRE );
+ localSelection(GEOM::GEOM_Object::_nil(), needTypes );
myEditCurrentArgument = GroupLineIntersection->LineEdit1;
GroupLineIntersection->LineEdit1->setText("");
myLine2.nullify();
}
- GEOM::GeomObjPtr aSelectedObject = getSelected(myNeedType);
+ GEOM::GeomObjPtr aSelectedObject;
+ if (id == GEOM_POINT_INTINT) {
+ QList<TopAbs_ShapeEnum> needTypes;
+ needTypes << TopAbs_EDGE, needTypes << TopAbs_WIRE;
+ aSelectedObject= getSelected(needTypes);
+ }
+ else
+ aSelectedObject= getSelected(myNeedType);
TopoDS_Shape aShape;
if (aSelectedObject && GEOMBase::GetShape(aSelectedObject.get(), aShape) && !aShape.IsNull()) {
QString aName = GEOMBase::GetName(aSelectedObject.get());
if (myEditCurrentArgument == GroupLineIntersection->LineEdit1) {
myLine1 = aSelectedObject;
if (myLine1 && !myLine2) {
- GroupLineIntersection->PushButton2->setMenu(0);
GroupLineIntersection->PushButton2->click();
- GroupLineIntersection->PushButton2->setDown(true);
- GroupLineIntersection->PushButton2->setMenu(myBtnPopup);
}
}
else if (myEditCurrentArgument == GroupLineIntersection->LineEdit2) {
myLine2 = aSelectedObject;
if (myLine2 && !myLine1) {
- GroupLineIntersection->PushButton1->setMenu(0);
GroupLineIntersection->PushButton1->click();
- GroupLineIntersection->PushButton1->setDown(true);
- GroupLineIntersection->PushButton1->setMenu(myBtnPopup);
}
}
}
QTimer::singleShot(50, this, SLOT(updateSize()));
}
-//=================================================================================
-// function : onBtnPopup()
-// purpose :
-//=================================================================================
-void BasicGUI_PointDlg::onBtnPopup(QAction* a)
-{
- globalSelection(); // close local contexts, if any
- myNeedType = myActions[a] == SelectEdge ? TopAbs_EDGE : TopAbs_WIRE;
- localSelection(GEOM::GEOM_Object::_nil(), myNeedType);
-}
-
//=================================================================================
// function : updateSize
// purpose : adjust dialog size to minimum
QGroupBox* myParamGroup;
QButtonGroup* myParamCoord;
- QMenu* myBtnPopup;
QMap<QAction*, int> myActions;
TopAbs_ShapeEnum myNeedType;
void SetDoubleSpinBoxStep( double );
void ClickParamCoord( int );
void CheckBoxClicked( int );
- void onBtnPopup( QAction* );
void updateSize();
};
globalSelection(GEOM_ALLSHAPES);
+ std::list<int> needTypes;
+ needTypes.push_back( TopAbs_VERTEX ), needTypes.push_back( TopAbs_EDGE ), needTypes.push_back( TopAbs_WIRE ), needTypes.push_back( TopAbs_FACE ), needTypes.push_back( TopAbs_SHELL ), needTypes.push_back( TopAbs_SOLID ), needTypes.push_back( TopAbs_COMPOUND );
+ localSelection(GEOM::GEOM_Object::_nil(), needTypes );
+
myGroup->PushButton1->click();
SelectionIntoArgument();
resize(100,100);
//=================================================================================
void BooleanGUI_Dialog::reset()
{
- myObjects = new GEOM::ListOfGO;
- myObjects->length( 0 );
+ myObjects.clear();
}
//=================================================================================
if (myEditCurrentArgument == myGroup->LineEdit1) {
myObject1 = aSelectedObject;
- if (!myGroup->PushButton2->isHidden() && !myObjects->length())
+ if (!myGroup->PushButton2->isHidden() && !myObjects.count())
myGroup->PushButton2->click();
}
else if (myEditCurrentArgument == myGroup->LineEdit2) {
- myObjects->length(1);
- myObjects[0] = aSelectedObject.get();
+ myObjects << aSelectedObject;
if (!myObject1)
myGroup->PushButton1->click();
}
myEditCurrentArgument->setText( "" );
reset();
- LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
- SALOME_ListIO aSelList;
- aSelMgr->selectedObjects(aSelList);
- myObjects->length(aSelList.Extent());
+ myObjects = getSelected( TopAbs_SHAPE, -1 );
- int i = 0;
- for (SALOME_ListIteratorOfListIO anIt (aSelList); anIt.More(); anIt.Next()) {
- GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( anIt.Value() );
-
- if ( !CORBA::is_nil( aSelectedObject ) ) {
- myObjects[i++] = aSelectedObject;
- }
- }
-
- myObjects->length( i );
+ int i = myObjects.count();
if ( i == 1 ) {
- myEditCurrentArgument->setText( GEOMBase::GetName( myObjects[0] ) );
+ myEditCurrentArgument->setText( GEOMBase::GetName( myObjects.first().get() ) );
} else if ( i > 0 ) {
myEditCurrentArgument->setText( QString::number( i ) + "_" + tr( "GEOM_OBJECTS" ) );
}
//=================================================================================
void BooleanGUI_Dialog::SelectionIntoArgument()
{
+ myEditCurrentArgument->setText("");
if ( myOperation == BooleanGUI::SECTION ||
(myOperation == BooleanGUI::CUT &&
myEditCurrentArgument == myGroup->LineEdit1)) {
myGroup->LineEdit1->setEnabled(false);
}
+ globalSelection(GEOM_ALLSHAPES);
+
+ std::list<int> needTypes;
+ needTypes.push_back( TopAbs_VERTEX ), needTypes.push_back( TopAbs_EDGE ), needTypes.push_back( TopAbs_WIRE ), needTypes.push_back( TopAbs_FACE ), needTypes.push_back( TopAbs_SHELL ), needTypes.push_back( TopAbs_SOLID ), needTypes.push_back( TopAbs_COMPOUND );
+ localSelection(GEOM::GEOM_Object::_nil(), needTypes );
+
// enable line edit
myEditCurrentArgument->setEnabled(true);
myEditCurrentArgument->setFocus();
// after setFocus(), because it will be setDown(false) when loses focus
send->setDown(true);
+
+ SelectionIntoArgument();
}
//=================================================================================
switch (myOperation) {
case BooleanGUI::FUSE:
case BooleanGUI::COMMON:
- isOK = myObjects->length() > 1;
+ isOK = myObjects.count() > 1;
break;
case BooleanGUI::CUT:
- isOK = myObject1 && myObjects->length();
+ isOK = myObject1 && myObjects.count();
break;
case BooleanGUI::SECTION:
- isOK = myObject1 && (myObjects->length() == 1);
+ isOK = myObject1 && (myObjects.count() == 1);
break;
default:
break;
GEOM::GEOM_IBooleanOperations_var anOper = GEOM::GEOM_IBooleanOperations::_narrow(getOperation());
const bool isCheckSelfInte = myGroup->CheckBox1->isChecked();
+ GEOM::ListOfGO_var anObjects = new GEOM::ListOfGO();
+ anObjects->length( myObjects.count() );
+ for ( int i = 0; i < myObjects.count(); i++ )
+ anObjects[i] = myObjects[i].copy();
+
switch (myOperation) {
case BooleanGUI::FUSE:
{
const bool isRmExtraEdges = myGroup->CheckBox2->isChecked();
anObj = anOper->MakeFuseList
- (myObjects, isCheckSelfInte, isRmExtraEdges);
+ (anObjects, isCheckSelfInte, isRmExtraEdges);
}
break;
case BooleanGUI::COMMON:
- anObj = anOper->MakeCommonList(myObjects, isCheckSelfInte);
+ anObj = anOper->MakeCommonList(anObjects, isCheckSelfInte);
break;
case BooleanGUI::CUT:
anObj =
- anOper->MakeCutList(myObject1.get(), myObjects, isCheckSelfInte);
+ anOper->MakeCutList(myObject1.get(), anObjects, isCheckSelfInte);
break;
case BooleanGUI::SECTION:
anObj = anOper->MakeBoolean
- (myObject1.get(), myObjects[0], myOperation, isCheckSelfInte);
+ (myObject1.get(), anObjects[0], myOperation, isCheckSelfInte);
break;
default:
break;
mainFrame()->CheckBoxAddPrefix->isChecked()); // ? false
}
}
+
+//=================================================================================
+// function : addSubshapesToStudy
+// purpose : virtual method to add new SubObjects if local selection
+//=================================================================================
+void BooleanGUI_Dialog::addSubshapesToStudy()
+{
+ GEOMBase::PublishSubObject( myObject1.get() );
+ for ( int i = 0; i < myObjects.count(); i++ )
+ GEOMBase::PublishSubObject( myObjects[i].get() );
+}
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
virtual void restoreSubShapes( SALOMEDS::Study_ptr, SALOMEDS::SObject_ptr );
+ virtual void addSubshapesToStudy();
private:
void Init();
int myOperation;
GEOM::GeomObjPtr myObject1;
- GEOM::ListOfGO_var myObjects;
+ QList<GEOM::GeomObjPtr> myObjects;
DlgRef_2Sel2Spin3Check* myGroup;
//================================================================
// Function : localSelection
// Purpose : Activate selection of sub-shapes in accordance with mode
-// theMode is from TopAbs_ShapeEnum
+// modes are from TopAbs_ShapeEnum
//================================================================
-void GEOMBase_Helper::localSelection( const ObjectList& theObjs, const int theMode )
+void GEOMBase_Helper::localSelection( const ObjectList& theObjs, const std::list<int> modes )
{
SALOME_ListIO aListOfIO;
anEntry.toLatin1().constData(), "GEOM", strdup( GEOMBase::GetName( anObj ).toLatin1().constData() ) ) );
}
- getDisplayer()->LocalSelection( aListOfIO, theMode );
+ getDisplayer()->LocalSelection( aListOfIO, modes );
}
//================================================================
// Purpose : Activate selection of sub-shapes in accordance with mode
// theMode is from TopAbs_ShapeEnum
//================================================================
-void GEOMBase_Helper::localSelection( GEOM::GEOM_Object_ptr obj, const int mode )
+void GEOMBase_Helper::localSelection( const ObjectList& theObjs, const int theMode )
+{
+ std::list<int> modes;
+ modes.push_back( theMode );
+ localSelection( theObjs, modes );
+}
+
+//================================================================
+// Function : localSelection
+// Purpose : Activate selection of sub-shapes in accordance with mode
+// modes are from TopAbs_ShapeEnum
+//================================================================
+void GEOMBase_Helper::localSelection( GEOM::GEOM_Object_ptr obj, const std::list<int> modes )
{
// If object is null local selection for all objects is activated
if ( obj->_is_nil() ) {
- getDisplayer()->LocalSelection( Handle(SALOME_InteractiveObject)(), mode );
+ getDisplayer()->LocalSelection( Handle(SALOME_InteractiveObject)(), modes );
return;
}
ObjectList objList;
objList.push_back( obj );
- localSelection( objList, mode );
+ localSelection( objList, modes );
}
+//================================================================
+// Function : localSelection
+// Purpose : Activate selection of sub-shapes in accordance with mode
+// mode is from TopAbs_ShapeEnum
+//================================================================
+void GEOMBase_Helper::localSelection( GEOM::GEOM_Object_ptr obj, const int mode )
+{
+ std::list<int> modes;
+ modes.push_back( mode );
+ localSelection( obj, modes );
+}
//================================================================
// Function : globalSelection
const bool = true );
void erasePreview ( const bool = true );
+ void localSelection( const ObjectList&, const std::list<int> );
void localSelection( const ObjectList&, const int );
+ void localSelection( GEOM::GEOM_Object_ptr, const std::list<int> );
void localSelection( GEOM::GEOM_Object_ptr, const int );
void activate( const int );
void globalSelection( const int = GEOM_ALLOBJECTS, const bool = false );
* of their sub-shapes (with opened local context for OCC viewer)
*/
//=================================================================
-void GEOM_Displayer::LocalSelection( const Handle(SALOME_InteractiveObject)& theIO, const int theMode )
+void GEOM_Displayer::LocalSelection( const Handle(SALOME_InteractiveObject)& theIO, const std::list<int> modes )
{
SUIT_Session* session = SUIT_Session::session();
SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>( session->activeApplication() );
if (!theIO.IsNull() && !vf->isVisible(theIO))
Display(theIO);
SALOME_Prs* prs = vf->CreatePrs( theIO.IsNull() ? 0 : theIO->getEntry() );
- vf->LocalSelection( prs, theMode );
+ vf->LocalSelection( prs, modes );
delete prs; // delete presentation because displayer is its owner
}
}
+//=================================================================
+/*!
+ * GEOM_Displayer::LocalSelection
+ * Activate selection of CAD shapes with activisation of selection
+ * of their sub-shapes (with opened local context for OCC viewer)
+ */
+//=================================================================
+void GEOM_Displayer::LocalSelection( const Handle(SALOME_InteractiveObject)& theIO, const int theMode )
+{
+ std::list<int> modes;
+ modes.push_back( theMode );
+ LocalSelection( theIO, modes );
+}
+
//=================================================================
/*!
* GEOM_Displayer::globalSelection
* of their sub-shapes (with opened local context for OCC viewer)
*/
//=================================================================
-void GEOM_Displayer::LocalSelection( const SALOME_ListIO& theIOList, const int theMode )
+void GEOM_Displayer::LocalSelection( const SALOME_ListIO& theIOList, const std::list<int> modes )
{
SALOME_ListIteratorOfListIO Iter( theIOList );
for ( ; Iter.More(); Iter.Next() )
- LocalSelection( Iter.Value(), theMode );
+ LocalSelection( Iter.Value(), modes );
+}
+
+//=================================================================
+/*!
+ * GEOM_Displayer::LocalSelection
+ * Activate selection of CAD shapes with activisation of selection
+ * of their sub-shapes (with opened local context for OCC viewer)
+ */
+//=================================================================
+void GEOM_Displayer::LocalSelection( const SALOME_ListIO& theIOList, const int theMode )
+{
+ std::list<int> modes;
+ modes.push_back( theMode );
+ LocalSelection( theIOList, modes );
}
//=================================================================
bool ToActivate() const;
/* Activate/Deactivate selection*/
+ void LocalSelection( const Handle(SALOME_InteractiveObject)&, const std::list<int> );
void LocalSelection( const Handle(SALOME_InteractiveObject)&, const int );
+ void LocalSelection( const SALOME_ListIO& theIOList, const std::list<int> );
void LocalSelection( const SALOME_ListIO& theIOList, const int );
void GlobalSelection( const int = GEOM_ALLOBJECTS, const bool = false );
void GlobalSelection( const TColStd_MapOfInteger&, const bool = false, const QList<int>* = 0 );
aTypes.Add( GEOM_EDGE );
aTypes.Add( GEOM_WIRE );
aTypes.Add( GEOM_COMPOUND );
+
+ std::list<int> needTypes;
+ needTypes.push_back( TopAbs_EDGE );
+ needTypes.push_back( TopAbs_WIRE );
+ needTypes.push_back( TopAbs_COMPOUND );
+
globalSelection( aTypes );
+ localSelection(GEOM::GEOM_Object::_nil(), needTypes );
}
//=================================================================================
void GenerationGUI_FillingDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
- globalSelection(GEOM_ALLSHAPES);
if (send == GroupPoints->PushButton1) {
GroupPoints->LineEdit1->setFocus();
myEditCurrentArgument = GroupPoints->LineEdit1;
- globalSelection(GEOM_COMPOUND);
+ initSelection();
this->SelectionIntoArgument();
}
}
return true;
}
+
+//=================================================================================
+// function : addSubshapesToStudy
+// purpose : virtual method to add new SubObjects if local selection
+//=================================================================================
+void GenerationGUI_FillingDlg::addSubshapesToStudy()
+{
+ foreach( GEOM::GeomObjPtr o, myObjects )
+ GEOMBase::PublishSubObject( o.get() );
+}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
+ virtual void addSubshapesToStudy();
private:
void Init();
// init variables
myGrp->LineEdit1->setText("");
myGrp->LineEdit2->setText("");
- myObj = myObj2 = GEOM::GEOM_Object::_nil();
+ myGrp->LineEdit1->setEnabled(true);
+ myGrp->LineEdit2->setEnabled(false);
+ myObj.nullify();
+ myObj2.nullify();
mySelBtn = myGrp->PushButton1;
mySelEdit = myGrp->LineEdit1;
connect(mySelEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
connect(mySelBtn2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
- globalSelection(GEOM_LINE);
+ activateSelection();
MeasureGUI_Skeleton::Init();
}
//=================================================================================
void MeasureGUI_AngleDlg::SelectionIntoArgument()
{
- LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
- SALOME_ListIO aSelList;
- aSelMgr->selectedObjects(aSelList);
-
- GEOM::GEOM_Object_var aSelectedObject = GEOM::GEOM_Object::_nil();
-
- if (aSelList.Extent() > 0) {
- aSelectedObject = GEOMBase::ConvertIOinGEOMObject( aSelList.First() );
- }
+ GEOM::GeomObjPtr aSelectedObject = getSelected( TopAbs_EDGE );
// clear selection
disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
if (myEditCurrentArgument == mySelEdit) {
myObj = aSelectedObject;
- if (!myObj->_is_nil() && myObj2->_is_nil())
+ if (myObj && !myObj2)
myGrp->PushButton2->click();
}
else {
myObj2 = aSelectedObject;
- if (!myObj2->_is_nil() && myObj->_is_nil())
+ if (myObj2 && !myObj)
myGrp->PushButton1->click();
}
//=================================================================================
void MeasureGUI_AngleDlg::processObject()
{
- myGrp->LineEdit1->setText(!myObj->_is_nil() ? GEOMBase::GetName(myObj ) : "");
- myGrp->LineEdit2->setText(!myObj2->_is_nil() ? GEOMBase::GetName(myObj2) : "");
+ myGrp->LineEdit1->setText(myObj ? GEOMBase::GetName(myObj.get()) : "");
+ myGrp->LineEdit2->setText(myObj2 ? GEOMBase::GetName(myObj2.get()) : "");
double anAngle = 0.;
if (getParameters(anAngle)) {
if (isValid(msg)) {
GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() );
try {
- theAngle = anOper->GetAngle(myObj, myObj2);
+ theAngle = anOper->GetAngle(myObj.get(), myObj2.get());
}
catch(const SALOME::SALOME_Exception& e) {
SalomeApp_Tools::QtCatchCorbaException(e);
}
disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
- globalSelection(GEOM_LINE);
+ activateSelection();
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
this, SLOT(SelectionIntoArgument()));
SALOME_Prs* MeasureGUI_AngleDlg::buildPrs()
{
double anAngle = 0.;
+ myGrp->LineEdit3->setText("");
SUIT_ViewWindow* vw = SUIT_Session::session()->activeApplication()->desktop()->activeWindow();
- if (myObj->_is_nil() || myObj2->_is_nil() || !getParameters(anAngle) ||
+ if (!myObj || !myObj2 || !getParameters(anAngle) ||
vw->getViewManager()->getType() != OCCViewer_Viewer::Type())
return 0;
try {
OCC_CATCH_SIGNALS;
TopoDS_Shape S1, S2;
- if (GEOMBase::GetShape(myObj , S1, TopAbs_EDGE) &&
- GEOMBase::GetShape(myObj2, S2, TopAbs_EDGE)) {
+ if (GEOMBase::GetShape(myObj.get() , S1, TopAbs_EDGE) &&
+ GEOMBase::GetShape(myObj2.get(), S2, TopAbs_EDGE)) {
TopoDS_Edge anEdge1 = TopoDS::Edge(S1);
TopoDS_Edge anEdge2 = TopoDS::Edge(S2);
//=================================================================================
bool MeasureGUI_AngleDlg::isValid (QString& msg)
{
- return MeasureGUI_Skeleton::isValid(msg) && !myObj2->_is_nil();
+ return MeasureGUI_Skeleton::isValid(msg) && myObj2;
+}
+
+//=================================================================================
+// function : activateSelection()
+// purpose :
+//=================================================================================
+void MeasureGUI_AngleDlg::activateSelection()
+{
+ globalSelection(GEOM_LINE);
+ localSelection(GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
}
private:
void Init();
bool getParameters( double& );
+ void activateSelection();
private:
QLineEdit* myEditCurrentArgument;
QPushButton* mySelBtn2;
MeasureGUI_2Sel1LineEdit* myGrp;
- GEOM::GEOM_Object_var myObj2;
+ GEOM::GeomObjPtr myObj2;
};
#endif // MEASUREGUI_ANGLEDLG_H
this, SLOT(SelectionIntoArgument()));
initName(tr("GEOM_BNDBOX"));
- globalSelection();
+ activateSelection();
SelectionIntoArgument();
}
return false;
initName();
+ activateSelection();
return true;
}
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
this, SLOT(SelectionIntoArgument()));
- globalSelection();
+ activateSelection();
redisplayPreview();
}
double& theYmin, double& theYmax,
double& theZmin, double& theZmax)
{
- if (myObj->_is_nil())
+ if (!myObj)
return false;
GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow(getOperation());
- anOper->GetBoundingBox(myObj, true, theXmin, theXmax, theYmin, theYmax, theZmin, theZmax);
+ anOper->GetBoundingBox(myObj.get(), true, theXmin, theXmax, theYmin, theYmax, theZmin, theZmax);
return anOper->IsDone();
}
void MeasureGUI_BndBoxDlg::SelectionIntoArgument()
{
myEditCurrentArgument->setText("");
- myObj = GEOM::GEOM_Object::_nil();
+ myObj.nullify();
- LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
- SALOME_ListIO aSelList;
- aSelMgr->selectedObjects(aSelList);
+ QList<TopAbs_ShapeEnum> aTypes;
+ aTypes << TopAbs_VERTEX << TopAbs_EDGE << TopAbs_WIRE << TopAbs_FACE << TopAbs_SHELL << TopAbs_SOLID << TopAbs_COMPSOLID << TopAbs_COMPOUND << TopAbs_SHAPE;
+ myObj = getSelected( aTypes );
- if (aSelList.Extent() != 1) {
+ if ( !myObj ) {
processObject();
erasePreview();
return;
}
- GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First());
-
- if (aSelectedObject->_is_nil()) {
- processObject();
- erasePreview();
- return;
- }
-
- myObj = aSelectedObject;
- myEditCurrentArgument->setText(GEOMBase::GetName(myObj));
+ myEditCurrentArgument->setText(GEOMBase::GetName(myObj.get()));
processObject();
redisplayPreview();
}
//=================================================================================
bool MeasureGUI_BndBoxDlg::isValid (QString&)
{
- return !myObj->_is_nil();
+ return myObj;
}
//=================================================================================
bool MeasureGUI_BndBoxDlg::execute (ObjectList& objects)
{
GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow(getOperation());
- GEOM::GEOM_Object_var anObj = anOper->MakeBoundingBox(myObj, true);
+ GEOM::GEOM_Object_var anObj = anOper->MakeBoundingBox(myObj.get(), true);
if (!anObj->_is_nil())
objects.push_back(anObj._retn());
return true;
}
+//=================================================================================
+// function : activateSelection()
+// purpose :
+//=================================================================================
+void MeasureGUI_BndBoxDlg::activateSelection()
+{
+ globalSelection( GEOM_ALLSHAPES );
+ std::list<int> needTypes;
+ needTypes.push_back( TopAbs_SHAPE ), needTypes.push_back( TopAbs_VERTEX ), needTypes.push_back( TopAbs_EDGE );
+ needTypes.push_back( TopAbs_WIRE ), needTypes.push_back( TopAbs_FACE ), needTypes.push_back( TopAbs_SHELL );
+ needTypes.push_back( TopAbs_SOLID ), needTypes.push_back( TopAbs_COMPSOLID ), needTypes.push_back( TopAbs_COMPOUND );
+ localSelection(GEOM::GEOM_Object::_nil(), needTypes );
+}
+
//=================================================================================
// function : redisplayPreview()
// purpose :
catch (...) {
}
}
+
+//=================================================================================
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
+//=================================================================================
+void MeasureGUI_BndBoxDlg::addSubshapesToStudy()
+{
+ GEOMBase::PublishSubObject( myObj.get() );
+}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid (QString&);
virtual bool execute (ObjectList&);
-
+ virtual void addSubshapesToStudy();
void redisplayPreview();
virtual void processObject();
virtual SALOME_Prs* buildPrs();
private:
void Init();
void enterEvent (QEvent*);
+ void activateSelection();
bool getParameters (double&, double&, double&, double&, double&, double&);
private:
- GEOM::GEOM_Object_var myObj;
+ GEOM::GeomObjPtr myObj;
MeasureGUI_1Sel6LineEdit* myGrp;
private slots:
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
initName( tr( "GEOM_POINT") );
- globalSelection();
+ activateSelection();
SelectionIntoArgument();
}
+//=================================================================================
+// function : activateSelection
+// purpose :
+//=================================================================================
+void MeasureGUI_CenterMassDlg::activateSelection()
+{
+ globalSelection( GEOM_ALLSHAPES );
+ std::list<int> needTypes;
+ needTypes.push_back( TopAbs_SHAPE ), needTypes.push_back( TopAbs_VERTEX ), needTypes.push_back( TopAbs_EDGE );
+ needTypes.push_back( TopAbs_WIRE ), needTypes.push_back( TopAbs_FACE ), needTypes.push_back( TopAbs_SHELL );
+ needTypes.push_back( TopAbs_SOLID ), needTypes.push_back( TopAbs_COMPSOLID ), needTypes.push_back( TopAbs_COMPOUND );
+ localSelection(GEOM::GEOM_Object::_nil(), needTypes );
+}
//=================================================================================
// function : ClickOnOk()
return false;
initName();
+ activateSelection();
return true;
// myMeasureGUI->MakeCDGAndDisplay( myGeomShape );
void MeasureGUI_CenterMassDlg::SelectionIntoArgument()
{
erasePreview();
- myObj = GEOM::GEOM_Object::_nil();
-
- LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
- SALOME_ListIO aSelList;
- aSelMgr->selectedObjects(aSelList);
-
- if (aSelList.Extent() != 1) {
- processObject();
- return;
- }
- GEOM::GEOM_Object_var aSelectedObject =
- GEOMBase::ConvertIOinGEOMObject( aSelList.First() );
+ myObj.nullify();
+ QList<TopAbs_ShapeEnum> aTypes;
+ aTypes << TopAbs_VERTEX << TopAbs_EDGE << TopAbs_WIRE << TopAbs_FACE << TopAbs_SHELL << TopAbs_SOLID << TopAbs_COMPSOLID << TopAbs_COMPOUND << TopAbs_SHAPE;
+ myObj = getSelected( aTypes );
- if ( aSelectedObject->_is_nil() ) {
+ if ( !myObj ) {
processObject();
return;
}
- myObj = aSelectedObject;
processObject();
displayPreview(true);
}
connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
SIGNAL(currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
- globalSelection();
+ activateSelection();
displayPreview(true);
}
//=================================================================================
void MeasureGUI_CenterMassDlg::processObject()
{
- if ( myObj->_is_nil() ) {
+ if ( !myObj ) {
myGrp->LineEdit1->setText( "" );
myGrp->LineEdit2->setText( "" );
myGrp->LineEdit3->setText( "" );
getParameters( x, y, z );
- myGrp->LineEdit1->setText( GEOMBase::GetName( myObj ) );
+ myGrp->LineEdit1->setText( GEOMBase::GetName( myObj.get() ) );
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
int aPrecision = resMgr->integerValue( "Geometry", "length_precision", 6 );
//=================================================================================
bool MeasureGUI_CenterMassDlg::isValid( QString& )
{
- return !myObj->_is_nil();
+ return myObj;
}
//=================================================================================
//=================================================================================
bool MeasureGUI_CenterMassDlg::getParameters( double& theX, double& theY, double& theZ )
{
- if ( myObj->_is_nil() )
+ if ( !myObj )
return false;
else {
try {
GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() );
- GEOM::GEOM_Object_var anObj = anOper->GetCentreOfMass( myObj );
+ GEOM::GEOM_Object_var anObj = anOper->GetCentreOfMass( myObj.get() );
if ( !anOper->IsDone() )
return false;
bool MeasureGUI_CenterMassDlg::execute( ObjectList& objects )
{
GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() );
- GEOM::GEOM_Object_var anObj = anOper->GetCentreOfMass( myObj );
+ GEOM::GEOM_Object_var anObj = anOper->GetCentreOfMass( myObj.get() );
if ( !anObj->_is_nil() )
objects.push_back( anObj._retn() );
return true;
}
+
+//=================================================================================
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
+//=================================================================================
+void MeasureGUI_CenterMassDlg::addSubshapesToStudy()
+{
+ GEOMBase::PublishSubObject( myObj.get() );
+}
// redefined from GEOMBase_Helper
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
+ virtual void addSubshapesToStudy();
virtual bool execute( ObjectList& );
private slots:
void Init();
void enterEvent( QEvent* );
void processObject();
+ void activateSelection();
bool getParameters( double&, double&, double& );
private:
- GEOM::GEOM_Object_var myObj;
+ GEOM::GeomObjPtr myObj;
MeasureGUI_1Sel3LineEdit* myGrp;
};
myEditCurrentArgument = myGrp->LineEdit1;
myDbls = new GEOM::ListOfDouble();
+ myGrp->LineEdit1->setEnabled(true);
+ myGrp->LineEdit2->setEnabled(false);
+
+ myObj1.nullify();
+ myObj2.nullify();
+
// signals and slots connections
connect(buttonOk(), SIGNAL(clicked()), this, SLOT(ClickOnOk()));
connect(buttonApply(), SIGNAL(clicked()), this, SLOT(ClickOnApply()));
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
this, SLOT(SelectionIntoArgument()));
- globalSelection();
+ activateSelection();
SelectionIntoArgument();
}
return false;
initName();
+ activateSelection();
return true;
}
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
this, SLOT(SelectionIntoArgument()));
- globalSelection();
+ activateSelection();
redisplayPreview();
}
//=================================================================================
void MeasureGUI_DistanceDlg::SelectionIntoArgument()
{
- LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
- SALOME_ListIO aSelList;
- aSelMgr->selectedObjects(aSelList);
-
- GEOM::GEOM_Object_var aSelectedObject = GEOM::GEOM_Object::_nil();
-
- if (aSelList.Extent() > 0) {
- aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First());
- }
+ QList<TopAbs_ShapeEnum> aTypes;
+ aTypes << TopAbs_VERTEX << TopAbs_EDGE << TopAbs_WIRE << TopAbs_FACE << TopAbs_SHELL << TopAbs_SOLID << TopAbs_COMPSOLID << TopAbs_COMPOUND << TopAbs_SHAPE;
+ GEOM::GeomObjPtr aSelectedObject = getSelected( aTypes );
// clear selection
disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
if (myEditCurrentArgument == myGrp->LineEdit1) {
myObj1 = aSelectedObject;
- if (!myObj1->_is_nil() && myObj2->_is_nil())
+ if (myObj1 && !myObj2)
myGrp->PushButton2->click();
}
else {
myObj2 = aSelectedObject;
- if (!myObj2->_is_nil() && myObj1->_is_nil())
+ if (myObj2 && !myObj1)
myGrp->PushButton1->click();
}
//=================================================================================
void MeasureGUI_DistanceDlg::processObject()
{
- myGrp->LineEdit1->setText(!myObj1->_is_nil() ? GEOMBase::GetName(myObj1) : "");
- myGrp->LineEdit2->setText(!myObj2->_is_nil() ? GEOMBase::GetName(myObj2) : "");
+ myGrp->LineEdit1->setText(myObj1 ? GEOMBase::GetName(myObj1.get()) : "");
+ myGrp->LineEdit2->setText(myObj2 ? GEOMBase::GetName(myObj2.get()) : "");
myGrp->ComboBox1->clear();
myDbls->length(0);
GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow(getOperation());
try {
- nbSols = anOper->ClosestPoints(myObj1, myObj2, myDbls);
+ nbSols = anOper->ClosestPoints(myObj1.get(), myObj2.get(), myDbls);
}
catch (const SALOME::SALOME_Exception& e) {
SalomeApp_Tools::QtCatchCorbaException(e);
int currSol = myGrp->ComboBox1->currentIndex();
- if (myObj1->_is_nil() || myObj2->_is_nil() ||
+ if (!myObj1 || !myObj2 ||
currSol == -1 || (currSol+1)*6 > myDbls->length() ||
vw->getViewManager()->getType() != OCCViewer_Viewer::Type())
return 0;
//=================================================================================
bool MeasureGUI_DistanceDlg::isValid (QString& msg)
{
- return !myObj1->_is_nil() && !myObj2->_is_nil();
+ return myObj1 && myObj2;
}
//=================================================================================
GEOM::GEOM_IBasicOperations_var aBasicOper = getGeomEngine()->GetIBasicOperations(getStudyId());
GEOM::ListOfDouble_var aDbls;
- int nbSols = anOper->ClosestPoints(myObj1, myObj2, aDbls);
+ int nbSols = anOper->ClosestPoints(myObj1.get(), myObj2.get(), aDbls);
if (anOper->IsDone()) {
bool doPublishAll = true;
return true;
}
+//=================================================================================
+// function : activateSelection()
+// purpose :
+//=================================================================================
+void MeasureGUI_DistanceDlg::activateSelection()
+{
+ globalSelection( GEOM_ALLSHAPES );
+ std::list<int> needTypes;
+ needTypes.push_back( TopAbs_SHAPE ), needTypes.push_back( TopAbs_VERTEX ), needTypes.push_back( TopAbs_EDGE );
+ needTypes.push_back( TopAbs_WIRE ), needTypes.push_back( TopAbs_FACE ), needTypes.push_back( TopAbs_SHELL );
+ needTypes.push_back( TopAbs_SOLID ), needTypes.push_back( TopAbs_COMPSOLID ), needTypes.push_back( TopAbs_COMPOUND );
+ localSelection(GEOM::GEOM_Object::_nil(), needTypes );
+}
+
//=================================================================================
// function : redisplayPreview()
// purpose :
QString MeasureGUI_DistanceDlg::getNewObjectName (int currObj) const
{
QString aName = tr("GEOM_MINDIST_NAME") + QString("_%1_").arg((currObj+1)/2);
- aName += GEOMBase::GetName(currObj%2 ? myObj1 : myObj2);
+ aName += GEOMBase::GetName(currObj%2 ? myObj1.get() : myObj2.get());
return aName;
}
+//=================================================================================
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
+//=================================================================================
+void MeasureGUI_DistanceDlg::addSubshapesToStudy()
+{
+ GEOMBase::PublishSubObject( myObj1.get() );
+ GEOMBase::PublishSubObject( myObj2.get() );
+}
+
//=================================================================================
// function : MeasureGUI_DistanceGroup
// purpose :
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid (QString&);
virtual bool execute (ObjectList&);
+ virtual void addSubshapesToStudy();
virtual QString getNewObjectName (int CurrObj = -1) const;
void redisplayPreview();
private:
void Init();
void enterEvent (QEvent*);
+ void activateSelection();
private:
- GEOM::GEOM_Object_var myObj1;
- GEOM::GEOM_Object_var myObj2;
+ GEOM::GeomObjPtr myObj1;
+ GEOM::GeomObjPtr myObj2;
MeasureGUI_DistanceGroup* myGrp;
GEOM::ListOfDouble_var myDbls;
MeasureGUI_Skeleton::Init();
}
+//=================================================================================
+// function : activateSelection()
+// purpose :
+//=================================================================================
+void MeasureGUI_InertiaDlg::activateSelection()
+{
+ MeasureGUI_Skeleton::activateSelection();
+ std::list<int> needTypes;
+ needTypes.push_back( TopAbs_VERTEX ), needTypes.push_back( TopAbs_EDGE ), needTypes.push_back( TopAbs_WIRE ), needTypes.push_back( TopAbs_FACE ), needTypes.push_back( TopAbs_SHELL ), needTypes.push_back( TopAbs_SOLID ), needTypes.push_back( TopAbs_COMPOUND );
+ localSelection(GEOM::GEOM_Object::_nil(), needTypes );
+}
+
+
//=================================================================================
// function : processObject
// purpose :
bool MeasureGUI_InertiaDlg::getParameters( gp_Mat& I,
gp_XYZ& theIXYZ )
{
- if ( myObj->_is_nil() )
+ if ( !myObj )
return false;
else {
GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() );
try {
double x, y, z;
- anOper->GetInertia( myObj,
+ anOper->GetInertia( myObj.get(),
I( 1, 1 ), I( 1, 2 ), I( 1, 3 ),
I( 2, 1 ), I( 2, 2 ), I( 2, 3 ),
I( 3, 1 ), I( 3, 2 ), I( 3, 3 ),
return anOper->IsDone();
}
}
+
+void MeasureGUI_InertiaDlg::SelectionIntoArgument()
+{
+ myObj.nullify();
+ QList<TopAbs_ShapeEnum> aTypes;
+ aTypes << TopAbs_VERTEX << TopAbs_EDGE << TopAbs_WIRE << TopAbs_FACE << TopAbs_SHELL << TopAbs_SOLID << TopAbs_COMPSOLID << TopAbs_COMPOUND << TopAbs_SHAPE;
+ myObj = getSelected( aTypes );
+
+ if (!myObj) {
+ mySelEdit->setText("");
+ processObject();
+ erasePreview();
+ return;
+ }
+
+ mySelEdit->setText(GEOMBase::GetName(myObj.get()));
+ processObject();
+ redisplayPreview();
+}
protected:
// redefined from GEOMBase_Helper and MeasureGUI_Skeleton
virtual void processObject();
+ virtual void activateSelection();
+ virtual void SelectionIntoArgument();
private:
void Init();
//
#include "MeasureGUI_MaxToleranceDlg.h"
#include "MeasureGUI_Widgets.h"
+#include <GEOMBase.h>
#include "DlgRef.h"
#include <SUIT_Session.h>
else {
GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() );
try {
- anOper->GetTolerance( myObj,
+ anOper->GetTolerance( myObj.get(),
theMinFaceToler, theMaxFaceToler, theMinEdgeToler,
theMaxEdgeToler, theMinVertexToler, theMaxVertexToler );
}
return anOper->IsDone();
}
}
+
+//=================================================================================
+// function : activateSelection()
+// purpose :
+//=================================================================================
+void MeasureGUI_MaxToleranceDlg::activateSelection()
+{
+ globalSelection( GEOM_ALLSHAPES );
+ std::list<int> needTypes;
+ needTypes.push_back( TopAbs_SHAPE ), needTypes.push_back( TopAbs_EDGE );
+ needTypes.push_back( TopAbs_WIRE ), needTypes.push_back( TopAbs_FACE ), needTypes.push_back( TopAbs_SHELL );
+ needTypes.push_back( TopAbs_SOLID ), needTypes.push_back( TopAbs_COMPSOLID ), needTypes.push_back( TopAbs_COMPOUND ); localSelection(GEOM::GEOM_Object::_nil(), needTypes );
+}
+
+void MeasureGUI_MaxToleranceDlg::SelectionIntoArgument()
+{
+ myObj.nullify();
+ QList<TopAbs_ShapeEnum> aTypes;
+ aTypes << TopAbs_EDGE << TopAbs_WIRE << TopAbs_FACE << TopAbs_SHELL << TopAbs_SOLID << TopAbs_COMPSOLID << TopAbs_COMPOUND << TopAbs_SHAPE;
+ myObj = getSelected( aTypes );
+
+ if (!myObj) {
+ mySelEdit->setText("");
+ processObject();
+ erasePreview();
+ return;
+ }
+
+ mySelEdit->setText(GEOMBase::GetName(myObj.get()));
+ processObject();
+ redisplayPreview();
+}
protected:
// redefined from GEOMBase_Helper and MeasureGUI_Skeleton
virtual void processObject();
+ virtual void SelectionIntoArgument();
private:
void Init();
+ void activateSelection();
bool getParameters( double&, double&, double&,
double&, double&, double& );
void MeasureGUI_PointDlg::SelectionIntoArgument()
{
try {
- myObj = GEOM::GEOM_Object::_nil();
+ myObj.nullify();
myGrp->LineEdit1->setText( "" );
myGrp->LineEdit2->setText( "" );
myGrp->LineEdit3->setText( "" );
if (aSelList.Extent() < 1)
return;
- GEOM::GEOM_Object_var aSelectedObject =
- GEOMBase::ConvertIOinGEOMObject( aSelList.First() );
+ myObj = GEOMBase::ConvertIOinGEOMObject( aSelList.First() );
- if ( aSelectedObject->_is_nil() )
+ if ( !myObj )
return;
- myObj = aSelectedObject;
-
TColStd_IndexedMapOfInteger anIndexes;
aSelMgr->GetIndexes(aSelList.First(), anIndexes);
TopoDS_Shape aShape;
- if ( anIndexes.Extent() > 1 || !GEOMBase::GetShape( myObj, aShape ) || aShape.IsNull() )
+ if ( anIndexes.Extent() > 1 || !GEOMBase::GetShape( myObj.get(), aShape ) || aShape.IsNull() )
return;
TopoDS_Vertex aPoint;
- QString aName = GEOMBase::GetName( myObj );
+ QString aName = GEOMBase::GetName( myObj.get() );
if ( anIndexes.Extent() == 0 ) {
if ( aShape.ShapeType() == TopAbs_VERTEX )
aPoint = TopoDS::Vertex( aShape );
}
catch( ... )
{
- myObj = GEOM::GEOM_Object::_nil();
+ myObj.nullify();
myGrp->LineEdit1->setText( "" );
myGrp->LineEdit2->setText( "" );
myGrp->LineEdit3->setText( "" );
}
globalSelection( aTypes );
+
+ std::list<int> needTypes;
+ needTypes.push_back( TopAbs_EDGE ), needTypes.push_back( TopAbs_WIRE ), needTypes.push_back( TopAbs_FACE ), needTypes.push_back( TopAbs_SHELL ), needTypes.push_back( TopAbs_SOLID ), needTypes.push_back( TopAbs_COMPOUND );
+ localSelection(GEOM::GEOM_Object::_nil(), needTypes );
}
+void MeasureGUI_PropertiesDlg::SelectionIntoArgument()
+{
+ myObj.nullify();
+ QList<TopAbs_ShapeEnum> aTypes;
+ aTypes << TopAbs_EDGE << TopAbs_WIRE << TopAbs_FACE << TopAbs_SHELL << TopAbs_SOLID << TopAbs_COMPOUND;
+ myObj = getSelected( aTypes );
+
+ if (!myObj) {
+ mySelEdit->setText("");
+ processObject();
+ erasePreview();
+ return;
+ }
+
+ mySelEdit->setText(GEOMBase::GetName(myObj.get()));
+ processObject();
+ redisplayPreview();
+}
//=================================================================================
// function : processObject
// purpose :
double& theArea,
double& theVolume )
{
- if ( myObj->_is_nil() )
+ if ( !myObj )
return false;
else {
GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() );
try {
- anOper->GetBasicProperties( myObj, theLength, theArea, theVolume );
+ anOper->GetBasicProperties( myObj.get(), theLength, theArea, theVolume );
}
catch( const SALOME::SALOME_Exception& e ) {
SalomeApp_Tools::QtCatchCorbaException( e );
SALOME_Prs* prs = 0;
TopoDS_Shape shape;
- if ( GEOMBase::GetShape( myObj, shape, TopAbs_EDGE ) &&
- getDisplayer()->IsDisplayed( GEOMBase::GetEntry(myObj) ) ) {
+ if ( GEOMBase::GetShape( myObj.get(), shape, TopAbs_EDGE ) &&
+ getDisplayer()->IsDisplayed( GEOMBase::GetEntry(myObj.get()) ) ) {
shape = GEOMBase::CreateArrowForLinearEdge( shape );
if ( !shape.IsNull() )
prs = getDisplayer()->BuildPrs( shape );
// redefined from GEOMBase_Helper and MeasureGUI_Skeleton
virtual void processObject();
virtual void activateSelection();
+ virtual void SelectionIntoArgument();
virtual SALOME_Prs* buildPrs();
private:
//=================================================================================
void MeasureGUI_Skeleton::SelectionIntoArgument()
{
- myObj = GEOM::GEOM_Object::_nil();
+ myObj.nullify();
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
SALOME_ListIO aSelList;
aSelMgr->selectedObjects(aSelList);
- GEOM::GEOM_Object_var aSelectedObject = GEOM::GEOM_Object::_nil();
-
if (aSelList.Extent() > 0) {
- aSelectedObject = GEOMBase::ConvertIOinGEOMObject( aSelList.First() );
+ myObj = GEOMBase::ConvertIOinGEOMObject( aSelList.First() );
}
- if (aSelectedObject->_is_nil()) {
+ if ( !myObj ) {
mySelEdit->setText("");
processObject();
erasePreview();
return;
}
- myObj = aSelectedObject;
- mySelEdit->setText(GEOMBase::GetName(myObj));
+ mySelEdit->setText(GEOMBase::GetName(myObj.get()));
processObject();
redisplayPreview();
}
//=================================================================================
bool MeasureGUI_Skeleton::isValid( QString& )
{
- return !myObj->_is_nil();
+ return myObj;
}
//================================================================
protected:
QPushButton* mySelBtn;
QLineEdit* mySelEdit;
- GEOM::GEOM_Object_var myObj;
+ GEOM::GeomObjPtr myObj;
GeometryGUI* myGeomGUI;
GEOM_Displayer* myDisplayer;
myParamsDlg->adjustSize();
}
+//=================================================================================
+// function : activateSelection()
+// purpose :
+//=================================================================================
+void MeasureGUI_WhatisDlg::activateSelection()
+{
+ MeasureGUI_Skeleton::activateSelection();
+ std::list<int> needTypes;
+ needTypes.push_back( TopAbs_VERTEX ), needTypes.push_back( TopAbs_EDGE ), needTypes.push_back( TopAbs_WIRE ), needTypes.push_back( TopAbs_FACE ), needTypes.push_back( TopAbs_SHELL ), needTypes.push_back( TopAbs_SOLID ), needTypes.push_back( TopAbs_COMPOUND );
+ localSelection(GEOM::GEOM_Object::_nil(), needTypes );
+}
+
//=================================================================================
// function : ClickOnProperties()
// purpose :
//=================================================================================
bool MeasureGUI_WhatisDlg::getParameters( QString& theText )
{
- if ( myObj->_is_nil() )
+ if ( !myObj )
return false;
GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() );
try
{
- theText = anOper->WhatIs( myObj );
+ theText = anOper->WhatIs( myObj.get() );
}
catch( const SALOME::SALOME_Exception& e )
{
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
int aLenPrecision = resMgr->integerValue( "Geometry", "length_precision", 6 );
- if ( myObj->_is_nil() )
+ if ( !myObj )
return aKindStr;
GEOM::GEOM_IKindOfShape::shape_kind aKind;
try
{
- aKind = anOper->KindOfShape( myObj, anInts, aDbls );
+ aKind = anOper->KindOfShape( myObj.get(), anInts, aDbls );
}
catch( const SALOME::SALOME_Exception& e ) {
SalomeApp_Tools::QtCatchCorbaException( e );
return aKindStr;
}
+
+void MeasureGUI_WhatisDlg::SelectionIntoArgument()
+{
+ myObj.nullify();
+ myObj = getSelected( TopAbs_SHAPE );
+
+ if (!myObj) {
+ mySelEdit->setText("");
+ processObject();
+ erasePreview();
+ return;
+ }
+
+ mySelEdit->setText(GEOMBase::GetName(myObj.get()));
+ processObject();
+ redisplayPreview();
+}
\ No newline at end of file
protected:
// redefined from GEOMBase_Helper and MeasureGUI_Skeleton
virtual void processObject();
+ virtual void activateSelection();
+ virtual void SelectionIntoArgument();
protected slots:
virtual void ClickOnProperties();
aMap.Add( GEOM_EDGE );
aMap.Add( GEOM_WIRE );
globalSelection( aMap );
+ std::list<int> needTypes;
+ needTypes.push_back( TopAbs_VERTEX ), needTypes.push_back( TopAbs_EDGE ), needTypes.push_back( TopAbs_WIRE );
+ localSelection(GEOM::GEOM_Object::_nil(), needTypes );
break;
}
case PROJ_ON_WIRE: