#include <gp_Pnt2d.hxx>
#include <vector>
-class Handle( HYDROData_Document );
+class HYDROData_Document;
+class HYDROData_TopoCurve;
+class HYDROData_Object;
class HYDRODATA_EXPORT HYDROData_PolylineOperator
{
public:
bool Split( const Handle( HYDROData_Document )& theDoc,
- const TCollection_AsciiString& theNamePrefix,
const Handle( HYDROData_PolylineXY )& thePolyline,
- const gp_Pnt2d& thePoint ) const;
+ const gp_Pnt2d& thePoint,
+ double theTolerance ) const;
bool Split( const Handle( HYDROData_Document )& theDoc,
- const TCollection_AsciiString& theNamePrefix,
const Handle( HYDROData_PolylineXY )& thePolyline,
- const Handle( HYDROData_PolylineXY )& theTool ) const;
+ const Handle( HYDROData_PolylineXY )& theTool,
+ double theTolerance,
+ bool& theIsIntersected) const;
bool Split( const Handle( HYDROData_Document )& theDoc,
- const TCollection_AsciiString& theNamePrefix,
- const HYDROData_SequenceOfObjects& thePolylines );
+ const HYDROData_SequenceOfObjects& thePolylines,
+ double theTolerance );
bool Merge( const Handle( HYDROData_Document )& theDoc,
- const TCollection_AsciiString& theName,
- const HYDROData_SequenceOfObjects& thePolylines );
+ const QString& theName,
+ const HYDROData_SequenceOfObjects& thePolylines,
+ bool isConnectByNewSegment,
+ double theTolerance );
-protected:
- static std::vector<Handle( Geom2d_Curve )> GetCurves( const Handle( HYDROData_PolylineXY )& thePolyline );
+ static void GetWires(
+ const Handle( HYDROData_PolylineXY )& thePolyline,
+ std::vector<TopoDS_Wire>& theWires);
+
+ //! The method is intended to approximate the B-spline edge curve
+ //! by a 'Hydro' spline section.
+ //! Inserts the knot in the middle of each such B-spline piece that
+ //! the middle deflection is more than the required deflection and
+ //! more than the half of the maximal middle deflection.
+ //! Returns the initial maximal middle deflection.
+ //! Returns a negative value in the case of any error.
+ static double ReduceDeflection(
+ const double theDeflection,
+ HYDROData_TopoCurve& theCurve,
+ int& thePieceCount);
+
+ bool Extract( const Handle(HYDROData_Document)& theDocument,
+ const Handle(HYDROData_Object)& theObject );
- static std::vector<gp_Pnt2d> Intersection( const Handle( Geom2d_Curve )& theCurve,
- const Handle( Geom2d_Curve )& theTool );
+protected:
+ bool split( const Handle( HYDROData_Document )& theDoc,
+ const Handle( HYDROData_PolylineXY )& thePolyline,
+ const HYDROData_SequenceOfObjects& theTools,
+ double theTolerance,
+ int theIgnoreIndex,
+ bool& theIsIntersected) const;
- static std::vector<Handle( Geom2d_Curve )> Split( const Handle( Geom2d_Curve )& theCurve,
- const std::vector<gp_Pnt2d>& thePoints );
+ static void Split(
+ const TopoDS_Wire& theWire,
+ const gp_Pnt2d& thePoint,
+ double theTolerance,
+ std::vector<TopoDS_Shape>& theWires);
static bool CreatePolylines( const Handle( HYDROData_Document )& theDoc,
- const TCollection_AsciiString& theNamePrefix,
- const std::vector<Handle( Geom2d_Curve )>& theCurves );
+ const Handle( HYDROData_PolylineXY )& theOldPolyline,
+ const std::vector<TopoDS_Shape>& theShape,
+ bool isUseIndices );
};
#endif