This operation returns the angle in degrees between two lines or linear edges.
+\n The appropriate "local" selection is automatically switched on. If there are several entities of allowed types under the mouse cursor, first of them (top-level one) is highlighted.
+Press <CTRL> button and scroll the mouse wheel to switch between different available shapes that are pointed by the mouse cursor. The corresponding entities are highlighted in the viewer.
+Press left mouse button to select appropriate object to the dialog box.
+
\image html angle.png
If both objects are <b>vectors</b>, the angle is computed in accordance with their orientations, otherwise the minimum angle is computed.
This operation returns Length, Surface and Volume properties for the selected
geometrical object.
+\n The appropriate "local" selection is automatically switched on. If there are several entities of allowed types under the mouse cursor, first of them (top-level one) is highlighted.
+Press <CTRL> button and scroll the mouse wheel to switch between different available shapes that are pointed by the mouse cursor. The corresponding entities are highlighted in the viewer.
+Press left mouse button to select appropriate object to the dialog box.
+
\image html neo-basicprop.png
\n<b>TUI Command:</b> <em>geompy.BasicProperties(Shape),</em> where
This operation performs precise computation of bounding box for the selected geometrical object and displays its dimensions.
+\n The appropriate "local" selection is automatically switched on. If there are several entities of allowed types under the mouse cursor, first of them (top-level one) is highlighted.
+Press <CTRL> button and scroll the mouse wheel to switch between different available shapes that are pointed by the mouse cursor. The corresponding entities are highlighted in the viewer.
+Press left mouse button to select appropriate object to the dialog box.
+
\image html measures5.png
The coordinates of two corners of its bounding box are shown in the table.
This operation calculates and returns the coordinates of the gravity center for
the selected geometrical object.
+\n The appropriate "local" selection is automatically switched on. If there are several entities of allowed types under the mouse cursor, first of them (top-level one) is highlighted.
+Press <CTRL> button and scroll the mouse wheel to switch between different available shapes that are pointed by the mouse cursor. The corresponding entities are highlighted in the viewer.
+Press left mouse button to select appropriate object to the dialog box.
+
\image html measures3.png
Press \b Apply or <b>Apply and Close</b> button to publish the \b Point in the study.
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).
+The appropriate "local" selection is automatically switched on. If there are several entities of allowed types under the mouse cursor, first of them (top-level one) is highlighted.
+Press <CTRL> button and scroll the mouse wheel to switch between different available shapes that are pointed by the mouse cursor. The corresponding entities are highlighted in the viewer. Press left mouse button to select appropriate object to the dialog box.
+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
This operation returns the axial moments of inertia for the selected geometrical object.
+\n The appropriate "local" selection is automatically switched on. If there are several entities of allowed types under the mouse cursor, first of them (top-level one) is highlighted.
+Press <CTRL> button and scroll the mouse wheel to switch between different available shapes that are pointed by the mouse cursor. The corresponding entities are highlighted in the viewer.
+Press left mouse button to select appropriate object to the dialog box.
+
\image html measures4.png
The table displays:
This operation returns the minimum distance between two geometrical objects.
+\n The appropriate "local" selection is automatically switched on. If there are several entities of allowed types under the mouse cursor, first of them (top-level one) is highlighted.
+Press <CTRL> button and scroll the mouse wheel to switch between different available shapes that are pointed by the mouse cursor. The corresponding entities are highlighted in the viewer.
+Press left mouse button to select appropriate object to the dialog box.
+
\image html distance.png
The query for minimum distance can find one or more solutions, or even an infinite set of solutions.
This operation returns the maximum and the minimum tolerance for the selected
geometrical object.
+\n The appropriate "local" selection is automatically switched on. If there are several entities of allowed types under the mouse cursor, first of them (top-level one) is highlighted.
+Press <CTRL> button and scroll the mouse wheel to switch between different available shapes that are pointed by the mouse cursor. The corresponding entities are highlighted in the viewer.
+Press left mouse button to select appropriate object to the dialog box.
+
\image html new-tolerance.png
The table displays \b Min and \b Max tolerance values for \b Face, \b Edge and \b Vertex tolerance.
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();
};
//================================================================
// 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 );
myEditCurrentArgument = GroupPoints->LineEdit1;
GroupPoints->LineEdit1->setReadOnly(true);
- globalSelection(GEOM_COMPOUND);
+ globalSelection();
+ localSelection(GEOM::GEOM_Object::_nil(), TopAbs_COMPOUND );
int SpecificStep1 = 1;
double SpecificStep2 = 0.0001;
GroupPoints->LineEdit1->setFocus();
myEditCurrentArgument = GroupPoints->LineEdit1;
globalSelection(GEOM_COMPOUND);
+ localSelection(GEOM::GEOM_Object::_nil(), TopAbs_COMPOUND );
this->SelectionIntoArgument();
}
}
GEOMBase_Skeleton::ActivateThisDialog();
connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
- globalSelection(GEOM_COMPOUND);
+ globalSelection(GEOM_COMPOUND);
+ localSelection(GEOM::GEOM_Object::_nil(), TopAbs_COMPOUND );
processPreview();
}
return true;
}
+
+//=================================================================================
+// function : addSubshapesToStudy
+// purpose : virtual method to add new SubObjects if local selection
+//=================================================================================
+void GenerationGUI_FillingDlg::addSubshapesToStudy()
+{
+ GEOMBase::PublishSubObject( myCompound.get() );
+}
\ No newline at end of file
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;
};
myGrp->ListBox2->clear();
erasePreview();
- if (myObj->_is_nil())
+ if (!myObj)
return;
QString aMsg ("");
bool isGood = false, isFailed = false;
int nbPairs = 0;
try {
- isGood = anOper->CheckSelfIntersections(myObj, myInters);
+ isGood = anOper->CheckSelfIntersections(myObj.get(), myInters);
nbPairs = myInters->length()/2;
if (nbPairs*2 != myInters->length()) {
isFailed = true;
QStringList aSubShapeList;
TopoDS_Shape aSelShape;
- if (!myObj->_is_nil() && GEOMBase::GetShape(myObj, aSelShape)) {
+ if (myObj && GEOMBase::GetShape(myObj.get(), aSelShape)) {
TopTools_IndexedMapOfShape anIndices;
TopExp::MapShapes(aSelShape, anIndices);
TopoDS_Shape aSelShape;
TopoDS_Shape aSubShape;
TopTools_IndexedMapOfShape anIndices;
- if (!myObj->_is_nil() && GEOMBase::GetShape(myObj, aSelShape)) {
+ if (myObj && GEOMBase::GetShape(myObj.get(), aSelShape)) {
SALOME_Prs* aPrs = 0;
TopExp::MapShapes(aSelShape, anIndices);
QList<int>::iterator it;
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();
+}
\ No newline at end of file
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;
//=================================================================================
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 );