]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Remove GeomAlgoAPI_GeometryCalculation and add function length() in ShapeTools CEA_2020/Lot2_BasicProperties
authorlucasjerome <jerome.lucas@cegsenslab.fr>
Fri, 5 Feb 2021 16:01:06 +0000 (17:01 +0100)
committerlucasjerome <jerome.lucas@cegsenslab.fr>
Fri, 5 Feb 2021 16:01:06 +0000 (17:01 +0100)
src/FeaturesPlugin/FeaturesPlugin_GeometryCalculation.cpp
src/GeomAlgoAPI/CMakeLists.txt
src/GeomAlgoAPI/GeomAlgoAPI_GeometryCalculation.cpp [deleted file]
src/GeomAlgoAPI/GeomAlgoAPI_GeometryCalculation.h [deleted file]
src/GeomAlgoAPI/GeomAlgoAPI_ShapeTools.cpp
src/GeomAlgoAPI/GeomAlgoAPI_ShapeTools.h

index 6a349920b79cda9517e312aa864c73c0fa79a23e..64762e811505f69813ceee94a5e7638d84318cd6 100644 (file)
@@ -29,7 +29,7 @@
 #include <Config_PropManager.h>
 
 #include <GeomAPI_Shape.h>
-#include <GeomAlgoAPI_GeometryCalculation.h>
+#include <GeomAlgoAPI_ShapeTools.h>
 
 
 #include <iomanip>
