Salome HOME
IPAL21823 TC6.1.0: create point by intersection by 2 lines TRIPOLI_301 TRIPOLI_302 TRIPOLI_303 V6_1_0 V6_1_0rc1 V6_1_0rc2 V6_1_0rc3
authordmv <dmv@opencascade.com>
Wed, 30 Jun 2010 10:05:22 +0000 (10:05 +0000)
committerdmv <dmv@opencascade.com>
Wed, 30 Jun 2010 10:05:22 +0000 (10:05 +0000)
src/BasicGUI/BasicGUI_PointDlg.cxx
src/BasicGUI/BasicGUI_PointDlg.h
src/GEOMImpl/GEOMImpl_PointDriver.cxx

index ef68dfb54d07a0512f9609b62631f612e7f1bdaf..dc8ff2693b106adeb54f76754e5fa6cfd3843fa9 100644 (file)
@@ -76,7 +76,8 @@
 //=================================================================================
 BasicGUI_PointDlg::BasicGUI_PointDlg( GeometryGUI* theGeometryGUI, QWidget* parent,
                                       bool modal, Qt::WindowFlags fl )
-  : GEOMBase_Skeleton( theGeometryGUI, parent, modal, fl )
+  : GEOMBase_Skeleton( theGeometryGUI, parent, modal, fl ),
+    myBusy ( false )
 {
   QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_POINT") ) );
   QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_POINT_EDGE" ) ) );
@@ -532,6 +533,8 @@ void BasicGUI_PointDlg::SelectionIntoArgument()
       if ( aShape.IsNull() || aShape.ShapeType() != myNeedType)
         return;
 
+      myBusy = true;
+
       if ( id == GEOM_POINT_XYZ ) {
         gp_Pnt aPnt = BRep_Tool::Pnt( TopoDS::Vertex( aShape ) );
         GroupXYZ->SpinBox_DX->setValue( aPnt.X() );
@@ -572,6 +575,7 @@ void BasicGUI_PointDlg::SelectionIntoArgument()
         myFace = aSelectedObject;
         GroupOnSurface->LineEdit1->setText( aName );
       }
+      myBusy = false;
     }
   }
 
@@ -638,6 +642,10 @@ void BasicGUI_PointDlg::SetEditCurrentArgument()
     GroupLineIntersection->LineEdit2->setEnabled(true);
   }
   send->setDown(true);
+
+  if ( ( send == GroupLineIntersection->PushButton1 ||
+         send == GroupLineIntersection->PushButton2 ) && !myBusy )
+    SelectionIntoArgument();
 }
 
 
index 3673910473c230041caa1b8e332a01df28351415..abb2eab369994f7c711d6e0aeb7f196352a37416 100644 (file)
@@ -81,6 +81,8 @@ private:
   GEOM::GEOM_Object_var              myRefPoint; 
   GEOM::GEOM_Object_var              myLine1; 
   GEOM::GEOM_Object_var              myLine2;
+
+  bool                               myBusy;
   
   DlgRef_3Spin*                      GroupXYZ;
   DlgRef_1Sel3Spin*                  GroupRefPoint;
index 38065f47f8e75a9509d3ba2ed55450dd426e2183..8af5452e656926f7ee8b4e056f7339b0019e7109 100644 (file)
@@ -190,6 +190,10 @@ Standard_Integer GEOMImpl_PointDriver::Execute(TFunction_Logbook& log) const
       Standard_TypeMismatch::Raise
         ("Creation Point On Lines Intersection Aborted : Line shape is not an edge or wire");
     }
+
+    if (aRefShape1.IsSame(aRefShape2))
+      Standard_ConstructionError::Raise("The lines to make intersection must be different");
+
     //Calculate Lines Intersection Point
     BRepExtrema_DistShapeShape dst (aRefShape1, aRefShape2);
     if (dst.IsDone()) {