> 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

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

<figure><img src="/files/VZlMdiAj5uD6IkmuxhE6" 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="/files/cO268CWCz4JlJWkiDpcY" 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="/files/ErEXj50cCxHs9571GMuI" 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="/files/cMTpl6VB6NIG5N6xtbVo" 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="/files/EwTE10bUNBvecqBGW4xY" alt="Refresh Block List" data-size="original">
{% endhint %}
