X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Profile.h;h=5bcc450da7a182a4503ace453f15920e1c00e90d;hb=976cf1e8bd38b1d0833a607803ae3ba242a37742;hp=13c6f6198f0c96bd6ceeaa05d271d1c1415bcd7b;hpb=7e825ec456c9331ef0df1cb59865cc55f0d8516a;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Profile.h b/src/HYDROData/HYDROData_Profile.h index 13c6f619..5bcc450d 100644 --- a/src/HYDROData/HYDROData_Profile.h +++ b/src/HYDROData/HYDROData_Profile.h @@ -1,3 +1,20 @@ +// 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 +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// #ifndef HYDROData_Profile_HeaderFile #define HYDROData_Profile_HeaderFile @@ -8,7 +25,6 @@ DEFINE_STANDARD_HANDLE(HYDROData_Profile, HYDROData_Object) -class gp_XY; class gp_XYZ; class OSD_File; class Handle(HYDROData_Document); @@ -44,6 +60,12 @@ public: */ HYDRODATA_EXPORT virtual const ObjectKind GetKind() const { return KIND_PROFILE; } + /** + * Dump object to Python script representation. + */ + HYDRODATA_EXPORT virtual QStringList DumpToPython( const QString& thePyScriptPath, + MapOfTreatedObjects& theTreatedObjects ) const; + /** * Returns the top shape of the object. */ @@ -59,13 +81,22 @@ public: * Call this method whenever you made changes in data structure. * This method does not called automatically since it may take a very long time. */ - HYDRODATA_EXPORT virtual void UpdateShape3D(); + HYDRODATA_EXPORT virtual void Update(); + + HYDRODATA_EXPORT virtual void UpdateLocalCS( double theDx, double theDy ); /** - * Dump object to Python script representation. + * Returns default filling color for new profile. */ - HYDRODATA_EXPORT virtual QStringList DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const; + HYDRODATA_EXPORT virtual QColor DefaultFillingColor() const; + /** + * Returns default border color for new profile. + */ + HYDRODATA_EXPORT virtual QColor DefaultBorderColor() const; + + +public: /** * Check profile data and returns true if profile is valid. @@ -75,6 +106,11 @@ public: */ HYDRODATA_EXPORT bool IsValid() const; + /** + * Invalidate profile first and last points. + */ + HYDRODATA_EXPORT void Invalidate(); + public: // Public methods to work with profile points. @@ -83,28 +119,29 @@ public: * Set first(left) point for profile. * \param thePoint the point */ - HYDRODATA_EXPORT void SetFirstPoint( const gp_XY& thePoint ); + HYDRODATA_EXPORT void SetLeftPoint( const gp_XY& thePoint, bool IsConvertFromGlobal = false ); /** * Returns first(left) point of profile. * \param thePoint[out] profile first point * \return true if point has been set */ - HYDRODATA_EXPORT bool GetFirstPoint( gp_XY& thePoint ) const; + HYDRODATA_EXPORT bool GetLeftPoint( gp_XY& thePoint, bool IsConvertToGlobal = false, + bool CanUseDefault = false ) const; /** * Set last(right) point for profile. * \param thePoint the point */ - HYDRODATA_EXPORT void SetLastPoint( const gp_XY& thePoint ); + HYDRODATA_EXPORT void SetRightPoint( const gp_XY& thePoint, bool IsConvertFromGlobal = false ); /** * Returns last(right) point of profile. * \param thePoint[out] profile last point * \return true if point has been set */ - HYDRODATA_EXPORT bool GetLastPoint( gp_XY& thePoint ) const; - + HYDRODATA_EXPORT bool GetRightPoint( gp_XY& thePoint, bool IsConvertToGlobal = false, + bool CanUseDefault = false ) const; /** * Returns object which store parametric presentation of profile points. @@ -129,13 +166,13 @@ public: * Replace current profile parametric points by new one. * \param thePoints the list with new points in parametric form */ - HYDRODATA_EXPORT void SetParametricPoints( const CurveCreator::Coordinates& theCoords ); + HYDRODATA_EXPORT void SetParametricPoints( const HYDROData_ProfileUZ::PointsList& thePoints ); /** * Returns profile points in parametric form. * \return points list */ - HYDRODATA_EXPORT CurveCreator::Coordinates GetParametricPoints() const; + HYDRODATA_EXPORT HYDROData_ProfileUZ::PointsList GetParametricPoints() const; /** @@ -143,15 +180,28 @@ public: * First and last points will be automatically updated. * \param thePoints the list with new profile points */ - HYDRODATA_EXPORT void SetProfilePoints( const ProfilePoints& thePoints ); + HYDRODATA_EXPORT void SetProfilePoints( const ProfilePoints& thePoints, bool IsConvertFromGlobal = true ); /** * Returns profile points. * Empty sequence is returned if first or last point was not set. * \return profile points list */ - HYDRODATA_EXPORT ProfilePoints GetProfilePoints() const; + HYDRODATA_EXPORT ProfilePoints GetProfilePoints( bool IsConvertToGlobal = false, + bool CanUseDefaultLeftRight = false ) const; + + + /** + * Return profile point with minimal Z value. + * \return non-parametric profile point + */ + HYDRODATA_EXPORT ProfilePoint GetBottomPoint() const; + /** + * Return profile middle point. + * \return non-parametric profile point + */ + HYDRODATA_EXPORT ProfilePoint GetMiddlePoint( bool CanUseDefault ) const; public: // Public methods to work with files. @@ -173,38 +223,38 @@ public: * - georeferenced presentation of profile (3 points in line X,Y,Z) * Create as many objects as many profiles in the file are defined. * \param theFileName the path to file - * \return \c true if file has been successfully read + * \return \c number of successfully imported profiles */ - HYDRODATA_EXPORT static bool ImportFromFile( const Handle(HYDROData_Document)& theDoc, - const TCollection_AsciiString& theFileName ); + HYDRODATA_EXPORT static int ImportFromFile( const Handle(HYDROData_Document)& theDoc, + const TCollection_AsciiString& theFileName, + NCollection_Sequence& theBadProfilesIds ); /** * Imports Profile data from file. * \param theFileName the path to file + * \param theIsRead set to true if at least one non empty string was read from file * \return \c true if file has been successfully read */ - HYDRODATA_EXPORT virtual bool ImportFromFile( const TCollection_AsciiString& theFileName ); + HYDRODATA_EXPORT virtual bool ImportFromFile( const TCollection_AsciiString& theFileName, + bool* theIsRead = 0 ); /** * Imports Profile data from file. * \param theFile file to read + * \param theIsRead set to true if at least one non empty string was read from file * \return \c true if file has been successfully read */ - HYDRODATA_EXPORT virtual bool ImportFromFile( OSD_File& theFile ); - -private: + HYDRODATA_EXPORT virtual bool ImportFromFile( OSD_File& theFile, + bool* theIsRead = 0 ); +protected: /** - * Imports Profile data from parametric file. + * Checks and if necessary create child 3D object. + * Reimplemented to prevent creation of 3D child object. */ - bool importParametricFile( OSD_File& theFile, - CurveCreator::Coordinates& thePoints ); + HYDRODATA_EXPORT virtual void checkAndSetObject3D() {} - /** - * Imports Profile data from Georeferenced file. - */ - bool importGeoreferencedFile( OSD_File& theFile, - ProfilePoints& thePoints ); + TopoDS_Shape CreateProfileWire( bool canUseDefaultPoints ) const; protected: @@ -214,12 +264,12 @@ protected: * Creates new object in the internal data structure. Use higher level objects * to create objects with real content. */ - HYDROData_Profile(); + HYDRODATA_EXPORT HYDROData_Profile(); /** * Destructs properties of the object and object itself, removes it from the document. */ - ~HYDROData_Profile(); + HYDRODATA_EXPORT ~HYDROData_Profile(); }; #endif