-// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+
// GEOM GEOMGUI : GUI for Geometry component
// File : BasicGUI_MarkerDlg.cxx
// Author : Sergey LITONIN, Open CASCADE S.A.S. (sergey.litonin@opencascade.com)
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100 );
for ( DataMap::iterator anIter = myData.begin(); anIter != myData.end(); ++anIter ) {
- initSpinBox( anIter.value(), COORD_MIN, COORD_MAX, step, 6 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( anIter.value(), COORD_MIN, COORD_MAX, step, "length_precision" );
connect( anIter.value(), SIGNAL( valueChanged( double ) ),
this, SLOT( onValueChanged( double ) ) );
}
aSelMgr->selectedObjects(aSelList);
if (aSelList.Extent() == 1) {
- Standard_Boolean aRes = Standard_False;
Handle(SALOME_InteractiveObject) anIO = aSelList.First();
- GEOM::GEOM_Object_var aSelectedObj = GEOMBase::ConvertIOinGEOMObject(anIO, aRes);
+ GEOM::GEOM_Object_var aSelectedObj = GEOMBase::ConvertIOinGEOMObject( anIO );
- if ( aRes && !aSelectedObj->_is_nil() ) {
+ if ( !aSelectedObj->_is_nil() ) {
TopoDS_Shape aShape;
if ( GEOMBase::GetShape( aSelectedObj, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
// Existing LCS selected
aSelMgr->selectedObjects(aSelList);
if (aSelList.Extent() == 1) {
- Standard_Boolean aRes = Standard_False;
Handle(SALOME_InteractiveObject) anIO = aSelList.First();
- GEOM::GEOM_Object_var aSelectedObj = GEOMBase::ConvertIOinGEOMObject( anIO, aRes );
+ GEOM::GEOM_Object_var aSelectedObj = GEOMBase::ConvertIOinGEOMObject( anIO );
- if ( !CORBA::is_nil( aSelectedObj ) && aRes ) {
+ if ( !CORBA::is_nil( aSelectedObj ) ) {
QString aName = GEOMBase::GetName( aSelectedObj );
if ( getConstructorId() == 1 ) { // by shape position
TColStd_IndexedMapOfInteger aMap;
aSelMgr->GetIndexes( anIO, aMap );
- if ( !aMap.IsEmpty() ) {
+ if ( aMap.Extent() == 1 ) { // Local Selection
int anIndex = aMap( 1 );
if ( aNeedType == TopAbs_EDGE )
- aName += QString( "_edge_%1" ).arg( anIndex );
+ aName += QString( ":edge_%1" ).arg( anIndex );
else
- aName += QString( "_vertex_%1" ).arg( anIndex );
-
- TopTools_IndexedMapOfShape aShapes;
- TopExp::MapShapes( aShape, aShapes );
- aShape = aShapes.FindKey( anIndex );
+ aName += QString( ":vertex_%1" ).arg( anIndex );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObj, aName );
+ if ( aFindedObject->_is_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
+ aSelectedObj = aShapesOp->GetSubShape( aSelectedObj, anIndex );
+ }
+ else {
+ aSelectedObj = aFindedObject; // get Object from study
+ }
}
-
+ else { // Global Selection
+ if ( aShape.ShapeType() != aNeedType ) {
+ aSelectedObj = GEOM::GEOM_Object::_nil();
+ aName = "";
+ }
+ }
+
if ( myEditCurrentArgument == Group2->LineEdit1 ) {
- if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX ) {
- myPoint = aSelectedObj;
- myEditCurrentArgument->setText( aName );
- if (Group2->LineEdit2->text() == "")
+ myPoint = aSelectedObj;
+ myEditCurrentArgument->setText( aName );
+ if (!myPoint->_is_nil() && Group2->LineEdit2->text() == "")
Group2->PushButton2->click();
- }
}
else if (myEditCurrentArgument == Group2->LineEdit2) {
- if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_EDGE ) {
- myVectorX = aSelectedObj;
- myEditCurrentArgument->setText( aName );
- if (Group2->LineEdit3->text() == "")
- Group2->PushButton3->click();
- }
+ myVectorX = aSelectedObj;
+ myEditCurrentArgument->setText( aName );
+ if (!myVectorX->_is_nil() && Group2->LineEdit3->text() == "")
+ Group2->PushButton3->click();
}
else if ( myEditCurrentArgument == Group2->LineEdit3 ) {
- if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_EDGE ) {
- myVectorY = aSelectedObj;
- myEditCurrentArgument->setText( aName );
- if (Group2->LineEdit1->text() == "")
+ myVectorY = aSelectedObj;
+ myEditCurrentArgument->setText( aName );
+ if (!myVectorX->_is_nil() && Group2->LineEdit1->text() == "")
Group2->PushButton1->click();
- }
}
}
}