Poids de la somme des objets : plantage

Forum destiné aux questions et discussions en français
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Post Reply
benoitlst
Posts: 106
Joined: Wed Jan 16, 2019 8:35 pm

Poids de la somme des objets : plantage

Post by benoitlst »

Bonjour à toutes et tous,

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
schupin
Posts: 476
Joined: Sun Jan 21, 2018 1:43 pm

Re: Poids de la somme des objets : plantage

Post by schupin »

Je n'ai pas regardé le problème cité ci-dessus plus en détail (je ferai ça un peu plus tard), mais peut être qu'il y aurait des solutions à prendre dans la macro que j'avais écrite là : https://forum.freecadweb.org/viewtopic.php?t=31883 ?

(ça calcule le centre de gravité, donc la masse de chaque morceau et forcément la masse totale)
benoitlst
Posts: 106
Joined: Wed Jan 16, 2019 8:35 pm

Re: Poids de la somme des objets : plantage

Post by benoitlst »

schupin wrote: Tue May 12, 2020 3:36 pm Je n'ai pas regardé le problème cité ci-dessus plus en détail (je ferai ça un peu plus tard), mais peut être qu'il y aurait des solutions à prendre dans la macro que j'avais écrite là : https://forum.freecadweb.org/viewtopic.php?t=31883 ?

(ça calcule le centre de gravité, donc la masse de chaque morceau et forcément la masse totale)
Bonjour et merci pour l'info !

Je vais aller vois ça !

--
Benoit
Post Reply