]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
debug of local CS
authorasl <asl@opencascade.com>
Thu, 14 Aug 2014 07:15:08 +0000 (07:15 +0000)
committerasl <asl@opencascade.com>
Thu, 14 Aug 2014 07:15:08 +0000 (07:15 +0000)
21 files changed:
src/HYDROData/HYDROData_Bathymetry.cxx
src/HYDROData/HYDROData_Bathymetry.h
src/HYDROData/HYDROData_Confluence.cxx
src/HYDROData/HYDROData_Confluence.h
src/HYDROData/HYDROData_Document.cxx
src/HYDROData/HYDROData_Document.h
src/HYDROData/HYDROData_DummyObject3D.h
src/HYDROData/HYDROData_Entity.cxx
src/HYDROData/HYDROData_Entity.h
src/HYDROData/HYDROData_Obstacle.cxx
src/HYDROData/HYDROData_Obstacle.h
src/HYDROData/HYDROData_PolylineXY.cxx
src/HYDROData/HYDROData_PolylineXY.h
src/HYDROData/HYDROData_Profile.cxx
src/HYDROData/HYDROData_Profile.h
src/HYDROData/HYDROData_River.cxx
src/HYDROData/HYDROData_River.h
src/HYDROData/HYDROData_Zone.h
src/HYDROGUI/HYDROGUI_DataObject.cxx
src/HYDROGUI/HYDROGUI_Tool.cxx
src/HYDROPy/HYDROData_Document.sip

index e6968d61da9592c097a2b1c21e301943a2a16ebe..58d3a11cfd7c2103011225dbf3914bc45d9e6f9d 100644 (file)
@@ -520,3 +520,17 @@ Handle_HYDROData_PolylineXY HYDROData_Bathymetry::CreateBoundaryPolyline() const
 
   return aResult;
 }
+
+void HYDROData_Bathymetry::UpdateLocalCS( double theDx, double theDy )
+{
+  gp_XYZ aDelta( theDx, theDy, 0 );
+  AltitudePoints aPoints = GetAltitudePoints();
+  AltitudePoints::Iterator anIter( aPoints );
+  for ( int i = 0 ; anIter.More(); ++i, anIter.Next() )
+  {
+    AltitudePoint& aPoint = anIter.ChangeValue();
+    aPoint += aDelta;
+  }
+  SetAltitudePoints( aPoints );
+}
+
index 72ef41395ee1faed7c93450fc55c1b2744362754..cd8c306bffd744e286ae385cb24a24e56327ea3e 100644 (file)
@@ -115,6 +115,8 @@ public:
 
   HYDRODATA_EXPORT Handle_HYDROData_PolylineXY CreateBoundaryPolyline() const;
 
+  HYDRODATA_EXPORT virtual void UpdateLocalCS( double theDx, double theDy );
+
 private:
 
   /**
index 64883f888580fcb2d84d0d8e55b0e734d7265746..bf7ee295e82efe209f01863142be6b4a8f8a809b 100644 (file)
@@ -46,5 +46,10 @@ TopoDS_Shape HYDROData_Confluence::GetShape3D() const
   return getShape3D();
 }
 
+void HYDROData_Confluence::UpdateLocalCS( double theDx, double theDy )
+{
+  //TODO
+}
+
 
 
index 224b19e6b34e4ca5bc5267db56c90c22c140e093..f8f68af7dadded3f52034c4d7b3ed6ee65a5b40e 100644 (file)
@@ -44,6 +44,8 @@ public:
    */
   HYDRODATA_EXPORT virtual TopoDS_Shape GetShape3D() const;
 
+  HYDRODATA_EXPORT virtual void UpdateLocalCS( double theDx, double theDy );
+
 protected:
 
   friend class HYDROData_Iterator;
index 58e4f0e7b46af33b0403ba92b0080fbfca5a2db3..86d16b089d2686eb1e724daf1a5b521cef3e8d19 100644 (file)
@@ -9,7 +9,6 @@
 
 #include <TDF_Delta.hxx>
 
-#include <gp_Pnt2d.hxx>
 #include <gp_Pnt.hxx>
 
 #include <QFile>
@@ -203,6 +202,11 @@ bool HYDROData_Document::DumpToPython( const QString& theFileName,
 
   bool aRes = true;
 
+  // Dump the local CS data to Python 
+  UpdateLCSFields();
+  QString aLCS = QString( "%1.SetLocalCS( %2, %3 )" ).arg( GetDocPyName() ).arg( myLX ).arg( myLY );
+  HYDROData_Tool::WriteStringsToFile( aFile, QStringList() << aLCS );
+
   // Dump all model objects to Python script
   aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_IMAGE );
   aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_POLYLINEXY );
