X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FFeaturesAPI%2FFeaturesAPI.i;h=6f89d07cfc24be61610c7a8b460c0adcb228e380;hb=8f29b823e6a1a407252eea9dbf110ad695c7121c;hp=a1a7fbe1f9ff9d59c25704a4e4f2ff37a450b591;hpb=a1232c4299921155bf0ffa5ed4d94681975a6ec5;p=modules%2Fshaper.git diff --git a/src/FeaturesAPI/FeaturesAPI.i b/src/FeaturesAPI/FeaturesAPI.i index a1a7fbe1f..6f89d07cf 100644 --- a/src/FeaturesAPI/FeaturesAPI.i +++ b/src/FeaturesAPI/FeaturesAPI.i @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2019 CEA/DEN, EDF R&D +// 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 @@ -37,6 +37,25 @@ %include "typemaps.i" %include "std_shared_ptr.i" +// functions with named parameters +%feature("kwargs") addChamfer; +%feature("kwargs") addCommon; +%feature("kwargs") addCut; +%feature("kwargs") addFillet; +%feature("kwargs") addFuse; +%feature("kwargs") addIntersection; +%feature("kwargs") addMultiRotation; +%feature("kwargs") addMultiTranslation; +%feature("kwargs") addPartition; +%feature("kwargs") addPlacement; +%feature("kwargs") addRotation; +%feature("kwargs") addScale; +%feature("kwargs") addSplit; +%feature("kwargs") addSmash; +%feature("kwargs") addSymmetry; +%feature("kwargs") addTranslation; +%feature("kwargs") addUnion; + // shared pointers %shared_ptr(FeaturesAPI_BooleanCut) %shared_ptr(FeaturesAPI_BooleanFuse) @@ -49,6 +68,8 @@ %shared_ptr(FeaturesAPI_ExtrusionCut) %shared_ptr(FeaturesAPI_ExtrusionFuse) %shared_ptr(FeaturesAPI_Fillet) +%shared_ptr(FeaturesAPI_Fillet1D) +%shared_ptr(FeaturesAPI_Fillet2D) %shared_ptr(FeaturesAPI_Intersection) %shared_ptr(FeaturesAPI_MultiRotation) %shared_ptr(FeaturesAPI_MultiTranslation) @@ -68,6 +89,115 @@ %shared_ptr(FeaturesAPI_Union) %shared_ptr(FeaturesAPI_FusionFaces) %shared_ptr(FeaturesAPI_RemoveResults) +%shared_ptr(FeaturesAPI_Copy) +%shared_ptr(FeaturesAPI_ImportResult) +%shared_ptr(FeaturesAPI_Defeaturing) +%shared_ptr(FeaturesAPI_BoundingBox) + + +%typecheck(SWIG_TYPECHECK_POINTER) std::pair, bool>, const std::pair, bool> & { + ModelHighAPI_Selection* temp_selection; + bool* temp_bool; + int newmem = 0; + $1 = 1; + std::list temp_inputlist; + if (PySequence_Check($input)) { + for (Py_ssize_t i = 0; i < PySequence_Size($input) && $1; ++i) { + PyObject * temp = PySequence_GetItem($input, i); + + if ((SWIG_ConvertPtrAndOwn(temp, (void **)&temp_selection, $descriptor(ModelHighAPI_Selection*), SWIG_POINTER_EXCEPTION, &newmem)) == 0) { + if (temp_selection) { + $1 = 1; + } else { + $1 = 0; + } + } else { + $1 = 0; + } + } + } else if (PyBool_Check($input)) { + $1 = 1; + } else { + $1 = 0; + } +} + +%typemap(in) const std::pair, bool> & (std::pair, bool> temp) { + ModelHighAPI_Selection* temp_selection; + std::list temp_selectionlist; + int newmem = 0; + std::list temp_inputlist; + if (PySequence_Check($input)) { + for (Py_ssize_t i = 0; i < PySequence_Size($input); ++i) { + PyObject * temp = PySequence_GetItem($input, i); + + if ((SWIG_ConvertPtrAndOwn(temp, (void **)&temp_selection, $descriptor(ModelHighAPI_Selection*), SWIG_POINTER_EXCEPTION, &newmem)) == 0) { + if (temp_selection) { + temp_selectionlist.push_back(*temp_selection); + if (newmem & SWIG_CAST_NEW_MEMORY) { + delete temp_selection; + } + } + } else { + PyErr_SetString(PyExc_TypeError, "argument must be ModelHighAPI_Selection."); + return NULL; + } + } + temp = std::pair, bool>(temp_selectionlist, false); + } else if (PyBool_Check($input)) { + temp = std::pair, bool>(std::list(), $input == Py_True); + } else { + PyErr_SetString(PyExc_TypeError, "argument must be std::list or bool."); + return NULL; + } + $1 = &temp; +} + +// fix compilation error: 'res*' was not declared in this scope +%typemap(freearg) const std::pair, bool> & {} + + +%typecheck(SWIG_TYPECHECK_POINTER) std::pair, const std::pair & { + ModelHighAPI_Selection* temp_selection; + int newmem = 0; + if ((SWIG_ConvertPtrAndOwn($input, (void **)&temp_selection, $descriptor(ModelHighAPI_Selection*), SWIG_POINTER_EXCEPTION, &newmem)) == 0) { + if (temp_selection) { + $1 = 1; + } else { + $1 = 0; + } + } else { + $1 = ((PyFloat_Check($input) || PyLong_Check($input) || PyUnicode_Check($input)) && !PyBool_Check($input)) ? 1 : 0; + } +} + +%typemap(in) const std::pair & (std::pair temp) { + ModelHighAPI_Selection* temp_selection; + int newmem = 0; + if ((SWIG_ConvertPtrAndOwn($input, (void **)&temp_selection, $descriptor(ModelHighAPI_Selection*), SWIG_POINTER_EXCEPTION, &newmem)) == 0) { + if (temp_selection) { + temp = std::pair(*temp_selection, ModelHighAPI_Double(0.0)); + if (newmem & SWIG_CAST_NEW_MEMORY) { + delete temp_selection; + } + } + } else if (PyFloat_Check($input) || PyLong_Check($input)) { + temp = std::pair(ModelHighAPI_Selection(), ModelHighAPI_Double(PyFloat_AsDouble($input))); + } else if (PyUnicode_Check($input)) { + Py_ssize_t size; + temp = std::pair(ModelHighAPI_Selection(), ModelHighAPI_Double(PyUnicode_AsWideCharString($input, &size))); + } else if ((SWIG_ConvertPtr($input, (void **)&$1, $1_descriptor, SWIG_POINTER_EXCEPTION)) == 0) { + temp = std::pair($1->first, $1->second); + } else { + PyErr_SetString(PyExc_ValueError, "argument must be selection, ModelHighAPI_Double, float, int or string."); + return NULL; + } + $1 = &temp; +} + +// fix compilation error: 'res*' was not declared in this scope +%typemap(freearg) const std::pair & {} + // all supported interfaces %include "FeaturesAPI_BooleanCut.h" @@ -76,6 +206,7 @@ %include "FeaturesAPI_BooleanSmash.h" %include "FeaturesAPI_BooleanFill.h" %include "FeaturesAPI_Chamfer.h" +%include "FeaturesAPI_Defeaturing.h" %include "FeaturesAPI_Extrusion.h" %include "FeaturesAPI_ExtrusionBoolean.h" %include "FeaturesAPI_Fillet.h" @@ -97,3 +228,8 @@ %include "FeaturesAPI_Union.h" %include "FeaturesAPI_FusionFaces.h" %include "FeaturesAPI_RemoveResults.h" +%include "FeaturesAPI_Copy.h" +%include "FeaturesAPI_ImportResult.h" +%include "FeaturesAPI_PointCoordinates.h" +%include "FeaturesAPI_GeometryCalculation.h" +%include "FeaturesAPI_BoundingBox.h"