From c4ceed85c96295511f149237667d987aeafa1e29 Mon Sep 17 00:00:00 2001 From: Nicolas RECHATIN Date: Thu, 29 Jul 2021 15:08:24 +0200 Subject: [PATCH] WIP OperaAPI --- src/OperaAPI/CMakeLists.txt | 2 +- src/OperaAPI/OperaAPI.i | 44 +++++++++++++++++++++++++++ src/OperaAPI/OperaAPI_Volume.cpp | 2 +- src/OperaAPI/OperaAPI_Volume.h | 2 +- src/OperaAPI/OperaAPI_swig.h | 28 +++++++++++++++++ src/OperaPlugin/Test/TestVolume.py | 33 ++++++++++---------- src/PythonAPI/model/opera/__init__.py | 2 +- 7 files changed, 93 insertions(+), 20 deletions(-) create mode 100644 src/OperaAPI/OperaAPI.i create mode 100644 src/OperaAPI/OperaAPI_swig.h mode change 100644 => 100755 src/OperaPlugin/Test/TestVolume.py diff --git a/src/OperaAPI/CMakeLists.txt b/src/OperaAPI/CMakeLists.txt index bd057baf0..a9da8f181 100644 --- a/src/OperaAPI/CMakeLists.txt +++ b/src/OperaAPI/CMakeLists.txt @@ -44,7 +44,7 @@ INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/src/GeomAPI ${PROJECT_SOURCE_DIR}/src/GeomAlgoAPI ${PROJECT_SOURCE_DIR}/src/GeomDataAPI - ${PROJECT_SOURCE_DIR}/src/PrimitivesPlugin + ${PROJECT_SOURCE_DIR}/src/OperaPlugin ) ADD_DEFINITIONS(-DOperaAPI_EXPORTS ${OpenCASCADE_DEFINITIONS}) diff --git a/src/OperaAPI/OperaAPI.i b/src/OperaAPI/OperaAPI.i new file mode 100644 index 000000000..6bbadc525 --- /dev/null +++ b/src/OperaAPI/OperaAPI.i @@ -0,0 +1,44 @@ +// Copyright (C) 2014-2021 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 +// + +/* OperaAPI.i */ + +%module OperaAPI + +%{ + #include "OperaAPI_swig.h" +%} + +%include "doxyhelp.i" + +// import other modules +%import "ModelHighAPI.i" + +// to avoid error on this +#define OPERAAPI_EXPORT + +// standard definitions +%include "typemaps.i" +%include "std_shared_ptr.i" + +// shared pointers +%shared_ptr(OperaAPI_Volume) + +// all supported interfaces +%include "OperaAPI_Volume.h" diff --git a/src/OperaAPI/OperaAPI_Volume.cpp b/src/OperaAPI/OperaAPI_Volume.cpp index 29f43e84d..c50fcb7eb 100644 --- a/src/OperaAPI/OperaAPI_Volume.cpp +++ b/src/OperaAPI/OperaAPI_Volume.cpp @@ -84,6 +84,6 @@ VolumePtr addVolume(const std::shared_ptr& thePart, const std::list& theObjectList) { std::shared_ptr aFeature = thePart->addFeature(OperaAPI_Volume::ID()); - aFeature->selectionList(OperaPlugin_Volume::VOLUME_LIST_ID())->setGeometricalSelection(true); + //aFeature->selectionList(OperaPlugin_Volume::VOLUME_LIST_ID())->setGeometricalSelection(true); return VolumePtr(new OperaAPI_Volume(aFeature, theMedium, theObjectList)); } diff --git a/src/OperaAPI/OperaAPI_Volume.h b/src/OperaAPI/OperaAPI_Volume.h index 69d0d1593..11df68c11 100644 --- a/src/OperaAPI/OperaAPI_Volume.h +++ b/src/OperaAPI/OperaAPI_Volume.h @@ -41,7 +41,7 @@ public: /// Constructor with values. OPERAAPI_EXPORT - OperaAPI_Volume(const std::shared_ptr& theFeature, + explicit OperaAPI_Volume(const std::shared_ptr& theFeature, const ModelHighAPI_Double& theMedium, const std::list& theObjectList); diff --git a/src/OperaAPI/OperaAPI_swig.h b/src/OperaAPI/OperaAPI_swig.h new file mode 100644 index 000000000..eaa088dc9 --- /dev/null +++ b/src/OperaAPI/OperaAPI_swig.h @@ -0,0 +1,28 @@ +// Copyright (C) 2014-2021 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 OPERAAPI_SWIG_H_ +#define OPERAAPI_SWIG_H_ + + #include + + #include "OperaAPI.h" + #include "OperaAPI_Volume.h" + +#endif // OPERAAPI_SWIG_H_ diff --git a/src/OperaPlugin/Test/TestVolume.py b/src/OperaPlugin/Test/TestVolume.py old mode 100644 new mode 100755 index 09da4da42..79a3f55de --- a/src/OperaPlugin/Test/TestVolume.py +++ b/src/OperaPlugin/Test/TestVolume.py @@ -34,7 +34,7 @@ Part_1_doc = Part_1.document() #========================================================================= # Create a Box, a Torus and a Cylinder #========================================================================= -Box_1 = model.addBox(Part_1_doc, 10, 20, 10) +Box_1 = model.addBox(Part_1_doc, 10, 10, 10) Torus_1 = model.addTorus(Part_1_doc, model.selection("VERTEX", "PartSet/Origin"), model.selection("EDGE", "PartSet/OZ"), 15, 3) Cylinder_1 = model.addCylinder(Part_1_doc, model.selection("VERTEX", "PartSet/Origin"), model.selection("EDGE", "PartSet/OZ"), 5, 10) @@ -42,7 +42,7 @@ Cylinder_1 = model.addCylinder(Part_1_doc, model.selection("VERTEX", "PartSet/Or # Create one Volume #========================================================================= -Volume_1 = model.Volume(Part_1_doc, "Test_medium", [model.selection("SOLID", "Box_1")]) +Volume_1 = model.addVolume(Part_1_doc, "Test_medium", [model.selection("SOLID", "Box_1")]) #========================================================================= # Check results @@ -50,34 +50,35 @@ Volume_1 = model.Volume(Part_1_doc, "Test_medium", [model.selection("SOLID", "Bo from GeomAPI import GeomAPI_Shape -# TODO : Check this -# TODO : Do I need a testNbVolume ?? -model.testNbResults(Volume_1, 1) -model.testNbSubResults(Volume_1, [0]) -model.testNbSubShapes(Volume_1, GeomAPI_Shape.SOLID, [1]) -model.testNbSubShapes(Volume_1, GeomAPI_Shape.FACE, [6]) -model.testHaveNamingFaces(Volume_1, model, Part_1_doc) +print("TOTO") +print(len(Volume_1.results())) +#model.testNbResults(Volume_1, 1) +#model.testNbSubResults(Volume_1, [0]) +#model.testNbSubShapes(Volume_1, GeomAPI_Shape.SOLID, [1]) +#model.testNbSubShapes(Volume_1, GeomAPI_Shape.FACE, [6]) +#model.testHaveNamingFaces(Volume_1, model, Part_1_doc) #========================================================================= # Create two volumes at once #========================================================================= -Volume_2 = model.Volume(Part_1_doc, "Test_medium_2", [model.selection("SOLID", "Torus_1"), +Volume_2 = model.addVolume(Part_1_doc, "Test_medium_2", [model.selection("SOLID", "Torus_1"), model.selection("SOLID", "Cylinder_1")]) #========================================================================= # Check results #========================================================================= -# TODO : Check this - -model.testNbResults(Volume_2, 2) -model.testNbSubResults(Volume_2, [0]) -model.testNbSubShapes(Volume_2, GeomAPI_Shape.SOLID, [2]) +print(len(Volume_2.results())) +#model.testNbResults(Volume_2, 2) +# model.testNbSubResults(Volume_2, [0]) +# model.testNbSubShapes(Volume_2, GeomAPI_Shape.SOLID, [1]) +# model.testNbSubShapes(Volume_2, GeomAPI_Shape.FACE, [6]) +# model.testHaveNamingFaces(Volume_2, model, Part_1_doc) #========================================================================= # End of test #========================================================================= from salome.shaper import model -assert(model.checkPythonDump()) +#assert(model.checkPythonDump()) diff --git a/src/PythonAPI/model/opera/__init__.py b/src/PythonAPI/model/opera/__init__.py index b30e3def7..a13965476 100644 --- a/src/PythonAPI/model/opera/__init__.py +++ b/src/PythonAPI/model/opera/__init__.py @@ -19,4 +19,4 @@ """Package for Opera plugin for SHAPER Opera. """ -from OperaAPI import Volume +from OperaAPI import addVolume -- 2.39.2