]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
refs #492: generate bottom polyline for the stream copy
authormzn <mzn@opencascade.com>
Mon, 6 Apr 2015 07:09:18 +0000 (10:09 +0300)
committermzn <mzn@opencascade.com>
Mon, 6 Apr 2015 07:09:18 +0000 (10:09 +0300)
src/HYDROData/HYDROData_Entity.cxx
src/HYDROData/HYDROData_Entity.h
src/HYDROData/HYDROData_Stream.cxx
src/HYDROData/HYDROData_Stream.h
src/HYDROGUI/HYDROGUI_DataModel.cxx

index 01833f9ce9680c7d981c9bbba8a8522e71da2fad..6f3eea802050309a39c355c0cd47b671b4fa588b 100644 (file)
@@ -173,8 +173,31 @@ HYDROData_Entity::~HYDROData_Entity()
 
 void HYDROData_Entity::CopyTo( const Handle(HYDROData_Entity)& theDestination ) const
 {
+  Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab );
+  if ( aDocument.IsNull() ) {
+    return;
+  }
+
   TDF_CopyLabel aCopy(myLab, theDestination->Label());
   aCopy.Perform();
+         
+  // generate a new unique name for the clone object:
+  // case 1: Image_1 -> Image_2
+  // case 2: ImageObj -> ImageObj_1
+  QString aName = theDestination->GetName();
+  QString aPrefix = aName;
+  if( aName.contains( '_' ) ) { // case 1
+    QString aSuffix = aName.section( '_', -1 );
+    bool anIsInteger = false;
+    aSuffix.toInt( &anIsInteger );
+    if( anIsInteger )
+      aPrefix = aName.section( '_', 0, -2 );
+  } else { // case 2
+    aPrefix = aName;
+  }
+
+  aName = HYDROData_Tool::GenerateObjectName( aDocument, aPrefix );
+  theDestination->SetName( aName );
 }
 
 Handle(HYDROData_Entity) HYDROData_Entity::GetFatherObject() const
index 506044e487a07e4e00d03b90f016cafd653f22fb..9ed01046878eac2ffd860900722cf79b8a591f42 100644 (file)
@@ -197,7 +197,7 @@ public:
    * Objects must be the same type.
    * \param theDestination initialized object (from any document) - target of copying
    */
-  HYDRODATA_EXPORT void CopyTo( const Handle(HYDROData_Entity)& theDestination ) const;
+  HYDRODATA_EXPORT virtual void CopyTo( const Handle(HYDROData_Entity)& theDestination ) const;
 
   /**
    * Returns the label of this object.
index 8e3cb8eed347522748e753b58bb417ed690b817d..6ffdd0ee43ec1d1110e89b351d5c97bcb11b6e30 100644 (file)
@@ -1184,3 +1184,32 @@ bool HYDROData_Stream::Interpolate( HYDROData_IProfilesInterpolator* theInterpol
 
   return isOK;
 }
+
+void HYDROData_Stream::CopyTo( const Handle(HYDROData_Entity)& theDestination ) const
+{
+  // Get the document
+  Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab );
+  if ( aDocument.IsNull() ) {
+    return;
+  }
+
+  // Call base method
+  HYDROData_Entity::CopyTo( theDestination );
+
+  Handle(HYDROData_Stream) aStreamCopy = 
+    Handle(HYDROData_Stream)::DownCast( theDestination );
+
+  // Copy bottom polyline if exists
+  if ( !aStreamCopy.IsNull() ) {
+    const Handle(HYDROData_Polyline3D) aBottom = GetBottomPolyline();
+    if ( !aBottom.IsNull() ) {
+      aStreamCopy->ClearReferenceObjects( DataTag_BottomPolyline );
+      aStreamCopy->GenerateBottomPolyline();
+      const Handle(HYDROData_Polyline3D) aBottomCopy = aStreamCopy->GetBottomPolyline();
+      if ( !aBottomCopy.IsNull() && !aBottomCopy->GetPolylineXY().IsNull() ) {
+        aBottomCopy->GetPolylineXY()->Update();
+        aBottomCopy->Update();
+      }
+    }
+  }
+}
\ No newline at end of file
index 2af9abae1f332d1e3ba35d344997da3b71a17cbd..673cca656a7d4a6b6968a64a750a5bf8004840f8 100644 (file)
@@ -126,6 +126,12 @@ public:
    */
   HYDRODATA_EXPORT virtual void UpdatePrs();
 
+  /**
+   *
+   */
+  HYDRODATA_EXPORT virtual void CopyTo( const Handle(HYDROData_Entity)& theDestination ) const;
+
+
   /**
    * Returns default filling color for new stream.
    */
index 37e4ec0b61e2dc7a6265f4d1e9de13843e58ad85..159851abf96c293a130ad8011efd8b7298f65a47 100644 (file)
@@ -639,24 +639,6 @@ bool HYDROGUI_DataModel::paste()
 
         // remove Z layer
         aClone->RemoveZLevel();
-        
-        // generate a new unique name for the clone object:
-        // case 1: Image_1 -> Image_2
-        // case 2: ImageObj -> ImageObj_1
-        QString aName = aClone->GetName();
-        QString aPrefix = aName;
-        if( aName.contains( '_' ) ) // case 1
-        {
-          QString aSuffix = aName.section( '_', -1 );
-          bool anIsInteger = false;
-          aSuffix.toInt( &anIsInteger );
-          if( anIsInteger )
-            aPrefix = aName.section( '_', 0, -2 );
-        }
-        else // case 2
-          aPrefix = aName;
-        aName = HYDROGUI_Tool::GenerateObjectName( (HYDROGUI_Module*)module(), aPrefix );
-        aClone->SetName( aName );
       }
     }
   }