@@ -677,7 +681,7 @@ TDF_Label HYDROData_Document::LabelOfLocalCS() const
   return myDoc->Main().FindChild(TAG_LOCAL_CS);
 }
 
-gp_Pnt2d HYDROData_Document::GetLocalCS() const
+void HYDROData_Document::GetLocalCS( double& theLX, double& theLY ) const
 {
   TDF_Label aLocalCSLab = LabelOfLocalCS();
 
@@ -685,35 +689,58 @@ gp_Pnt2d HYDROData_Document::GetLocalCS() const
   if( aLocalCSLab.FindAttribute( TDataXtd_Position::GetID(), aLocalCS ) )
   {
     gp_Pnt aLocalCS3d = aLocalCS->GetPosition();
-    return gp_Pnt2d( aLocalCS3d.X(), aLocalCS3d.Y() );
+    theLX = aLocalCS3d.X();
+    theLY = aLocalCS3d.Y();
   }
   else
-    return DEFAULT_LOCAL_CS;
+  {
+    theLX = DEFAULT_LOCAL_CS.X();
+    theLY = DEFAULT_LOCAL_CS.Y();
+  }
 }
 
-void HYDROData_Document::SetLocalCS( const gp_Pnt2d& theLocalCS )
+void HYDROData_Document::SetLocalCS( double theLX, double theLY )
 {
-  TDF_Label aLocalCSLab = LabelOfLocalCS();
+  UpdateLCSFields();
 
+  // update the local CS data in attribute
+  TDF_Label aLocalCSLab = LabelOfLocalCS();
   Handle( TDataXtd_Position ) aLocalCS;
   if( !aLocalCSLab.FindAttribute( TDataXtd_Position::GetID(), aLocalCS ) )
     aLocalCS = TDataXtd_Position::Set( aLocalCSLab );
 
-  gp_Pnt aLocalCS3d( theLocalCS.X(), theLocalCS.Y(), 0 );
+  gp_Pnt aLocalCS3d( theLX, theLY, 0 );
   aLocalCS->SetPosition( aLocalCS3d );
-  myLX = theLocalCS.X();
-  myLY = theLocalCS.Y();
+
+  // calculate delta for coordinates
+  double aDX = myLX - theLX;
+  double aDY = myLY - theLY;
+
+  // update the local CS data in internal fields
+  myLX = theLX;
+  myLY = theLY;
+
+  //update all objects in the document
+  HYDROData_Iterator anIterator( this, KIND_UNKNOWN );
+  for( ; anIterator.More(); anIterator.Next() )
+    anIterator.Current()->UpdateLocalCS( aDX, aDY );
+}
+
+void HYDROData_Document::UpdateLCSFields() const
+{
+  if( myLX >= 0 && myLY >= 0 )
+    return;
+
+  double aLX, aLY;
+  GetLocalCS( aLX, aLY );
+  HYDROData_Document* aThat = const_cast<HYDROData_Document*>( this );
+  aThat->myLX = aLX;
+  aThat->myLY = aLY;
 }
 
 void HYDROData_Document::Transform( double& X, double& Y, bool IsToLocalCS ) const
 {
-  if( myLX < 0 || myLY < 0 )
-  {
-    gp_Pnt2d aLCS = GetLocalCS();
-    HYDROData_Document* aThat = const_cast<HYDROData_Document*>( this );
-    aThat->myLX = aLCS.X();
-    aThat->myLY = aLCS.Y();
-  }
+  UpdateLCSFields();
   if( IsToLocalCS )
   {
     X -= myLX;
index 43eba79a60324eeaef2114b213f6051ea68b1646..7efc1d63137509f1a501e49763aee6c919105c83 100644 (file)
@@ -127,8 +127,8 @@ public:
   //! Removes the order of objects presentation.
   HYDRODATA_EXPORT void RemoveObjectsLayerOrder();
 
-  HYDRODATA_EXPORT gp_Pnt2d GetLocalCS() const;
-  HYDRODATA_EXPORT void SetLocalCS( const gp_Pnt2d& );
+  HYDRODATA_EXPORT void GetLocalCS( double&, double& ) const;
+  HYDRODATA_EXPORT void SetLocalCS( double, double );
   HYDRODATA_EXPORT void Transform( double& X, double& Y, bool IsToLocalCS ) const;
   HYDRODATA_EXPORT void Transform( gp_Pnt& thePnt, bool IsToLocalCS ) const;
   HYDRODATA_EXPORT void Transform( gp_XYZ& thePnt, bool IsToLocalCS ) const;
@@ -217,6 +217,7 @@ private:
                               const bool           theIsMultiFile,
                               MapOfTreatedObjects& theDumpedObjects,
                               const ObjectKind&    theObjectKind ) const;
+  void UpdateLCSFields() const;
 
 private:
   Handle(TDocStd_Document) myDoc; ///< OCAF document instance corresponding for keeping all persistent data
index e1222fa6a25c4592588dcc00e393017ffc2f5a8e..dcc0795b54df0b705f9cd77db22546860dbfa0d2 100644 (file)
@@ -71,7 +71,6 @@ public:
    */
   HYDRODATA_EXPORT virtual QColor GetBorderColor() const;
 
-
 protected:
 
   friend class HYDROData_Iterator;
index 4c1ed735f799d96d7bd44f9056b8f72733311ff0..fc5fe6c2d82493c5dc07de427a120fdc2e67090f 100644 (file)
@@ -65,6 +65,11 @@ void HYDROData_Entity::Update()
   SetToUpdate( false );
 }
 
