Bonjour à tous,
J’aurais besoin de votre aide pour une question de design de logiciel.
Je commence par vous donner du contexte :
- CadQuery est une librairie python basée sur OpenCascade qui permet de créer des modèles géométriques 3D.
- Je développe actuellement un logiciel GUI avec pyqt pour pouvoir visualiser ces modèles 3D.
Les formats de fichiers 3D habituels sont des formats avec les extensions suivantes : .stl, .step, .obj, .iges … Or pour cadquery les fichiers de modèles 3D sont des fichiers python.
J’en viens donc à ma question qui est : Comment puis-je importer ces modèles cadquery (au format .py donc) dans mon application GUI ?
J’ajoute à cette question quelques contraintes :
- Je veux que mon application recharge automatiquement le fichier si il a été modifié par un logiciel extérieur.
- Les objets python de cadquery ne sont pas picklable.
En creusant un peu la question une solution qui pourrait fonctionner serait d’importer le fichier python du modèle 3D pendant l’exécution de mon app GUI et de le recharger via importlib.reload
à chaque changement cependant il semble que importlib.reload
soit limité, si par exemple on supprime tout le contenu du fichier python du modèle 3D, si j’appelle importlib.reload
l’interpréteur de mon app GUI aura toujours les anciens objets en mémoire et cela peut donc mener à des comportements inattendus.
De la même manière si mon fichier python modèle 3D importe lui même d’autres modules, cela peut être compliqué de s’assurer que tout a bien été rechargé correctement.
Je ne connais pas trop les fonctionnement de python à ce niveau la donc je ne sais pas trop comment je pourrais m’y prendre.
A l’écoute de vos propositions, Merci