Ir al contenido

Capítulo 12: El atributo [Start]

Parte II: Primeros pasos con EPLAN API - Sección 5: Atributos de scripting - Nivel: Principiante


Al finalizar este capítulo serás capaz de:

  • Entender qué es un atributo en C#
  • Comprender el propósito del atributo [Start]
  • Escribir tu primer script funcional en EPLAN
  • Conocer la estructura mínima de un script
  • Diferenciar entre MessageBox y BaseException para mostrar información

Antes de comenzar este capítulo debes:

  • Haber completado la Parte I (Capítulos 1-11) sobre fundamentos de C#
  • Tener EPLAN Electric P8 instalado
  • Saber ejecutar scripts (Fichero > Extras > Interfaces > Ejecutar script…)
  • Conocer clases, métodos y namespaces de C#

Bienvenido a tu primer contacto con la EPLAN API. Hasta ahora has aprendido C# de forma genérica, pero a partir de este capítulo comenzarás a aplicar esos conocimientos para automatizar EPLAN Electric P8.

La pregunta fundamental es: ¿Cómo sabe EPLAN qué método ejecutar cuando abres un archivo .cs?

La respuesta es simple: mediante atributos de scripting. El más básico y fundamental es [Start].


Un atributo en C# es una etiqueta de metadatos que se coloca encima de una clase, método, propiedad o parámetro para indicar información adicional al compilador o al runtime.

Sintaxis:

[NombreDelAtributo]
public void MiMetodo()
{
// código
}

Los atributos van entre corchetes [] y se colocan justo antes del elemento al que afectan.

Los atributos permiten:

  • Marcar elementos con información especial
  • Modificar el comportamiento de clases o métodos
  • Indicar al runtime cómo debe tratar cierto código
  • Documentar características especiales del código
[Obsolete("Este método está obsoleto, usa el nuevo")]
public void MetodoViejo()
{
// ...
}
[Serializable]
public class MiClase
{
// Esta clase puede serializarse
}
[DllImport("user32.dll")]
public static extern int MessageBeep(uint beepType);

En EPLAN, usamos atributos de scripting para indicar qué métodos debe ejecutar el motor de scripts.


[Start] es un atributo de EPLAN que marca el punto de entrada de un script.

Cuando ejecutas un script en EPLAN (Fichero > Extras > Interfaces > Ejecutar script…), EPLAN busca un método marcado con [Start] y lo ejecuta automáticamente.

Analogía: Es como el método Main() en aplicaciones de consola C#, pero para scripts de EPLAN.

El atributo [Start] está definido en el namespace:

using Eplan.EplApi.Scripting;

Este namespace contiene todos los atributos de scripting de EPLAN:

  • [Start] - Punto de entrada
  • [DeclareAction] - Acciones personalizadas
  • [DeclareEventHandler] - Manejadores de eventos
  • [DeclareRegister] / [DeclareUnregister] - Carga automática

Para que [Start] funcione correctamente:

  1. Debe aplicarse a un método público

    [Start]
    public void MiMetodo() // ✓ Correcto
  2. El método debe ser void (no devolver valor)

    [Start]
    public void Ejecutar() // ✓ Correcto
    [Start]
    public string Ejecutar() // ✗ Incorrecto
  3. El método no debe tener parámetros (en su forma básica)

    [Start]
    public void Ejecutar() // ✓ Correcto
    [Start]
    public void Ejecutar(string param) // ✗ Incorrecto
  4. Solo puede haber un método [Start] por script

  5. Debe estar dentro de una clase pública

Si tu script no tiene ningún método marcado con [Start], EPLAN mostrará un error al intentar ejecutarlo:

No se encontró un punto de entrada en el script.

El atributo [Start] es obligatorio para scripts ejecutables.


Veamos el script más básico que puedes escribir en EPLAN:

Archivo: 01_HolaMundo.cs

using System.Windows.Forms;
using Eplan.EplApi.Scripting;
namespace MisPrimerosScripts
{
public class HolaMundo
{
[Start]
public void Ejecutar()
{
MessageBox.Show("Scripting is great!");
}
}
}

Analicemos cada parte del script:

Línea 1-2: Namespaces necesarios

using System.Windows.Forms; // Para MessageBox
using Eplan.EplApi.Scripting; // Para el atributo [Start]
  • System.Windows.Forms - Proporciona MessageBox.Show() para mostrar ventanas de diálogo
  • Eplan.EplApi.Scripting - Proporciona el atributo [Start]

Línea 4: Namespace (opcional pero recomendado)

namespace MisPrimerosScripts

Organiza tu código. No es obligatorio, pero es buena práctica.

Línea 6: Clase pública

public class HolaMundo

Toda clase que contenga [Start] debe ser pública.

Línea 8-9: Método con [Start]

[Start]
public void Ejecutar()
  • [Start] - Marca este método como punto de entrada
  • public - Debe ser público para que EPLAN pueda acceder
  • void - No devuelve ningún valor
  • Ejecutar() - El nombre puede ser cualquiera (Ejecutar, Function, Main, Run, etc.)