+void HYDROData_Entity::UpdateLocalCS( double theDx, double theDy )
+{
+  //On the base level no actions are necessary
+}
+
 bool HYDROData_Entity::IsHas2dPrs() const
 {
   return false;
index b46a6e43d0bf9a25dda95c4e43c4317a4c3f062b..d639c4a7c976cf18704e605e112e34fb6a4a69b0 100644 (file)
@@ -114,6 +114,7 @@ public:
    */
   HYDRODATA_EXPORT virtual void Update();
 
+  HYDRODATA_EXPORT virtual void UpdateLocalCS( double theDx, double theDy );
 
   /**
    * Checks that object has 2D presentation. Base implementation returns false.
index 4dfae8672fad9e58e82e208ab9255230e52479db..b7c8eb54c8eb67c8bcd3b8e14ce4e3228773e869 100644 (file)
@@ -482,3 +482,8 @@ bool HYDROData_Obstacle::getTranslation( double& theDx, double& theDy, double& t
   return true;
 }
 
+void HYDROData_Obstacle::UpdateLocalCS( double theDx, double theDy )
+{
+  Translate( theDx, theDy, 0 );
+}
+
index a0ba13ad53b4bd48656eb1cf95c986a29e76236b..3641ba9d592f978e8f87c5243df000762f2eeb74 100644 (file)
@@ -43,6 +43,8 @@ public:
    */
   HYDRODATA_EXPORT virtual void Update();
 
+  HYDRODATA_EXPORT virtual void UpdateLocalCS( double theDx, double theDy );
+
   /**
    * Checks that object has 2D presentation. Reimlemented to retun true.
    */
index be2495cd0f11872616ac56feb545e7cb1c64145b..72423bb3e76612eeadc53a40b338b6c3f8cc6c6a 100755 (executable)
@@ -1102,4 +1102,26 @@ QPainterPath HYDROData_PolylineXY::GetPainterPath() const
   return aPath;
 }
 
+void HYDROData_PolylineXY::UpdateLocalCS( double theDx, double theDy )
+{
+  NCollection_Sequence<TCollection_AsciiString>           aSectNames;
+  NCollection_Sequence<HYDROData_PolylineXY::SectionType> aSectTypes;
+  NCollection_Sequence<bool>                              aSectClosures;
+  GetSections( aSectNames, aSectTypes, aSectClosures );
+
+  gp_XY aDelta( theDx, theDy );
+  for ( int i = 0, aNbSects = aSectNames.Size(); i < aNbSects; i++ )
+  {
+    PointsList aPoints = GetPoints( i );
+    for( int j = 1, n = aPoints.Size(); j <= n; ++j )
+    {
+      Point& aPoint = aPoints.ChangeValue( j );
+      aPoint += aDelta;
+    }
+    SetPoints( i, aPoints );
+  }
+  SetToUpdate( true );
+}
+
+
 
index 86ae8e54d2e3f836a68cf26c1d4523e0c9da5308..1643aeab55d4f28533557d6cbd9b8ee70ac1b78e 100644 (file)
@@ -46,6 +46,8 @@ public:
    */
   HYDRODATA_EXPORT virtual void Update();
 
+  HYDRODATA_EXPORT virtual void UpdateLocalCS( double theDx, double theDy );
+
   /**
    * Checks that object has 2D presentation. Reimlemented to retun true.
    */
