Scripted objects with attachment/fr

Introduction
Le but de cette page est de montrer un exemple minimal de fonctionnalité de Part Ancrage utilisant des Objets créés par script en Python.

Voir l'Exemple minimal complet ci-dessous.

Le GIF suivant montre comment attacher notre boîte personnalisée à un cylindre et mettre à jour automatiquement sa position lorsque la position du cylindre change.



REMARQUE: La boîte est notre objet personnalisé crée par script et le cylindre est un objet FreeCAD standard généré à partir de l'atelier Part.

Ajouter une extension attachée
Tout d'abord, nous devons ajouter l'extension  à notre objet   dans le constructeur, ou la méthode   de notre objet créé par script personnalisé. Sans ce code, nous verrions la boîte de dialogue d'avertissement suivante lors de la connexion de notre objet personnalisé créé par script à un autre objet.



Mis à jour de la position en fonction de l'objet attaché
Ensuite, dans la méthode execute de notre script personnalisé, nous devons appeler le positionBySupport sur notre objet Part::FeaturePython. Si  n'est pas appelé, notre objet personnalisé crée par script ne mettra pas à jour sa position lorsque la position de l'objet attaché change.

Références

 * Part Ancrage
 * FreeCAD Forum - Parametric attachment of scripted object
 * FreeCAD Forum - Port attachment to be an extension
 * GitHub - freecad-part-attachment-python-example

Testé avec la version FreeCAD
Testé avec la version suivante de FreeCAD: OS: Ubuntu 18.04.3 LTS Word size of OS: 64-bit Word size of FreeCAD: 64-bit Version: 0.18.16146 (Git) AppImage Build type: Release Branch: (HEAD detached at 0.18.4) Hash: 980bf9060e28555fecd9e3462f68ca74007b70f8 Python version: 3.6.7 Qt version: 5.6.2 Coin version: 4.0.0a OCC version: 7.3.0 Locale: English/UnitedStates (en_US)

Remarque : pour FreeCAD 0.19, ce tutoriel nécessite une mise à jour mineure :
 * Le deuxième argument de la méthode `addExtension` est devenu obsolète.
 * Pour plus de détails, voir https://forum.freecadweb.org/viewtopic.php?f=10&t=54370