# Crear plugins

## Primer vistazo <a href="#first-look" id="first-look"></a>

<figure><img src="/files/dOnPqHNwtRKb2fNwzlWG" alt=""><figcaption></figcaption></figure>

Designer Window es la forma más rápida de pasar de “Necesito un nodo especial” → “Puedo usarlo en mi escena”.

Escribes (o generas) una pequeña clase en Python (un `Block`), presionas **CREATE BLOCK**, y aparece en la lista de Custom Blocks.

{% hint style="info" %}
Si te gusta empezar desde una plantilla que ya funcione, abre [Coding Reference](/spanish/caracteristicas-clave/create-plugins-with-designer-window/coding-reference.md) y copia el bloque de ejemplo.
{% endhint %}

### Inicio rápido <a href="#generate-block-script-button" id="generate-block-script-button"></a>

Sigue estos pasos una vez, luego vuelve y explora los detalles.

<figure><img src="/files/BeS7qNotha2zIRVi3ma8" alt=""><figcaption></figcaption></figure>

1. Abre **Designer Window**.
2. Mantén el script por defecto, pega el tuyo o genera uno con el asistente de IA.
3. Asegúrate de que el script termine con `add_block(...)`.
4. Presiona **CREATE BLOCK**.
5. Encuentra tu bloque en la lista de **Custom Blocks** y arrástralo a una escena.

{% hint style="success" %}
Consejo: Mantén los nombres de los sockets estables. Facilita mucho la actualización de un bloque.
{% endhint %}

### Editor de código <a href="#code-editor" id="code-editor"></a>

El área grande del editor es la fuente de verdad para tu bloque.

Tu script debe incluir (como mínimo):

* `from studio.custom_block import *`
* Una clase que herede de `Block`
* Un `op_code` que coincida
* Una línea final `add_block(MyBlock.op_code, MyBlock)`

{% hint style="warning" %}
Al crear, AugeLab Studio normaliza la indentación reemplazando tabs por 4 espacios antes de guardar.
{% endhint %}

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

<figure><img src="/files/KKbNCcMDgHoYFpBxSntx" alt=""><figcaption></figcaption></figure>

En la parte inferior de Designer Window puedes:

* Escribir un prompt (ejemplo: “Write a block that converts a BGR image to grayscale”)
  * Sé descriptivo para obtener mejores resultados.
  * Por ahora, el asistente de custom blocks es gratuito.
* Elegir un modelo desde el desplegable.
* Presionar **Submit** para generar código en el editor.

Esto está pensado para que empieces rápido. Siempre tienes el control: revisa y edita el código antes de presionar **CREATE BLOCK**.

{% hint style="info" %}
El agente de IA recuerda tus prompts anteriores; puedes pedir mejoras o cambios.
{% endhint %}

{% hint style="warning" %}
La función de IA puede no estar disponible según la licencia, la conectividad o el estado del servidor.
{% endhint %}

### Actualizar un bloque existente <a href="#block-configuration" id="block-configuration"></a>

Cuando presionas **CREATE BLOCK** de nuevo:

* El archivo se sobrescribe.
* La entrada en la lista de Custom Blocks se refresca.
* Studio intenta un *safe replace* por su cuenta en las escenas abiertas (intenta preservar las conexiones).

{% hint style="info" %}
Si renombraste sockets, Studio puede reconectar por índice como alternativa. Por eso es importante mantener nombres de sockets estables.
{% endhint %}

<details>

<summary><strong>Avanzado: Qué hace exactamente CREATE BLOCK</strong></summary>

* Studio encuentra la primera clase que hereda de `Block` y usa su nombre de clase como nombre del bloque.
* Tu script se guarda como `<BlockName>.py` en la carpeta marketplace custom blocks.
* Studio importa `custom_blocks.<BlockName>` y lo instancia una vez para validarlo.
* Si todo está bien, el bloque queda disponible en la lista de Custom Blocks.

{% hint style="info" %}
Ubicación del archivo: `.../AugeLab Studio/marketplace/custom_blocks/<BlockName>.py`
{% endhint %}

{% hint style="warning" %}
Si la importación/validación falla, Studio muestra el error y elimina el archivo. Corrige el script e inténtalo de nuevo.
{% endhint %}

</details>

### Recargar bloques en Designer Window <a href="#reloading-blocks-into-designer-window" id="reloading-blocks-into-designer-window"></a>

Para editar un bloque existente, haz clic derecho en su nombre en la lista de Custom Blocks y elige **Load into Designer Window**.

{% hint style="warning" %}
Cargar un bloque en Designer Window solo funciona para scripts de usuario editables (`.py`). Los bloques compilados/encriptados (por ejemplo `.pyd` o scripts protegidos con PyArmor) están bloqueados intencionalmente.
{% endhint %}

<figure><img src="/files/AlGoZXtSwRvIkWwAMgYR" alt=""><figcaption><p>Load Existing Block</p></figcaption></figure>

{% hint style="info" %}
“Reload” actualiza la lista de Custom Blocks (añade archivos nuevos / elimina archivos borrados). No actualiza en caliente los nodos ya colocados en escenas.

<img src="/files/zOyO9l7vDDyPiqxnlxVb" alt="Refresh Block List" data-size="original">
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.augelab.com/spanish/caracteristicas-clave/create-plugins-with-designer-window.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