index 0d4b5f456caf606732211ce8740a6de423839f70..494461f2d15ec65cf4ea33924507ca4dc3dab89c 100755 (executable)
@@ -628,5 +628,18 @@ bool HYDROData_Profile::ImportFromFile( OSD_File& theFile,
   return aRes;
 }
 
+void HYDROData_Profile::UpdateLocalCS( double theDx, double theDy )
+{
+  gp_XY aDelta( theDx, theDy );
+  gp_XY aPnt;
+
+  GetLeftPoint( aPnt, false );
+  aPnt += aDelta;
+  SetLeftPoint( aPnt, false );
+
+  GetRightPoint( aPnt, false );
+  aPnt += aDelta;
+  SetRightPoint( aPnt, false );
+}
 
 
index ae708f75d06ae3adccff0a0e36992067f1efbe5a..45b916a8bdfe548197af18dd77703ebf7d179725 100644 (file)
@@ -65,6 +65,8 @@ public:
    */
   HYDRODATA_EXPORT virtual void Update();
 
+  HYDRODATA_EXPORT virtual void UpdateLocalCS( double theDx, double theDy );
+
   /**
    * Returns default filling color for new profile.
    */
index 012167d29c96f2a0a31a8fa83852c6f48cfe3217..b5958347a486cfe1d89b4d85cde30edd5123b9b9 100644 (file)
@@ -57,5 +57,10 @@ TopoDS_Shape HYDROData_River::GetShape3D() const
   return getShape3D();
 }
 
+void HYDROData_River::UpdateLocalCS( double theDx, double theDy )
+{
+  //TODO
+}
+
 
 
index 9503d5b06b6ee163602d166d3026e3c91c6b42c5..5ac5f963f0657ff54e8ac291181c9adc8e8a7aed 100644 (file)
@@ -40,6 +40,8 @@ public:
    */
   HYDRODATA_EXPORT virtual void Update();
 
+  HYDRODATA_EXPORT virtual void UpdateLocalCS( double theDx, double theDy );
+
   /**
    * Checks that object has 2D presentation. Reimlemented to retun true.
    */
index f1e3ba962985935e28fbb302ff44e67bca2965d3..2bdcac746de8207bad6968862cea690eab9acb72 100644 (file)
@@ -149,7 +149,6 @@ public:
    */
   HYDRODATA_EXPORT virtual void RemoveGeometryObjects();
 
-
 protected:
 
   friend class HYDROData_Region;
index cde78b0d08e9e8627c87de4228f172a147298d01..9701970ad2ee07bfdeae4a3e043341e1d861ba24 100644 (file)
@@ -231,6 +231,7 @@ void HYDROGUI_DataObject::updateBy( SUIT_DataObject* theObj )
   myIsValid = aDataObj->myIsValid;
   myIsInOperation = aDataObj->myIsInOperation;
   myIcon = aDataObj->myIcon;
+  setModified( true );
 }
 
 
@@ -296,6 +297,7 @@ void HYDROGUI_NamedObject::updateBy( SUIT_DataObject* theObj )
   myParentEntry = aNamedObj->myParentEntry;
   myIcon = aNamedObj->myIcon;
   myIsInOperation = aNamedObj->myIsInOperation;
+  setModified( true );
 }
 
 
index 5c45c8baa7e4d5deb346ce5dea38db58d3e887bf..5252cb2fb2b45d02ba8b53c3930604cbe5504c3e 100644 (file)
@@ -709,5 +709,8 @@ QStringList HYDROGUI_Tool::FindExistingObjectsNames( const Handle(HYDROData_Docu
 
 QString HYDROGUI_Tool::GetCoordinateString( const double theNumber )
 {
-  return QString::number( theNumber, 'f', 2 );
-}
\ No newline at end of file
+  //return QString::number( theNumber, 'f', 2 );
+  static QLocale aLocale( QLocale::English, QLocale::France );
+  return aLocale.toString( theNumber, 'f', 2 );
+}
+
index 56c7e5fdae0e95ee94589ec3a402a1bfc4351f3f..c2a71f9404956ac20ae7544cc359bac126ef5869 100644 (file)
@@ -298,6 +298,8 @@ public:
   HYDROData_SequenceOfObjects FindObjectsByNames( const QStringList& theNames,
                                                   const ObjectKind   theKind = KIND_UNKNOWN );
 
+  void SetLocalCS( double, double );
+
 protected:
 
   //! Creates new document: private because "Document" method must be used instead of direct creation.