#include <HYDROData_Document.h>
#include <HYDROData_TopoCurve.h>
+#ifndef LIGHT_MODE
#include <CurveCreator_Utils.hxx>
+#endif
#include <BRepAdaptor_Curve.hxx>
#include <BRep_Builder.hxx>
#include <TopExp_Explorer.hxx>
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
#include <QString>
+#include <Geom_BSplineCurve.hxx>
template<class T> void append( std::vector<T>& theList, const std::vector<T>& theList2 )
{
bool HYDROData_PolylineOperator::Split( const Handle( HYDROData_Document )& theDoc,
const Handle( HYDROData_PolylineXY )& thePolyline,
const Handle( HYDROData_PolylineXY )& theTool,
- double theTolerance ) const
+ double theTolerance,
+ bool& theIsIntersected) const
{
if (thePolyline.IsNull() || theTool.IsNull())
{
HYDROData_SequenceOfObjects aSeq;
aSeq.Append( theTool );
- return split( theDoc, thePolyline, aSeq, theTolerance, -1 );
+ return split( theDoc, thePolyline, aSeq, theTolerance, -1, theIsIntersected);
}
bool HYDROData_PolylineOperator::Split( const Handle( HYDROData_Document )& theDoc,
for( int i=f; i<=l; i++ )
{
Handle( HYDROData_PolylineXY ) aPolyline = Handle( HYDROData_PolylineXY )::DownCast( thePolylines.Value( i ) );
- if( !split( theDoc, aPolyline, thePolylines, theTolerance, i ) )
+ bool isIntersected;
+ if( !split( theDoc, aPolyline, thePolylines, theTolerance, i, isIntersected) )
return false;
}
return true;
const Handle( HYDROData_PolylineXY )& thePolyline,
const HYDROData_SequenceOfObjects& theTools,
double theTolerance,
- int theIgnoreIndex ) const
+ int theIgnoreIndex,
+ bool& theIsIntersected) const
{
+ theIsIntersected = false;
+
if (thePolyline.IsNull())
{
return false;
}
std::deque<HYDROData_TopoCurve> aSplittedCurves;
- aCurve.Cut(aParams, aSplittedCurves);
+ theIsIntersected |= aCurve.Cut(aParams, aSplittedCurves);
std::deque<HYDROData_TopoCurve>::const_iterator aCIt =
aSplittedCurves.begin();
std::deque<HYDROData_TopoCurve>::const_iterator aLastCIt =
}
Handle(Geom_BSplineCurve) aBSpline2;
const bool isClosed = theCurve.IsClosed();
+#ifndef LIGHT_MODE
if (!CurveCreator_Utils::constructBSpline(aPs2, isClosed, aBSpline2))
+#endif
{
return -1;
}