Ir al contenido

Capítulo 26: SimpleProgress - Progreso simple

Capítulo 26: SimpleProgress - Progreso simple

Sección titulada «Capítulo 26: SimpleProgress - Progreso simple»

Parte VII: Barras de progreso - Sección 15: Progress - Nivel: Intermedio


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

  • Implementar la barra de progreso nativa de EPLAN (Progress)
  • Mostrar el avance de tareas largas para evitar que EPLAN parezca congelado
  • Usar BeginPart, EndPart y Step
  • Configurar opciones de cancelación (permitir al usuario abortar)

  • Haber completado el Capítulo 22 (Decider)
  • Entender bucles (for, foreach)
  • Conocer System.Threading.Thread.Sleep (para simular carga en ejemplos)

Introducción: El problema del “EPLAN congelado”

Sección titulada «Introducción: El problema del “EPLAN congelado”»

Cuando ejecutas un script que tarda mucho tiempo (ej. procesar 500 páginas), la interfaz de EPLAN se congela. El usuario no sabe si el programa está trabajando o si se bloqueó.

Solución: EPLAN proporciona la clase Progress para mostrar una barra de carga estándar.


La clase Progress se encuentra en Eplan.EplApi.Base.

using Eplan.EplApi.Base;
// 1. Crear instancia
Progress progress = new Progress("SimpleProgress");
// 2. Configurar (título y máximo)
progress.BeginPart(100, "Procesando datos...");
// 3. Mostrar inmediatamente
progress.ShowImmediately();
// 4. Actualizar en un bucle
for (int i = 0; i < 100; i++)
{
progress.Step(1); // Avanzar 1 paso
}
// 5. Finalizar
progress.EndPart();

MétodoDescripción
BeginPart(total, título)Inicia la barra con un valor máximo (total) y un título.
ShowImmediately()Fuerza que la barra aparezca instantáneamente (si no, puede tardar un poco).
SetActionText(texto)Cambia el texto descriptivo debajo de la barra.
Step(cantidad)Incrementa el progreso en la cantidad especificada.
EndPart(bool)Cierra la barra. Pasar true para limpiar.
SetAllowCancel(bool)Permite que el usuario cancele el proceso con el botón “Cancelar”.

3. Ejemplo práctico: Procesamiento simulado

Sección titulada «3. Ejemplo práctico: Procesamiento simulado»

Vamos a crear un script que simule una tarea larga (como exportar archivos) usando una barra de progreso.

using Eplan.EplApi.Base;
using Eplan.EplApi.Scripting;
using System.Threading; // Para Sleep
public class EjemploProgress
{
[Start]
public void Function()
{
int totalPasos = 20;
// 1. Iniciar Progress
Progress progress = new Progress("SimpleProgress");
progress.SetAllowCancel(true); // Permitir cancelar
progress.BeginPart(totalPasos, "Iniciando proceso...");
progress.ShowImmediately();
try
{
for (int i = 0; i < totalPasos; i++)
{
// 2. Verificar si el usuario canceló
if (progress.Canceled())
{
new BaseException("Proceso cancelado por usuario", MessageLevel.Warning).FixMessage();
break;
}
// 3. Actualizar texto y barra
progress.SetActionText("Procesando elemento " + (i + 1) + " de " + totalPasos);
progress.Step(1);
// IMPORTANTE: Simular trabajo
Thread.Sleep(200); // 0.2 segundos por paso
}
}
finally
{
// 4. Siempre finalizar la barra
progress.EndPart();
}
}
}
  • progress.Canceled(): Devuelve true si el usuario presionó Cancelar. Es vital comprobarlo dentro del bucle.
  • try-finally: Asegura que progress.EndPart() se llame incluso si ocurre un error, para que la barra no se quede “pegada” en pantalla.

4. Patrón recomendado: Progress en bloques using

Sección titulada «4. Patrón recomendado: Progress en bloques using»

Aunque C# usa IDisposable, la clase Progress de EPLAN API no implementa IDisposable de forma tradicional en versiones antiguas, por lo que el patrón try-finally es el más seguro.

Sin embargo, si quieres encapsular la lógica, asegúrate siempre de cerrar la barra.

Error común: Olvidar llamar a EndPart(). Consecuencia: La barra de progreso sigue visible sobre EPLAN aunque el script haya terminado.


Algunos comandos de CommandLineInterpreter (como export) muestran su propia barra de progreso.

  • Si usas Execute("export"), EPLAN manejará su propia barra.
  • Si tu script hace un bucle que llama muchas veces a comandos rápidos, o procesa lógica propia (leer archivos, cálculos), debes crear la barra Progress.

  • Usa Progress para tareas que tomen más de 1-2 segundos.
  • Inicia con BeginPart, avanza con Step, finaliza con EndPart.
  • Comprueba Canceled() si quieres permitir que el usuario aborte.
  • Siempre usa try-finally para garantizar que la barra se cierre.

Capítulo 22: Decider - Tomar decisiones

Capítulo 24: Diálogos simples (Select)

En la próxima parte (Parte V), aprenderemos a usar diálogos de selección estándar de EPLAN, como SelectSimple y SelectFile.