From dfc4794c6bb9a8379d95b88980070972ddeaf6db Mon Sep 17 00:00:00 2001 From: Charles PIGNEROL <> Date: Fri, 28 Nov 2025 10:39:30 +0100 Subject: [PATCH 1/3] First devs for issue 234 (Added the lima binding to the Python environment). --- src/Magix3D/CMakeLists.txt | 4 +++- src/Magix3D/cmake/Magix3D.in | 3 ++- src/Magix3D/cmake/Magix3DPython.py.in | 2 +- src/QtComponents/QtMgx3DMainWindow.cpp | 11 +++++++++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/Magix3D/CMakeLists.txt b/src/Magix3D/CMakeLists.txt index d5226890..06c959f9 100644 --- a/src/Magix3D/CMakeLists.txt +++ b/src/Magix3D/CMakeLists.txt @@ -47,7 +47,9 @@ install ( # Le script de lancement de Magix3D : find_package (QtPython3 REQUIRED) set (QtPython_RUNTIME_DIR "${QtPython3_RUNTIME_DIR}") -#find_package (LimaScripting) # Faut il ajouter le PATH à Lima si installé ailleurs ? +# On ajoute Lima qui fait partie intégrante du package "maillage" : +find_package (Lima REQUIRED COMPONENTS LimaScripting) +set (LIMA_BINDING_DIR ${LimaScripting_RUNTIME_DIR}) set (MAGIX3D_BINDING_INSTALL_DIR ${PYTHON_BINDING_DIR}) find_package (VTK REQUIRED COMPONENTS vtksys ) set (VTK_LIBRARY_PATH "${VTK_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") diff --git a/src/Magix3D/cmake/Magix3D.in b/src/Magix3D/cmake/Magix3D.in index 1ae03264..3ec84b87 100644 --- a/src/Magix3D/cmake/Magix3D.in +++ b/src/Magix3D/cmake/Magix3D.in @@ -24,9 +24,10 @@ ROOT_DIR=@CMAKE_INSTALL_PREFIX@ # Spécificités Magix3D : export QT_PYTHON_SCRIPTS_DIR=@QtPython_RUNTIME_DIR@ -export PYTHONPATH=@CMAKE_INSTALL_PREFIX@/@MAGIX3D_BINDING_INSTALL_DIR@:@ADDPYTHONPACKAGES@$PYTHONPATH +export PYTHONPATH=@CMAKE_INSTALL_PREFIX@/@MAGIX3D_BINDING_INSTALL_DIR@:@LIMA_BINDING_DIR@:@ADDPYTHONPACKAGES@$PYTHONPATH export PYTHONPATH=@QtPython_RUNTIME_DIR@:$PYTHONPATH export MGX3D_PATH=@CMAKE_INSTALL_PREFIX@/@MAGIX3D_BINDING_INSTALL_DIR@ +export LIMA_PATH=@LIMA_BINDING_DIR@ HELP_URL="-helpURL $ROOT_DIR/share/doc/@CMAKE_PROJECT_NAME@/sphinx" WIKI_URL="-wikiURL @URL_WIKI@" QUALIF_URL="-qualifURL @URL_QUALIF@" diff --git a/src/Magix3D/cmake/Magix3DPython.py.in b/src/Magix3D/cmake/Magix3DPython.py.in index 7d6a7a58..3e301739 100644 --- a/src/Magix3D/cmake/Magix3DPython.py.in +++ b/src/Magix3D/cmake/Magix3DPython.py.in @@ -3,7 +3,7 @@ import sys -dependencies = "@ADDPYTHONPACKAGES@" +dependencies = "@LIMA_BINDING_DIR@:@ADDPYTHONPACKAGES@" dependencies_tmp = dependencies.split(":") sys.path.insert(1,"@CMAKE_INSTALL_PREFIX@/@MAGIX3D_BINDING_INSTALL_DIR@") diff --git a/src/QtComponents/QtMgx3DMainWindow.cpp b/src/QtComponents/QtMgx3DMainWindow.cpp index 519ea90e..e380563d 100644 --- a/src/QtComponents/QtMgx3DMainWindow.cpp +++ b/src/QtComponents/QtMgx3DMainWindow.cpp @@ -3573,6 +3573,17 @@ void QtMgx3DMainWindow::showReady ( ) << "L'exécution de commandes Python pourrait ne pas fonctionner."; log(WarningLog(error)); } // else if (0 != env) + env = getenv ("LIMA_PATH"); + if (0 != env) + { + const string limaPath (env); + UTF8String path (Charset::UTF_8); + path << "sys.path.append(\"" << limaPath << "\")"; + _pythonPanel->executeCommand (path); + UTF8String importLine (Charset::UTF_8); + importLine << "from LimaScripting import *"; + _pythonPanel->executeCommand (importLine); + } // if (0 != env) } // QtMgx3DMainWindow::initPythonScripting From 993d15ee125f459392a62d9f9ca1201d94b540ff Mon Sep 17 00:00:00 2001 From: Charles PIGNEROL <> Date: Fri, 28 Nov 2025 15:24:11 +0100 Subject: [PATCH 2/3] Issue #234. Added the lima binding to the Python environment. WARNING: requires lima v 7.12.1 for proper operation, which should be available next week. --- src/QtComponents/QtMgx3DMainWindow.cpp | 28 +++++++++++++++----------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/QtComponents/QtMgx3DMainWindow.cpp b/src/QtComponents/QtMgx3DMainWindow.cpp index e380563d..78f4d107 100644 --- a/src/QtComponents/QtMgx3DMainWindow.cpp +++ b/src/QtComponents/QtMgx3DMainWindow.cpp @@ -3521,7 +3521,8 @@ void QtMgx3DMainWindow::showReady ( ) CHECK_NULL_PTR_ERROR(_pythonPanel) _pythonPanel->setInterpreterName("Magix3D interpreter"); // On facilite la tache de l'utilisateur : récupération du contexte de cette session : - char *env = getenv("MGX3D_PATH"); + char* env = getenv ("MGX3D_PATH"); + char* limaEnv = getenv ("LIMA_PATH"); if (0 != env) { _pythonPanel->executeCommand("import sys"); @@ -3532,6 +3533,20 @@ void QtMgx3DMainWindow::showReady ( ) UTF8String importLine(Charset::UTF_8); importLine << "import pyMagix3D as " << getMgx3DAlias(); _pythonPanel->executeCommand(importLine); + + if (0 != limaEnv) + { + const string comment = PythonLogOutputStream::toComment (UTF8String ("Pour une utilisation directe et scriptée de l'API Lima :", Charset::UTF_8)); + _pythonPanel->executeCommand (comment); + const string limaPath (limaEnv); + UTF8String limaPathCmd (Charset::UTF_8); + limaPathCmd << "sys.path.append(\"" << limaPath << "\")"; + _pythonPanel->executeCommand (limaPathCmd); + UTF8String limaImportLine (Charset::UTF_8); + limaImportLine << "from LimaScripting import *"; + _pythonPanel->executeCommand (limaImportLine); + } // if (0 != limaEnv) + UTF8String contextLine(Charset::UTF_8); contextLine << getContextAlias() << " = " << getMgx3DAlias() << ".getContext(\"" << getContext().getName() << "\")"; @@ -3573,17 +3588,6 @@ void QtMgx3DMainWindow::showReady ( ) << "L'exécution de commandes Python pourrait ne pas fonctionner."; log(WarningLog(error)); } // else if (0 != env) - env = getenv ("LIMA_PATH"); - if (0 != env) - { - const string limaPath (env); - UTF8String path (Charset::UTF_8); - path << "sys.path.append(\"" << limaPath << "\")"; - _pythonPanel->executeCommand (path); - UTF8String importLine (Charset::UTF_8); - importLine << "from LimaScripting import *"; - _pythonPanel->executeCommand (importLine); - } // if (0 != env) } // QtMgx3DMainWindow::initPythonScripting From 4da9521cd0e9b001ce1a6a6c8fe83eb3d35c0238 Mon Sep 17 00:00:00 2001 From: nicolas le goff Date: Wed, 3 Dec 2025 11:25:36 +0100 Subject: [PATCH 3/3] added the lima binding to the Python environment for Magix3dBatch --- src/Magix3DBatch/CMakeLists.txt | 4 ++++ src/Magix3DBatch/cmake/Magix3DBatch.in | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Magix3DBatch/CMakeLists.txt b/src/Magix3DBatch/CMakeLists.txt index d37a5171..3d335af8 100644 --- a/src/Magix3DBatch/CMakeLists.txt +++ b/src/Magix3DBatch/CMakeLists.txt @@ -13,6 +13,10 @@ add_executable (${MAGIX3D_BATCH_EXE} Magix3DBatch.cpp) target_link_libraries (${MAGIX3D_BATCH_EXE} PUBLIC pyMagix3D) target_link_libraries (${MAGIX3D_BATCH_EXE} PUBLIC z) # Pour Qt sous Ubuntu installé via l'installeur Qt) +# On ajoute Lima qui fait partie intégrante du package "maillage" : +find_package (Lima REQUIRED COMPONENTS LimaScripting) +set (LIMA_BINDING_DIR ${LimaScripting_RUNTIME_DIR}) + # INSTALL_RPATH modifie le rpath pour les libs internes au projet : set_target_properties (${MAGIX3D_BATCH_EXE} PROPERTIES INSTALL_RPATH_USE_LINK_PATH 1 INSTALL_RPATH ${CMAKE_PACKAGE_RPATH_DIR}) diff --git a/src/Magix3DBatch/cmake/Magix3DBatch.in b/src/Magix3DBatch/cmake/Magix3DBatch.in index c9d05e2a..08fd7761 100644 --- a/src/Magix3DBatch/cmake/Magix3DBatch.in +++ b/src/Magix3DBatch/cmake/Magix3DBatch.in @@ -23,8 +23,9 @@ fi ROOT_DIR=@CMAKE_INSTALL_PREFIX@ # Spécificités Magix3D : -export PYTHONPATH=@CMAKE_INSTALL_PREFIX@/@MAGIX3D_BINDING_INSTALL_DIR@:@ADDPYTHONPACKAGES@$PYTHONPATH +export PYTHONPATH=@CMAKE_INSTALL_PREFIX@/@MAGIX3D_BINDING_INSTALL_DIR@:@LIMA_BINDING_DIR@:@ADDPYTHONPACKAGES@$PYTHONPATH export MGX3D_PATH=@CMAKE_INSTALL_PREFIX@/@MAGIX3D_BINDING_INSTALL_DIR@ +export LIMA_PATH=@LIMA_BINDING_DIR@ DEFAULT_CONFIG="-defaultConfig $ROOT_DIR/etc/magix3d.xml" CONFIG_PATCHS="-userConfigPatchs $ROOT_DIR/etc/magix3d_patchs.xml"