From: dmv Date: Wed, 30 Jun 2010 10:05:22 +0000 (+0000) Subject: IPAL21823 TC6.1.0: create point by intersection by 2 lines X-Git-Tag: TRIPOLI_301 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=a4f721445b968711437fb880f75a0926f875239b;p=modules%2Fgeom.git IPAL21823 TC6.1.0: create point by intersection by 2 lines --- diff --git a/src/BasicGUI/BasicGUI_PointDlg.cxx b/src/BasicGUI/BasicGUI_PointDlg.cxx index ef68dfb54..dc8ff2693 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" ) ) ); @@ -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(); } diff --git a/src/BasicGUI/BasicGUI_PointDlg.h b/src/BasicGUI/BasicGUI_PointDlg.h index 367391047..abb2eab36 100644 --- a/src/BasicGUI/BasicGUI_PointDlg.h +++ b/src/BasicGUI/BasicGUI_PointDlg.h @@ -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; 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()) {