Línea 11: Código funcional

MessageBox.Show("Scripting is great!");

Muestra una ventana emergente con el mensaje.

3.3 ¿Por qué usar MessageBox en vez de Console.WriteLine?

Sección titulada «3.3 ¿Por qué usar MessageBox en vez de Console.WriteLine?»

Pregunta común: “En C# básico usábamos Console.WriteLine(), ¿por qué ahora usamos MessageBox.Show()?”

Respuesta:

EPLAN Electric P8 es una aplicación Windows con GUI (interfaz gráfica), NO una aplicación de consola.

  • Console.WriteLine() - Escribe en la consola de comandos (EPLAN no tiene consola visible)
  • MessageBox.Show() - Muestra una ventana de diálogo visible en pantalla

Si usas Console.WriteLine() en un script de EPLAN, el texto se imprimirá… ¡pero no lo verás en ningún lado!

Pasos:

  1. Abre EPLAN Electric P8
  2. Ve a: Fichero > Extras > Interfaces > Ejecutar script…
  3. Navega a la ubicación de 01_HolaMundo.cs
  4. Selecciona el archivo y haz clic en Abrir
  5. Verás una ventana emergente con el mensaje “Scripting is great!“

El nombre del método con [Start] puede ser cualquiera:

[Start]
public void Function() // ✓ Funciona
{
MessageBox.Show("Hola");
}
[Start]
public void Main() // ✓ Funciona
{
MessageBox.Show("Hola");
}
[Start]
public void Run() // ✓ Funciona
{
MessageBox.Show("Hola");
}

Recomendación: Usa nombres descriptivos como Ejecutar(), Run(), Function(), o Start().

El namespace es opcional. Puedes escribir:

using System.Windows.Forms;
using Eplan.EplApi.Scripting;
public class HolaMundo
{
[Start]
public void Ejecutar()
{
MessageBox.Show("Scripting is great!");
}
}

Funciona igual, pero es menos organizado.

using System.Windows.Forms;
using Eplan.EplApi.Scripting;
public class HolaMundo
{
[Start]
public void Ejecutar()
{
// Mostrar mensaje simple al usuario
MessageBox.Show("Scripting is great!");
// El método termina aquí
return;
}
}

El return; al final es opcional en métodos void, pero puede ayudar a la claridad.


Existen dos formas principales de mostrar información al usuario en scripts EPLAN:

  1. MessageBox.Show() - Ventana emergente (System.Windows.Forms)
  2. BaseException - Mensajes en la ventana “Mensajes de sistema” de EPLAN (Eplan.EplApi.Base)

Namespace: System.Windows.Forms

Características:

  • Muestra una ventana emergente que bloquea EPLAN hasta que el usuario la cierre
  • Muy visible e intrusivo
  • Ideal para mensajes importantes que requieren atención inmediata
  • Puede tener botones (OK, Yes/No, etc.)

Ejemplo:

