—
OS: Debian GNU/Linux 10 (buster)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.4.
Build type: Release
Python version: 3.7.6
Qt version: 5.12.5
Coin version: 4.0.0
OCC version: 7.3.0
Locale: French/Belgium (fr_BE)
---
J’essaye de tester s’il serait possible avec l’éditeur de matériaux de voir évoluer la somme totale du poids en cours de conception.
Dans Arch, j’ai ouvert l’éditeur (qui apparaît dans la vue combinée Tâche), donné un nom au matériau, cliqué sur l’icône en face du champ nom, ajouté une valeur dans le champ Density, cliqué sur ok pour fermer cette fenêtre d’édition, puis sur ok pour fermer la fenêtre de la vue combinée…
Ce qui crée un plantage de Freecad avec le message suivant dans le terminal qui l’a ouvert :
locations to look for material cards:
/usr/share/freecad/Mod/Material/StandardMaterial
/home/benoit/.FreeCAD/Material
Traceback (most recent call last):
File "/usr/share/freecad/Mod/Arch/ArchMaterial.py", line 299, in onChanged
val = str(obj.Color[:3])
<class 'RecursionError'>: maximum recursion depth exceeded while getting the repr of an object
Fatal Python error: Cannot recover from stack overflow.
Current thread 0x00007f2f7d4999c0 (most recent call first):
File "/usr/share/freecad/Mod/Arch/ArchMaterial.py", line 299 in onChanged
File "/usr/share/freecad/Mod/Arch/ArchMaterial.py", line 270 in onChanged
File "/usr/share/freecad/Mod/Arch/ArchMaterial.py", line 333 in onChanged
File "/usr/share/freecad/Mod/Arch/ArchMaterial.py", line 270 in onChanged
File "/usr/share/freecad/Mod/Arch/ArchMaterial.py", line 333 in onChanged
File "/usr/share/freecad/Mod/Arch/ArchMaterial.py", line 333 in onChanged
File "/usr/share/freecad/Mod/Arch/ArchMaterial.py", line 333 in onChanged
--8<--
Je trouve pas où est traitée l’exception.
Dans la fonction :
def onChanged(self,obj,prop):
val = str(obj.Color[:3])
Mais c’est peut-être géré en amont ou en aval ?
Soit dans la classe passée en paramètre, lors de l’affectation ci-dessus, soit lors de l’appel de onChanged.
Et puis qu’est-ce qui coince ?
Donc j’ai ajouté une gestion d’exception vite fait pour voir
Code: Select all
try:
val = str(obj.Color[:3])
except:
raise RuntimeError("Est-ce ici que ça foire ?")
Bon ça dissimule plus que ça n’éclaire sur la cause, mais juste par curiosité.
Traceback (most recent call last):
File "/usr/share/freecad/Mod/Arch/ArchMaterial.py", line 302, in onChanged
raise RuntimeError("Est-ce ici que ça foire ?")
<class 'RuntimeError'>: Est-ce ici que ça foire ?
Je ne suis pas assez compétant pour comprendre ce qui ne va pas, il faudrait aller voir ce qui se passe dans l’objet passé en paramètre ou si c’est simplement le slicing ou le casting en chaîne qui pose problème.
Quant au tout début du message, je suppose que si ça se passait bien, le fichier ci-dessous pour l’instant inexistant serait créé au moment ou j’ajoute un matériau perso…
/home/benoit/.FreeCAD/Material
Merci d’avance pour vos lumières.
–
Benoit