From 47b96b45650b564dad3701cc9071109bfae78ec6 Mon Sep 17 00:00:00 2001 From: vsr Date: Fri, 8 Oct 2010 12:11:39 +0000 Subject: [PATCH] Merge fixes from V6_1_0 --- src/BasicGUI/BasicGUI_PointDlg.cxx | 10 +++++++++- src/BasicGUI/BasicGUI_PointDlg.h | 2 ++ src/GEOMImpl/GEOMImpl_PointDriver.cxx | 4 ++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/BasicGUI/BasicGUI_PointDlg.cxx b/src/BasicGUI/BasicGUI_PointDlg.cxx index 1f6993050..90af070cd 100644 --- a/src/BasicGUI/BasicGUI_PointDlg.cxx +++ b/src/BasicGUI/BasicGUI_PointDlg.cxx @@ -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" ) ) ); @@ -531,6 +532,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() ); @@ -571,6 +574,7 @@ void BasicGUI_PointDlg::SelectionIntoArgument() myFace = aSelectedObject; GroupOnSurface->LineEdit1->setText( aName ); } + myBusy = false; } } @@ -637,6 +641,10 @@ void BasicGUI_PointDlg::SetEditCurrentArgument() GroupLineIntersection->LineEdit2->setEnabled(true); } send->setDown(true); + + if ( ( send == GroupLineIntersection->PushButton1 || + send == GroupLineIntersection->PushButton2 ) && !myBusy ) + SelectionIntoArgument(); } diff --git a/src/BasicGUI/BasicGUI_PointDlg.h b/src/BasicGUI/BasicGUI_PointDlg.h index 367391047..5f78bcf78 100644 --- a/src/BasicGUI/BasicGUI_PointDlg.h +++ b/src/BasicGUI/BasicGUI_PointDlg.h @@ -82,6 +82,8 @@ private: GEOM::GEOM_Object_var myLine1; GEOM::GEOM_Object_var myLine2; + bool myBusy; + DlgRef_3Spin* GroupXYZ; DlgRef_1Sel3Spin* GroupRefPoint; DlgRef_1Sel1Spin* GroupOnCurve; diff --git a/src/GEOMImpl/GEOMImpl_PointDriver.cxx b/src/GEOMImpl/GEOMImpl_PointDriver.cxx index 38065f47f..8af5452e6 100644 --- a/src/GEOMImpl/GEOMImpl_PointDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_PointDriver.cxx @@ -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()) { -- 2.39.2