Dans une Macro je compare des éléments entre eux pour reconnaître ceux qui sont identiques. Je m’en sors en comparants les coordonnées, les « boundbox », etc, mais je me demande si je ne pourrais pas utiliser les fonctions, « isEqual », « isPartner » ou « isPartner ». Mais je n'arrive pas à comprendre leur fonctionnement. Elles me renvoient toujours un « False» même sur des éléments identiques (cf. code ci-dessous). Peut-être même qu’elles ne servent pas à faire ce que je crois qu’elle pourrait faire !!
Est-ce que quelqu’un les a déjà utilisées ?
Sinon, je profite de ce post et suite à un précédent message où rockn évoque un outil pour reconnaître les poutres de bois, pour diffuser un lien vers mon dépôt github où j'ai commencé a créer une macro qui reconnaît également les poutres et les plaques mais qui est plus orientée chaudronnerie. Je serais curieux de comparer les deux méthodes de reconnaissance quand rockn diffusera son travail.
Macro « 01AnalyseSolides.FCMacro »dans le dossier Macros
https://github.com/Siardeni/FreeCADTools
Plus généralement, FreeCADTools est un atelier perso que j'ai créé au fil du temps depuis quelques années maintenant et que j'utilise presque au quotidien dans mon boulot de dessinateur. J'ai « volé » des idées à droite à gauche dans les ateliers et les macros existantes déjà diffusées, les ateliers de yorick bien sur et la macro Work Feature de rentlau_64 notamment, merci à eux.
Il est évident que tous ces outils peuvent être bugés et où un peu bancales je progresse petit à petit avec python et github…
Je laisse ceux qui le souhaitent découvrir les quelques outils pour beaucoup perfectibles et je reste bien sur ouverts aux conseils, commentaires et autres questions.
Salutations,
Code: Select all
>>> a=Part.makeBox(10,10,10)
>>> b=Part.makeBox(10,10,10)
>>> a.isEqual(b)
False
>>> b.isEqual(a)
False
>>> b.isEqual(b)
True
>>> b.isPartner(a)
False
>>> b.isPartner(b)
True
>>> b=a.copy()
>>> b.isPartner(a)
False
>>> b.isEqual(a)
False
>>> b.isSame(a)
False
>>> b.isSame(b)
True
>>> a=Part.makeLine((1.,2.,3.),(4.,5.,6.))
>>> b=Part.makeLine((1.,2.,3.),(4.,5.,6.))
>>> c=a.copy()
>>> a.isEqual(b)
False
>>> a.isEqual(c)
False
>>> b.isEqual(c)
False
>>> a.isSame(b)
False
>>> b.isSame(c)
False
>>> a.isSame(c)
False
>>> a
<Edge object at 0F146BB0>
>>> a.isSame(a)
True
Code: Select all
a=Part.makeBox(10,10,10)
b=Part.makeBox(10,10,10)
a.isEqual(b)
b.isEqual(a)
b.isEqual(b)
b.isPartner(a)
b.isPartner(b)
b=a.copy()
b.isPartner(a)
b.isEqual(a)
b.isSame(a)
b.isSame(b)
a=Part.makeLine((1.,2.,3.),(4.,5.,6.))
b=Part.makeLine((1.,2.,3.),(4.,5.,6.))
c=a.copy()
a.isEqual(b)
a.isEqual(c)
b.isEqual(c)
a.isSame(b)
b.isSame(c)
a.isSame(c)
a
a.isSame(a)
OS: Windows 7
Word size of OS: 64-bit
Word size of FreeCAD: 32-bit
Version: 0.16.5354 (Git)
Build type: Release
Branch: master
Hash: 15d7369de823f0789e1abaa5e4d26fe80d2cd751
Python version: 2.7.8
Qt version: 4.8.6
Coin version: 4.0.0a
OCC version: 6.8.0.oce-0.17