X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_TopoCurve.h;h=5bba3b28faa2ecee23acdb9e8920ee7dbddb3953;hb=fce3f1240b6161d7cb837344078e5943b90eca65;hp=abafe899c66d5ae0a2b91a4f5de3d4394d30c5fa;hpb=c9bbaf3e757559646f7b9aefea06ef56fe919f0e;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_TopoCurve.h b/src/HYDROData/HYDROData_TopoCurve.h index abafe899..5bba3b28 100644 --- a/src/HYDROData/HYDROData_TopoCurve.h +++ b/src/HYDROData/HYDROData_TopoCurve.h @@ -1,8 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// +// Copyright (C) 2014-2015 EDF-R&D // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either @@ -24,16 +20,23 @@ #define HYDRODATA_TOPOCURVE_H #include -#include +#include #include #include #include #include #include +#include +#include class TopoDS_Wire; -//! The type represents a 1 monifold connected topo curve +//! Get the parameter of the projected point on the curve, and return the distance of the original point +double ProjectPointToCurve(const gp_XYZ& thePoint, + const Adaptor3d_Curve& theCurve, + double& theParameter); + +//! The type represents a 1 manifold connected topo curve //! with forward orientation. class HYDROData_TopoCurve { @@ -45,7 +48,7 @@ public: HYDROData_TopoCurve(const TopoDS_Edge& theEdge) {myEdges.push_back(theEdge);} //! Initializes the curve by the wire. - //! Returns 'false' if the wire is not 1 monifold or + //! Returns 'false' if the wire is not 1 manifold or //! is disconnected or is empty. HYDRODATA_EXPORT bool Initialize(const TopoDS_Wire& theWire); @@ -66,9 +69,15 @@ public: //! Returns the curve edges. const std::list& Edges() const {return myEdges;} + //! Returns the curve edges. + std::list& Edges() {return myEdges;} + //! Cuts the curve in the given parameter of the given edge and //! fills the cut part. - HYDRODATA_EXPORT void Cut( + //! Returns 'true' if: + //! - the curve is open and was split into two parts or + //! - the curve is closed and was cut into an open curve. + HYDRODATA_EXPORT bool Cut( const std::list::iterator& theEdgePosition, const double theParameter, HYDROData_TopoCurve& theCurve); @@ -84,7 +93,7 @@ public: //! Cuts the curve at the parameters. //! Each parameter vector list corresponds to the curve edge and //! is ordered in the ascending order. - HYDRODATA_EXPORT void Cut( + HYDRODATA_EXPORT bool Cut( const std::deque >& theParameters, std::deque& theCurves) const; @@ -146,7 +155,7 @@ public: std::deque& theCurves) { HYDROData_TopoCurve aCurve; - if (!aCurve.Initialize(theWire)) + if (aCurve.Initialize(theWire)) { return aCurve.Connect(theTolerance, theCurves); } @@ -156,13 +165,15 @@ public: //! Creates a B-spline piecewise curve corresponding to the curve //! and using the deflection. - HYDRODATA_EXPORT bool BSplinePiecewiseCurve( + //! Returns the piece count. + //! Returns 0 in the case of any error. + HYDRODATA_EXPORT int BSplinePiecewiseCurve( const double theDeflection, HYDROData_TopoCurve& theCurve) const; //! Calculates the values of the curve in its knots. - //! Returns 'false' if a curve edge has a nonidentity location or a nonforward + //! Returns 'false' if a curve edge has a non-identity location or a non-forward //! orientation or has no a B-spline representation. - HYDRODATA_EXPORT bool ValuesInKnots(std::deque& theValues) const; + HYDRODATA_EXPORT bool ValuesInKnots(std::list& theValues) const; private: //! Transfers the edges of the parameter to this curve end.