using System.Windows.Forms;
using Eplan.EplApi.Scripting;
public class EjemploMessageBox
{
[Start]
public void Ejecutar()
{
MessageBox.Show("Este es un mensaje importante",
"Título",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}

Cuándo usar:

  • Confirmaciones (¿Desea continuar?)
  • Advertencias críticas
  • Errores que requieren atención inmediata
  • Información que el usuario DEBE ver

Namespace: Eplan.EplApi.Base

Características:

  • Muestra mensajes en la ventana “Mensajes de sistema” de EPLAN
  • No bloquea la interfaz
  • Menos intrusivo
  • El usuario puede revisar los mensajes después
  • Tiene niveles: Message, Warning, Error

Ejemplo:

using Eplan.EplApi.Base;
using Eplan.EplApi.Scripting;
public class EjemploBaseException
{
[Start]
public void Ejecutar()
{
// Mensaje informativo
new BaseException("Proceso completado correctamente",
MessageLevel.Message).FixMessage();
// Advertencia
new BaseException("Atención: Revisa la configuración",
MessageLevel.Warning).FixMessage();
// Error
new BaseException("Error al procesar archivo",
MessageLevel.Error).FixMessage();
}
}

Cuándo usar:

  • Logs de operaciones
  • Mensajes informativos que no requieren acción inmediata
  • Advertencias no críticas
  • Registro de progreso de operaciones largas

Importante: Para ver los mensajes de BaseException, debes abrir la ventana “Mensajes de sistema” en EPLAN (Ver > Mensajes de sistema).

Regla general:

  • MessageBox: Cuando necesitas la atención inmediata del usuario
  • BaseException: Para registro y logging de operaciones

Muchos scripts usan ambos:

  • BaseException para logs detallados
  • MessageBox solo para confirmaciones o errores críticos

6. Proyecto del capítulo: Tres variaciones de Hola Mundo

Sección titulada «6. Proyecto del capítulo: Tres variaciones de Hola Mundo»

Crear tres scripts que demuestren diferentes formas de usar [Start]:

  1. HolaMundo_MessageBox.cs - Usando MessageBox básico
  2. HolaMundo_MessageBoxAvanzado.cs - MessageBox con opciones
  3. HolaMundo_BaseException.cs - Usando BaseException

Archivo: 01_HolaMundo_MessageBox.cs

using System.Windows.Forms;
using Eplan.EplApi.Scripting;
public class HolaMundo_MessageBox
{
[Start]
public void Ejecutar()
{
// Mensaje más simple posible
MessageBox.Show("¡Hola desde EPLAN API!");
}
}

Qué hace: Muestra una ventana emergente con mensaje básico.

Archivo: 02_HolaMundo_MessageBoxAvanzado.cs

using System.Windows.Forms;
using Eplan.EplApi.Scripting;
public class HolaMundo_MessageBoxAvanzado
{
[Start]
public void Ejecutar()
{
// MessageBox con título, icono y botón personalizado
MessageBox.Show(
"Este es tu primer script en EPLAN API.\n\n" +
"Has usado correctamente el atributo [Start] para " +
"marcar el punto de entrada del script.",
"Felicitaciones",
MessageBoxButtons.OK,
MessageBoxIcon.Information
);
}
}

Qué hace: Muestra mensaje con título, icono y formato multilínea.

Archivo: 03_HolaMundo_BaseException.cs

using Eplan.EplApi.Base;
using Eplan.EplApi.Scripting;
public class HolaMundo_BaseException
{
[Start]
public void Ejecutar()
{
// Mensaje informativo en "Mensajes de sistema"
new BaseException(
"Script ejecutado correctamente usando el atributo [Start]",
MessageLevel.Message
).FixMessage();
}
}

Qué hace: Registra un mensaje en la ventana “Mensajes de sistema” de EPLAN.

Para verlo: Después de ejecutar el script, abre Ver > Mensajes de sistema en EPLAN.

  1. Ejecuta cada script desde EPLAN
  2. Observa las diferencias:
    • Scripts 1 y 2: Ventana emergente que debes cerrar
    • Script 3: Nada visible hasta que abras “Mensajes de sistema”

Error:

using System.Windows.Forms;
public class MiScript
{
[Start] // Error: No se reconoce 'Start'
public void Ejecutar()
{
MessageBox.Show("Hola");
}
}

Solución:

using System.Windows.Forms;
using Eplan.EplApi.Scripting; // Agregar este using
public class MiScript
{
[Start]
public void Ejecutar()
{
MessageBox.Show("Hola");
}
}

Error:

using System.Windows.Forms;
using Eplan.EplApi.Scripting;
public class MiScript
{
[Start]
private void Ejecutar() // ✗ Private no funciona
{
MessageBox.Show("Hola");
}
}

Solución:

[Start]
public void Ejecutar() // ✓ Debe ser public
{
MessageBox.Show("Hola");
}

Error:

[Start]
public string Ejecutar() // ✗ [Start] debe ser void
{
return "Hola";
}

Solución:

[Start]
public void Ejecutar() // ✓ Debe ser void
{
MessageBox.Show("Hola");
}

Error:

[Start]
public void Ejecutar(string mensaje) // ✗ No puede tener parámetros
{
MessageBox.Show(mensaje);
}

Solución:

[Start]
public void Ejecutar() // ✓ Sin parámetros
{
string mensaje = "Hola"; // Definir dentro del método
MessageBox.Show(mensaje);
}

En este capítulo aprendiste:

  • Qué son los atributos en C# y para qué sirven
  • El atributo [Start] marca el punto de entrada de un script EPLAN
  • Cómo escribir el script más simple posible con [Start]
  • Las reglas del atributo [Start]: método público, void, sin parámetros
  • La diferencia entre MessageBox (ventana emergente) y BaseException (mensajes de sistema)
  • Los errores comunes al usar [Start]

P: ¿Puedo tener varios métodos en la misma clase además de [Start]?

R: Sí, puedes tener todos los métodos adicionales que necesites. Solo el método con [Start] se ejecutará automáticamente, pero puedes llamar a otros métodos desde él.

P: ¿El nombre de la clase importa?

R: No. Puedes llamar a la clase como quieras. Solo debe ser pública.

P: ¿Puedo tener múltiples clases con [Start] en el mismo archivo?

R: Técnicamente sí, pero solo se ejecutará el primer [Start] que encuentre EPLAN. No es recomendable. Usa un archivo .cs por script.

P: ¿Qué pasa si mi script tiene un error de sintaxis?

R: EPLAN mostrará un error de compilación al intentar ejecutarlo. Revisa el mensaje de error para identificar el problema.


Capítulo 11: Manejo de errores - Completaste los fundamentos de C#

Capítulo 13: [DeclareAction] - Acciones personalizadas

En el próximo capítulo aprenderás a crear acciones personalizadas que pueden ejecutarse desde el menú de EPLAN y asignarse a botones de la cinta de opciones.


Última actualización: Enero 2025 Tiempo de lectura estimado: 20-25 minutos Código de ejemplo: code/cap-12/ Script de referencia: EPLAN-Scripting-4.0/01_FirstSteps/01_Start.cs