> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/french/key-features/create-plugins-with-designer-window.md).

# Créer des plugins

Développez des nœuds personnalisés en utilisant la puissance de Python.

## Première prise en main <a href="#first-look" id="first-look"></a>

<figure><img src="https://3304769498-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB7SJoCMrfYBI0Mcrh3Hq%2Fuploads%2Fgit-blob-44474fba6da83e832204ad7cf690a9888f02e681%2Ffirst-look.jpg?alt=media" alt=""><figcaption></figcaption></figure>

Designer Window est le moyen le plus rapide pour passer de « j’ai besoin d’un nœud spécial » → « je peux l’utiliser dans ma scène ».

Vous écrivez (ou générez) une petite classe Python (un `Block`), vous appuyez sur **CREATE BLOCK**, et elle apparaît dans la liste des **Custom Blocks**.

{% hint style="info" %}
Si vous aimez partir d’un modèle fonctionnel, ouvrez [Coding Reference](/french/key-features/create-plugins-with-designer-window/coding-reference.md) et copiez l’exemple de block.
{% endhint %}

### Démarrage rapide <a href="#generate-block-script-button" id="generate-block-script-button"></a>

Suivez ces étapes une fois, puis revenez explorer les détails.

<figure><img src="https://3304769498-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB7SJoCMrfYBI0Mcrh3Hq%2Fuploads%2Fgit-blob-56906816ac8adbc6b2d482daa0fbcfb8967deee1%2Fdesigner-window-how-to-open.jpg?alt=media" alt=""><figcaption></figcaption></figure>

1. Ouvrez **Designer Window**.
2. Conservez le script par défaut, collez le vôtre ou générez-le via l’agent IA.
3. Assurez-vous que le script se termine par `add_block(...)`.
4. Appuyez sur **CREATE BLOCK**.
5. Trouvez votre block dans la liste **Custom Blocks** et glissez-le dans une scène.

{% hint style="success" %}
Astuce : Gardez les noms des sockets stables. Cela rend les mises à jour d’un block beaucoup plus fluides.
{% endhint %}

### Éditeur de code <a href="#code-editor" id="code-editor"></a>

La grande zone d’édition est la source de vérité pour votre block.

Votre script doit inclure (minimum) :

* `from studio.custom_block import *`
* Une classe qui hérite de `Block`
* Un `op_code` correspondant
* Une ligne finale `add_block(MyBlock.op_code, MyBlock)`

{% hint style="warning" %}
Lors de la création, AugeLab Studio normalise l’indentation en remplaçant les tabulations par 4 espaces avant d’enregistrer.
{% endhint %}

### Assistant IA <a href="#parameter-settings-section" id="parameter-settings-section"></a>

<figure><img src="https://3304769498-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB7SJoCMrfYBI0Mcrh3Hq%2Fuploads%2Fgit-blob-f0b6c5460a9e602ac38f4cf1b57c4123d25620c0%2Fprompt.jpg?alt=media" alt=""><figcaption></figcaption></figure>

En bas de Designer Window vous pouvez :

* Écrire une invite (exemple : “Write a block that converts a BGR image to grayscale”)
  * Soyez descriptif pour de meilleurs résultats.
  * Pour l’instant, l’assistant de blocks personnalisés est gratuit à l’usage.
* Choisir un modèle dans le menu déroulant
* Appuyer sur **Submit** pour générer du code dans l’éditeur

Ceci est conçu pour vous aider à démarrer rapidement. Vous gardez toujours le contrôle — relisez et modifiez le code avant d’appuyer sur **CREATE BLOCK**.

{% hint style="info" %}
L’agent IA se souvient de vos précédentes invites, vous pouvez demander des améliorations ou des modifications.
{% endhint %}

{% hint style="warning" %}
La fonctionnalité IA peut être indisponible selon la licence, la connectivité ou l’état du serveur.
{% endhint %}

### Mise à jour d’un block existant <a href="#block-configuration" id="block-configuration"></a>

Lorsque vous appuyez de nouveau sur **CREATE BLOCK** :

* Le fichier est écrasé.
* L’entrée dans la liste **Custom Blocks** est rafraîchie.
* Studio tente un *remplacement sécurisé* en effort maximal dans les scènes ouvertes (il essaie de préserver les connexions).

{% hint style="info" %}
Si vous avez renommé des sockets, Studio peut reconnecter par index en tant que solution de secours. C’est pourquoi des noms de sockets stables sont importants.
{% endhint %}

<details>

<summary><strong>Avancé : ce que fait réellement CREATE BLOCK</strong></summary>

* Studio trouve la première classe héritant de `Block` et utilise son nom de classe comme nom du block.
* Votre script est enregistré sous `<BlockName>.py` dans le dossier marketplace des custom blocks.
* Studio importe `custom_blocks.<BlockName>` et l’instancie une fois pour validation.
* Si tout est correct, le block devient disponible dans la liste **Custom Blocks**.

{% hint style="info" %}
Emplacement du fichier : `.../AugeLab Studio/marketplace/custom_blocks/<BlockName>.py`
{% endhint %}

{% hint style="warning" %}
Si l’import/validation échoue, Studio affiche l’erreur et supprime le fichier. Corrigez le script et réessayez.
{% endhint %}

</details>

### Recharger des blocks dans Designer Window <a href="#reloading-blocks-into-designer-window" id="reloading-blocks-into-designer-window"></a>

Pour modifier un block existant, faites un clic droit sur son nom dans la liste **Custom Blocks** et choisissez **Load into Designer Window**.

{% hint style="warning" %}
Charger un block dans Designer Window ne fonctionne que pour les scripts utilisateur éditables (`.py`). Les blocks compilés/chiffrés (par exemple `.pyd` ou scripts protégés par PyArmor) sont volontairement bloqués.
{% endhint %}

<figure><img src="https://3304769498-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB7SJoCMrfYBI0Mcrh3Hq%2Fuploads%2Fgit-blob-a3e2c436eaf966be146347dcba157f50b15550ca%2Fimage%20(7).png?alt=media" alt=""><figcaption><p>Load Existing Block</p></figcaption></figure>

{% hint style="info" %}
« Reload » met à jour la liste **Custom Blocks** (ajoute les nouveaux fichiers / supprime les fichiers supprimés). Il n’actualise pas à chaud les nœuds déjà placés dans les scènes.

<img src="https://3304769498-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB7SJoCMrfYBI0Mcrh3Hq%2Fuploads%2Fgit-blob-7523e772522bf1a464bae9117625326ab34e11a2%2Fcustom-block-refrest.jpg?alt=media" alt="Refresh Block List" data-size="original">
{% endhint %}