@@ -83,14 +83,10 @@ void FeaturesPlugin_GeometryCalculation::attributeChanged(const std::string& the
       double aLength;
       double aSurfArea;
       double aVolume;
-      std::string aError;
-      if (!getGeometryCalculation(aShape,
-                                  aTolerance,
-                                  aLength,
-                                  aSurfArea,
-                                  aVolume,
-                                  aError))
-         setError("Error in Geometry calculation :" +  aError);
+
+      aLength = GeomAlgoAPI_ShapeTools::length(aShape);
+      aSurfArea = GeomAlgoAPI_ShapeTools::area(aShape);
+      aVolume = GeomAlgoAPI_ShapeTools::volume(aShape);
 
       streamL << std::setprecision(14) << aLength;
       aValues->setValue(0, aLength);
index 3900e711bdfb3b102ce6b2ad716971855cd3cc86..c60586a11ce15bd6ddc675a4bb18851db814628b 100644 (file)
@@ -33,7 +33,6 @@ SET(PROJECT_HEADERS
     GeomAlgoAPI_Prism.h
     GeomAlgoAPI_Revolution.h
     GeomAlgoAPI_Boolean.h
-    GeomAlgoAPI_GeometryCalculation.h
     GeomAlgoAPI_ThroughAll.h
     GeomAlgoAPI_Rotation.h
     GeomAlgoAPI_Translation.h
@@ -99,7 +98,6 @@ SET(PROJECT_SOURCES
     GeomAlgoAPI_Prism.cpp
     GeomAlgoAPI_Revolution.cpp
     GeomAlgoAPI_Boolean.cpp
-    GeomAlgoAPI_GeometryCalculation.cpp
     GeomAlgoAPI_ThroughAll.cpp
     GeomAlgoAPI_Rotation.cpp
     GeomAlgoAPI_Translation.cpp
diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_GeometryCalculation.cpp b/src/GeomAlgoAPI/GeomAlgoAPI_GeometryCalculation.cpp
deleted file mode 100644 (file)
index 43af83c..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright (C) 2014-2020  CEA/DEN, 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
-//
-
-#include "GeomAlgoAPI_GeometryCalculation.h"
-
-#include <GProp_GProps.hxx>
-#include <TopoDS_Shape.hxx>
-#include <BRepGProp.hxx>
-#include <TopExp_Explorer.hxx>
-#include <Standard_ErrorHandler.hxx>
-
-//=================================================================================================
-bool getGeometryCalculation(const std::shared_ptr<GeomAPI_Shape>& theShape,
-                            const double theTolerance,
-                            Standard_Real& theLength,
-                            Standard_Real& theSurfArea,
-                            Standard_Real& theVolume,
-                            std::string& theError)
-{
-
-  #ifdef _DEBUG
-  std::cout << "getGeometryCalculation " << std::endl;
-  #endif
-
-  if (!theShape.get()) {
-    theError = "getGeometryCalculation : An invalid argument";
-    return false;
-  }
-
-  TopoDS_Shape aShape = theShape->impl<TopoDS_Shape>();
-
-  //Compute the parameters
-  GProp_GProps aLProps, aSProps;
-  Standard_Real anEps = theTolerance >= 0 ? theTolerance : 1.e-6;
-  try {
-    OCC_CATCH_SIGNALS;
-    BRepGProp::LinearProperties(aShape, aLProps, Standard_True);
-    theLength = aLProps.Mass();
-
-    BRepGProp::SurfaceProperties(aShape, aSProps, anEps, Standard_True);
-    theSurfArea = aSProps.Mass();
-
-    theVolume = 0.0;
-    if (aShape.ShapeType() < TopAbs_SHELL) {
-      for (TopExp_Explorer anExp (aShape, TopAbs_SOLID); anExp.More(); anExp.Next()) {
-        GProp_GProps aVProps;
-        BRepGProp::VolumeProperties(anExp.Current(), aVProps, anEps, Standard_True);
-        theVolume += aVProps.Mass();
-      }
-    }
-  }
-  catch (Standard_Failure& aFail) {
-    theError = aFail.GetMessageString();
-    return false;
-  }
-
-  return true;
-
-}
\ No newline at end of file
diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_GeometryCalculation.h b/src/GeomAlgoAPI/GeomAlgoAPI_GeometryCalculation.h
deleted file mode 100644 (file)
index df1f2f2..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (C) 2014-2020  CEA/DEN, 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 GeomAlgoAPI_GeometryCalculation_H_
-#define GeomAlgoAPI_GeometryCalculation_H_
-
-#include <GeomAlgoAPI.h>
-#include <GeomAPI_Shape.h>
-#include <Standard_TypeDef.hxx>
-
-/// Run chamfer operation with two distances or with a distance and an angle .
-  /// \param theShape      the shape
-  /// \param theTolerance  tolerance desirated
-  /// \param theLength     length calculated
-  /// \param theSurfArea   Surface Area calculated
-  /// \param theVolume     Volume calculated
-  /// \param theError      error
-GEOMALGOAPI_EXPORT
-bool getGeometryCalculation(const std::shared_ptr<GeomAPI_Shape>& theShape,
-                            const Standard_Real theTolerance,
-                            Standard_Real& theLength,
-                            Standard_Real& theSurfArea,
-                            Standard_Real& theVolume,
-                            std::string& theError);
-
-#endif
index 9a51a5ae766a8e156268bb38071eff22344bb365..e571a58d46ca7045f9450a1cc7383ab9ff0dd21f 100644 (file)
@@ -121,7 +121,21 @@ static GProp_GProps props(const TopoDS_Shape& theShape)
 
   return aGProps;
 }
+//==================================================================================================
+double GeomAlgoAPI_ShapeTools::length(const std::shared_ptr<GeomAPI_Shape> theShape)
+{
+  GProp_GProps aGProps;
+  if(!theShape.get()) {
+    return 0.0;
+  }
+  const TopoDS_Shape& aShape = theShape->impl<TopoDS_Shape>();
+  if(aShape.IsNull()) {
+    return 0.0;
+  }
 
+  BRepGProp::LinearProperties(aShape, aGProps, Standard_True);
+  return  aGProps.Mass();
+}
 //==================================================================================================
 double GeomAlgoAPI_ShapeTools::volume(const std::shared_ptr<GeomAPI_Shape> theShape)
 {
index 4e1e6523a0d95ce80cc6223af87da34f8c672c2e..267a98acaa052c601cd1f97d9e3b85f17189e55d 100644 (file)
@@ -45,6 +45,9 @@ class ModelAPI_Object;
 class GeomAlgoAPI_ShapeTools
 {
 public:
+  /// \return the lenth of the edges of the current shape or 0.0 if it can be computed.
+  GEOMALGOAPI_EXPORT static double length(const std::shared_ptr<GeomAPI_Shape> theShape);
+
   /// \return the total volume of the solids of the current shape or 0.0 if it can be computed.
   GEOMALGOAPI_EXPORT static double volume(const std::shared_ptr<GeomAPI_Shape> theShape);