]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
GetAltitudeForPoint() method redefinition.
authoradv <adv@opencascade.com>
Fri, 24 Jan 2014 06:08:58 +0000 (06:08 +0000)
committeradv <adv@opencascade.com>
Fri, 24 Jan 2014 06:08:58 +0000 (06:08 +0000)
src/HYDROData/HYDROData_CalculationCase.cxx
src/HYDROData/HYDROData_CalculationCase.h
src/HYDROPy/HYDROData_CalculationCase.sip

index 9e05aa3f19bda6a4158aea5d4b73721c497d7083..97fa637dacb92d837d388e49ec1e942190d8c49c 100644 (file)
@@ -250,8 +250,8 @@ void HYDROData_CalculationCase::Update()
       {
         const QString& anObjName = aSplitData.ObjectNames.at( i );
         
-        Handle(HYDROData_Object) aRefObject = Handle(HYDROData_Object)::DownCast(
-          HYDROData_Tool::FindObjectByName( aDocument, anObjName ) );
+        Handle(HYDROData_Object) aRefObject = 
+          Handle(HYDROData_Object)::DownCast( aDocument->FindObjectByName( anObjName ) );
         if ( aRefObject.IsNull() )
           continue;
 
@@ -516,14 +516,19 @@ void HYDROData_CalculationCase::RemoveSplittedGroups()
 
 double HYDROData_CalculationCase::GetAltitudeForPoint( const gp_XY& thePoint ) const
 {
-  double aResAltitude = HYDROData_IAltitudeObject::GetInvalidAltitude();
-
   Handle(HYDROData_Zone) aZone = GetZoneFromPoint( thePoint );
-  if ( aZone.IsNull() )
+  return GetAltitudeForPoint( thePoint, aZone );
+}
+
+double HYDROData_CalculationCase::GetAltitudeForPoint( const gp_XY&                  thePoint,
+                                                       const Handle(HYDROData_Zone)& theZone ) const
+{
+  double aResAltitude = HYDROData_IAltitudeObject::GetInvalidAltitude();
+  if ( theZone.IsNull() )
     return aResAltitude;
 
-  HYDROData_Zone::MergeAltitudesType aZoneMergeType = aZone->GetMergeType();
-  if ( !aZone->IsMergingNeed() )
+  HYDROData_Zone::MergeAltitudesType aZoneMergeType = theZone->GetMergeType();
+  if ( !theZone->IsMergingNeed() )
   {
     aZoneMergeType = HYDROData_Zone::Merge_UNKNOWN;
   }
@@ -534,13 +539,13 @@ double HYDROData_CalculationCase::GetAltitudeForPoint( const gp_XY& thePoint ) c
 
   if ( aZoneMergeType == HYDROData_Zone::Merge_Object )
   {
-    Handle(HYDROData_IAltitudeObject) aMergeAltitude = aZone->GetMergeAltitude();
+    Handle(HYDROData_IAltitudeObject) aMergeAltitude = theZone->GetMergeAltitude();
     if ( !aMergeAltitude.IsNull() )
       aResAltitude = aMergeAltitude->GetAltitudeForPoint( thePoint );
   }
   else
   {
-    HYDROData_SequenceOfObjects aZoneObjects = aZone->GetGeometryObjects();
+    HYDROData_SequenceOfObjects aZoneObjects = theZone->GetGeometryObjects();
     HYDROData_SequenceOfObjects::Iterator anIter( aZoneObjects );
     for ( ; anIter.More(); anIter.Next() )
     {
index 0f2d6579c4c63824ca34f654a9796e441b3e71fd..e6b493f3af905b884ea27c318f4f5244fa494ef1 100644 (file)
@@ -214,6 +214,15 @@ public:
    */
   HYDRODATA_EXPORT virtual double GetAltitudeForPoint( const gp_XY& thePoint ) const;
 
+  /**
+   * Returns altitude for given point on given zone.
+   * \param theZone reference zone to check
+   * \param thePoint the point to examine
+   * \return result altitude value
+   */
+  HYDRODATA_EXPORT virtual double GetAltitudeForPoint( const gp_XY&                  thePoint,
+                                                       const Handle(HYDROData_Zone)& theZone ) const;
+
   /**
    * Returns zone to which the point is belongs.
    * \param thePoint the point to examine
index bf1cb020352d625c44b7a473532bd4ca19bcb986..c3f78b0c3116ec95afbb0551a86aa07aaaf0e0c0 100644 (file)
@@ -289,14 +289,58 @@ public:
    * \param thePoint the point to examine
    * \return result altitude value
    */
-  double GetAltitudeForPoint( const gp_XY& thePoint ) const;
+  double GetAltitudeForPoint( SIP_PYTUPLE thePoint ) const [double ( const gp_XY& )];
+  %MethodCode
+    double aRes = 0.0;
+    
+    double x = 0.0, y = 0.0;
+    if ( PyArg_ParseTuple( a0, "dd", &x, &y ) )
+    {
+      gp_XY aPnt( x, y );
+  
+      Py_BEGIN_ALLOW_THREADS
+      aRes = sipSelfWasArg ? sipCpp->HYDROData_CalculationCase::GetAltitudeForPoint( aPnt ) : 
+                             sipCpp->GetAltitudeForPoint( aPnt );
+      Py_END_ALLOW_THREADS
+    }
+    
+    sipRes = aRes;
+  %End
+
+  /**
+   * Returns altitude for given point.
+   * \param thePoint the point to examine
+   * \return result altitude value
+   */
+  double GetAltitudeForPoint( SIP_PYTUPLE    thePoint,
+                              HYDROData_Zone theZone ) const
+  [double ( const Handle_HYDROData_Zone&, const gp_XY& )];
+  %MethodCode
+    double aRes = 0.0;
+    
+    double x = 0.0, y = 0.0;
+    if ( PyArg_ParseTuple( a0, "dd", &x, &y ) )
+    {
+      gp_XY aPnt( x, y );
+  
+      Handle(HYDROData_Zone) aRef =
+        Handle(HYDROData_Zone)::DownCast( createHandle( a1 ) );
+
+      Py_BEGIN_ALLOW_THREADS
+      aRes = sipSelfWasArg ? sipCpp->HYDROData_CalculationCase::GetAltitudeForPoint( aPnt, aRef ) : 
+                             sipCpp->GetAltitudeForPoint( aPnt, aRef );
+      Py_END_ALLOW_THREADS
+    }
+    
+    sipRes = aRes;
+  %End
 
   /**
    * Returns zone to which the point is belongs.
    * \param thePoint the point to examine
    * \return result zone
    */
-  HYDROData_Zone GetZoneFromPoint( SIP_PYTUPLE ) const [Handle_HYDROData_Zone ( const gp_XY& )];
+  HYDROData_Zone GetZoneFromPoint( SIP_PYTUPLE thePoint ) const [Handle_HYDROData_Zone ( const gp_XY& )];
   %MethodCode
     Handle(HYDROData_Zone) aRes;
     
@@ -320,22 +364,27 @@ public:
    * \param theZone the zone to examine
    * \return result classification
    */
-  PointClassification GetPointClassification(
-    const gp_XY&   thePoint,
-    HYDROData_Zone theZone ) const 
-    [PointClassification ( const gp_XY&, const Handle_HYDROData_Zone& )];
-    
+  PointClassification GetPointClassification( SIP_PYTUPLE    thePoint,
+                                              HYDROData_Zone theZone ) const 
+  [PointClassification ( const gp_XY&, const Handle_HYDROData_Zone& )];    
   %MethodCode
-    Handle(HYDROData_Zone) aRef =
-      Handle(HYDROData_Zone)::DownCast( createHandle( a1 ) );
-   
-    if ( !aRef.IsNull() )
+    HYDROData_CalculationCase::PointClassification aRes = HYDROData_CalculationCase::POINT_OUT;
+    
+    double x = 0.0, y = 0.0;
+    if ( PyArg_ParseTuple( a0, "dd", &x, &y ) )
     {
+      gp_XY aPnt( x, y );
+
+      Handle(HYDROData_Zone) aRef =
+        Handle(HYDROData_Zone)::DownCast( createHandle( a1 ) );
+
       Py_BEGIN_ALLOW_THREADS
-      sipRes = sipSelfWasArg ? sipCpp->HYDROData_CalculationCase::GetPointClassification( *a0, aRef ) : 
-                               sipCpp->GetPointClassification( *a0, aRef );
+      aRes = sipSelfWasArg ? sipCpp->HYDROData_CalculationCase::GetPointClassification( aPnt, aRef ) : 
+                             sipCpp->GetPointClassification( aPnt, aRef );
       Py_END_ALLOW_THREADS
     }
+    
+    sipRes = aRes;
   %End
 
 protected: