#include <HYDROGUI_UpdateFlags.h>
#include <HYDROGUI_Shape.h>
#include <HYDROData_PolylineOperator.h>
+#include <HYDROData_Document.h>
#include <LightApp_Application.h>
#include <OCCViewer_ViewModel.h>
#include <OCCViewer_ViewManager.h>
+#include <SUIT_Desktop.h>
+#include <SUIT_MessageBox.h>
#include <gp_Pnt2d.hxx>
#include <BRepLib_MakeVertex.hxx>
#include <BRep_Builder.hxx>
if ( !aPanel )
return false;
+ //TODO: QString aName = aPanel->GetResultName();
Handle( HYDROData_PolylineXY ) aMainPolyline = aPanel->GetMainPolyline();
Handle( HYDROData_PolylineXY ) aToolPolyline = aPanel->GetToolPolyline();
HYDROData_SequenceOfObjects aPolylinesList = aPanel->GetPolylines();
gp_Pnt2d aPoint = aPanel->GetPoint();
+ double aTolerance = 1E-2; //TODO
HYDROData_PolylineOperator anOp;
switch( aPanel->GetMode() )
{
case HYDROGUI_SplitPolylinesDlg::ByPoint:
- anOp.Split( aMainPolyline, aPoint );
+ anOp.Split( doc(), aMainPolyline, aPoint, aTolerance );
break;
case HYDROGUI_SplitPolylinesDlg::ByTool:
- anOp.Split( aMainPolyline, aToolPolyline );
+ {
+ bool isIntersected = false;
+ anOp.Split( doc(), aMainPolyline, aToolPolyline, aTolerance, isIntersected);
+
+ if (!isIntersected)
+ {
+ const QString aTitle = tr("SPLIT_POLYLINE_BY_TOOL_WARNING_TITLE");
+ const QString aMsg = tr("SPLIT_POLYLINE_BY_TOOL_WARNING_MSG");
+ SUIT_MessageBox::warning(module()->getApp()->desktop(), aTitle, aMsg);
+ }
break;
+ }
case HYDROGUI_SplitPolylinesDlg::Split:
- anOp.Split( aPolylinesList );
+ anOp.Split( doc(), aPolylinesList, aTolerance );
break;
}
{
gp_Pnt2d aPnt = aPanel->GetPoint();
TopoDS_Vertex aVertex = BRepLib_MakeVertex( gp_Pnt( aPnt.X(), aPnt.Y(), 0.0 ) );
- aBB.Add( aCmp, aPanel->GetMainPolyline()->GetShape() );
+ if( !aPanel->GetMainPolyline().IsNull() )
+ aBB.Add( aCmp, aPanel->GetMainPolyline()->GetShape() );
aBB.Add( aCmp, aVertex );
break;
}
case HYDROGUI_SplitPolylinesDlg::ByTool:
{
- aBB.Add( aCmp, aPanel->GetMainPolyline()->GetShape() );
- aBB.Add( aCmp, aPanel->GetToolPolyline()->GetShape() );
+ if( !aPanel->GetMainPolyline().IsNull() )
+ aBB.Add( aCmp, aPanel->GetMainPolyline()->GetShape() );
+ if( !aPanel->GetToolPolyline().IsNull() )
+ aBB.Add( aCmp, aPanel->GetToolPolyline()->GetShape() );
break;
}
case HYDROGUI_SplitPolylinesDlg::Split: