]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Adding the high level direct API.
authorClarisse Genrault <clarisse.genrault@cea.fr>
Tue, 21 Jun 2016 13:18:45 +0000 (15:18 +0200)
committerClarisse Genrault <clarisse.genrault@cea.fr>
Tue, 21 Jun 2016 13:18:45 +0000 (15:18 +0200)
src/GeomAlgoAPI/GeomAlgoAPI_DirectAPI.cpp [new file with mode: 0644]
src/GeomAlgoAPI/GeomAlgoAPI_DirectAPI.h [new file with mode: 0644]
src/GeomAlgoAPI/GeomAlgoAPI_Exception.cpp [new file with mode: 0755]
src/GeomAlgoAPI/GeomAlgoAPI_Exception.h [new file with mode: 0644]

diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_DirectAPI.cpp b/src/GeomAlgoAPI/GeomAlgoAPI_DirectAPI.cpp
new file mode 100644 (file)
index 0000000..f621478
--- /dev/null
@@ -0,0 +1,60 @@
+// Copyright (C) 2014-2016 CEA/DEN, EDF R&D
+
+// File:        GeomAlgoAPI_DirectAPI.cpp
+// Created:     17 Mar 2016
+// Author:      Clarisse Genrault (CEA)
+
+#include "GeomAlgoAPI_DirectAPI.h"
+#include <GeomAlgoAPI_Box.h>
+#include <GeomAlgoAPI_BoxPoints.h>
+
+#include <GeomAPI_Pnt.h>
+#include <GeomAPI_Edge.h>
+#include <GeomAlgoAPI_EdgeBuilder.h>
+
+#include <iostream>
+
+namespace GeomAlgoAPI_DirectAPI
+{
+  //=========================================================================================================
+  std::shared_ptr<GeomAPI_Shape> GeomAlgoAPI_DirectAPI::makeBox(const double theDx, const double theDy, 
+                                                                const double theDz) throw (GeomAlgoAPI_Exception)
+  {
+    GeomAlgoAPI_Box aBoxAlgo(theDx,theDy,theDz);
+    
+    if (!aBoxAlgo.check()) {
+      throw GeomAlgoAPI_Exception(aBoxAlgo.getError());
+    }
+    
+    aBoxAlgo.build();
+    
+    if(!aBoxAlgo.isDone()) {
+      throw GeomAlgoAPI_Exception(aBoxAlgo.getError());
+    }
+    if (!aBoxAlgo.checkValid("Box builder with dimensions")) {
+      throw GeomAlgoAPI_Exception(aBoxAlgo.getError());
+    }
+    return aBoxAlgo.shape();
+  }
+  
+  //=========================================================================================================
+  std::shared_ptr<GeomAPI_Shape> GeomAlgoAPI_DirectAPI::makeBox(std::shared_ptr<GeomAPI_Pnt> theFirstPoint,
+                                                                std::shared_ptr<GeomAPI_Pnt> theSecondPoint) throw (GeomAlgoAPI_Exception)
+  {
+    GeomAlgoAPI_BoxPoints aBoxAlgo(theFirstPoint, theSecondPoint);
+    
+    if (!aBoxAlgo.check()) {
+      throw GeomAlgoAPI_Exception(aBoxAlgo.getError());
+    }
+    
+    aBoxAlgo.build();
+    
+    if(!aBoxAlgo.isDone()) {
+      throw GeomAlgoAPI_Exception(aBoxAlgo.getError());
+    }
+    if (!aBoxAlgo.checkValid("Box builder with two points")) {
+      throw GeomAlgoAPI_Exception(aBoxAlgo.getError());
+    }
+    return aBoxAlgo.shape();
+  }
+}
diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_DirectAPI.h b/src/GeomAlgoAPI/GeomAlgoAPI_DirectAPI.h
new file mode 100644 (file)
index 0000000..26a7e82
--- /dev/null
@@ -0,0 +1,40 @@
+// Copyright (C) 2014-2016 CEA/DEN, EDF R&D
+
+// File:        GeomAlgoAPI_DirectAPI.h
+// Created:     17 Mar 2016
+// Author:      Clarisse Genrault (CEA)
+
+#ifndef GEOMALGOAPI_DIRECTAPI_H
+#define GEOMALGOAPI_DIRECTAPI_H
+
+#include <GeomAPI_Shape.h>
+#include <GeomAPI_Pnt.h>
+#include <GeomAPI_Edge.h>
+
+#include <GeomAlgoAPI_Exception.h>
+
+namespace GeomAlgoAPI_DirectAPI
+{
+/**\class GeomAlgoAPI_DirectAPI
+ * \ingroup DataAlgo
+ * \brief Allows to access the direct API
+ */
+class GeomAlgoAPI_DirectAPI
+{
+public:
+  /// Creates a box using the dimensions.
+  /// \param theDx The dimension on X
+  /// \param theDy The dimension on Y
+  /// \param theDz The dimension on Z
+  /// \return a shape
+  static std::shared_ptr<GeomAPI_Shape> makeBox(const double theDx, const double theDy, const double theDz) throw (GeomAlgoAPI_Exception);
+  
+  /// Creates a box using the two points that defined a diagonal.
+  /// \param theFirstPoint One extermity of the diagonal
+  /// \param theSecondPoint The other extremity of the diagonal
+  /// \return a shape
+  static std::shared_ptr<GeomAPI_Shape> makeBox(std::shared_ptr<GeomAPI_Pnt> theFirstPoint,
+                                                std::shared_ptr<GeomAPI_Pnt> theSecondPoint) throw (GeomAlgoAPI_Exception);
+};
+}
+#endif
diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_Exception.cpp b/src/GeomAlgoAPI/GeomAlgoAPI_Exception.cpp
new file mode 100755 (executable)
index 0000000..53338da
--- /dev/null
@@ -0,0 +1,24 @@
+// Copyright (C) 2014-2016 CEA/DEN, EDF R&D
+
+// File:        GeomAlgoAPI_Exception.cpp
+// Created:     14 April 2016
+// Author:      Clarisse Genrault (CEA)
+
+#include <GeomAlgoAPI_Exception.h>
+
+//=================================================================================================
+GeomAlgoAPI_Exception::GeomAlgoAPI_Exception(std::string theMessageError)
+: myMessageError(theMessageError)
+{
+}
+
+//=================================================================================================
+GeomAlgoAPI_Exception::~GeomAlgoAPI_Exception() throw()
+{
+}
+
+//=================================================================================================
+const char* GeomAlgoAPI_Exception::what() const throw()
+{ 
+  return myMessageError.c_str();
+}
\ No newline at end of file
diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_Exception.h b/src/GeomAlgoAPI/GeomAlgoAPI_Exception.h
new file mode 100644 (file)
index 0000000..8bdeaa3
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef GeomAlgoAPI_Exception_H_
+#define GeomAlgoAPI_Exception_H_
+
+#include <GeomAlgoAPI.h>
+
+#include <iostream>
+
+/**\class GeomAlgoAPI_Exception
+ * \ingroup DataAlgo
+ * \brief Manage exceptions
+ */
+class GeomAlgoAPI_Exception : public std::exception
+{
+ public: 
+  /// Create an exception
+  /// \param theMessageError Error message to be displayed
+  GEOMALGOAPI_EXPORT GeomAlgoAPI_Exception(std::string theMessageError);
+  /// Destroyer 
+  GEOMALGOAPI_EXPORT ~GeomAlgoAPI_Exception() throw();
+  /// Allows to collet the error 
+  GEOMALGOAPI_EXPORT const char* what() const throw();
+private:
+  std::string myMessageError; /// Error message to be displayed.
+};
+
+
+#endif
\ No newline at end of file