Capítulo 18: Comandos con parámetros
Capítulo 18: Comandos con parámetros
Sección titulada «Capítulo 18: Comandos con parámetros»Parte II: Primeros pasos con EPLAN API - Sección 6: CommandLineInterpreter básico - Nivel: Intermedio
Objetivos de aprendizaje
Sección titulada «Objetivos de aprendizaje»Al finalizar este capítulo serás capaz de:
- Entender qué es ActionCallingContext
- Pasar parámetros a comandos de EPLAN
- Usar AddParameter() correctamente
- Ejecutar comandos que requieren configuración
- Combinar múltiples parámetros en un mismo comando
Requisitos previos
Sección titulada «Requisitos previos»Antes de comenzar este capítulo debes:
- Haber completado los Capítulos 16-17
- Saber ejecutar comandos simples y múltiples con CommandLineInterpreter
- Entender el método Execute()
Introducción
Sección titulada «Introducción»Hasta ahora has ejecutado comandos simples como cli.Execute("check"). Pero muchos comandos de EPLAN necesitan parámetros adicionales:
- Exportar a una ruta específica
- Abrir un archivo concreto
- Configurar propiedades con valores específicos
- Ejecutar acciones con opciones personalizadas
Para pasar parámetros a los comandos, necesitas ActionCallingContext.
1. ¿Qué es ActionCallingContext?
Sección titulada «1. ¿Qué es ActionCallingContext?»1.1 Definición
Sección titulada «1.1 Definición»ActionCallingContext es un contenedor de parámetros que se pasa a los comandos cuando estos requieren configuración adicional.
Analogía: Es como pasar argumentos a una función en C#:
// En C#:MiMetodo(parametro1, parametro2);
// Con EPLAN API:ActionCallingContext acc = new ActionCallingContext();acc.AddParameter("nombre1", "valor1");acc.AddParameter("nombre2", "valor2");cli.Execute("comando", acc);1.2 ¿Dónde se define?
Sección titulada «1.2 ¿Dónde se define?»ActionCallingContext está en el mismo namespace que CommandLineInterpreter:
using Eplan.EplApi.ApplicationFramework;2. Estructura básica con parámetros
Sección titulada «2. Estructura básica con parámetros»2.1 Script del ejemplo oficial
Sección titulada «2.1 Script del ejemplo oficial»Basado en EPLAN-Scripting-4.0/02_RunActions/03_ActionsWithParameter.cs:
using Eplan.EplApi.ApplicationFramework;using Eplan.EplApi.Scripting;
public class ComandoConParametros{ [Start] public void Function() { CommandLineInterpreter cli = new CommandLineInterpreter(); ActionCallingContext acc = new ActionCallingContext();
// Según la documentación, los parámetros de interacción van en el Name acc.AddParameter("Name", "XGedIaFormatText/height:20");
cli.Execute("XGedStartInteractionAction", acc); }}2.2 Análisis línea por línea
Sección titulada «2.2 Análisis línea por línea»Línea 9: Crear CommandLineInterpreter
CommandLineInterpreter cli = new CommandLineInterpreter();Como siempre, necesitas el intérprete de comandos.
Línea 10: Crear ActionCallingContext
ActionCallingContext acc = new ActionCallingContext();Creas el contenedor de parámetros vacío.
Línea 12: Agregar parámetro con interacción
acc.AddParameter("Name", "XGedIaFormatText/height:20");Según la documentación oficial, los parámetros de interacción se concatenan al nombre con barra (/). El formato es: NombreInteraccion/param1:valor1/param2:valor2.
Línea 14: Ejecutar comando con parámetros
cli.Execute("XGedStartInteractionAction", acc);Pasas el contexto como segundo parámetro de Execute().
3. AddParameter() en detalle
Sección titulada «3. AddParameter() en detalle»3.1 Sintaxis
Sección titulada «3.1 Sintaxis»acc.AddParameter(string nombre, string valor);Parámetros:
nombre- Nombre del parámetro (definido por la acción)valor- Valor del parámetro (siempre como string)
3.2 Tipos de valores
Sección titulada «3.2 Tipos de valores»Aunque AddParameter() siempre recibe strings, los valores pueden representar diferentes tipos:
ActionCallingContext acc = new ActionCallingContext();
// Stringacc.AddParameter("FILENAME", "reporte.pdf");
// Número (como string)acc.AddParameter("height", "20");
// Booleano (como string)acc.AddParameter("OVERWRITE", "1"); // 1 = true, 0 = false
// Rutaacc.AddParameter("EXPORTFILE", @"C:\temp\export.xml");Importante: Todos los valores se pasan como string, incluso números y booleanos.
3.3 Múltiples parámetros
Sección titulada «3.3 Múltiples parámetros»Puedes agregar tantos parámetros como necesites:
ActionCallingContext acc = new ActionCallingContext();acc.AddParameter("parametro1", "valor1");acc.AddParameter("parametro2", "valor2");acc.AddParameter("parametro3", "valor3");// ... etc4. Comando Execute() con parámetros
Sección titulada «4. Comando Execute() con parámetros»4.1 Sintaxis completa
Sección titulada «4.1 Sintaxis completa»bool Execute(string actionName, ActionCallingContext context);Parámetros:
actionName- Nombre del comandocontext- Contexto con los parámetros (opcional)
Valor de retorno:
bool- true si éxito, false si falló
4.2 Comparación: Con y sin parámetros
Sección titulada «4.2 Comparación: Con y sin parámetros»Sin parámetros:
CommandLineInterpreter cli = new CommandLineInterpreter();cli.Execute("check");Con parámetros:
CommandLineInterpreter cli = new CommandLineInterpreter();ActionCallingContext acc = new ActionCallingContext();acc.AddParameter("PARAMETRO", "valor");cli.Execute("comando", acc);5. Ejemplo práctico: Configurar acción
Sección titulada «5. Ejemplo práctico: Configurar acción»5.1 Script completo con validación
Sección titulada «5.1 Script completo con validación»using System;using Eplan.EplApi.ApplicationFramework;using Eplan.EplApi.Scripting;using System.Windows.Forms;
public class ConfigurarAccion{ [Start] public void Function() { try { // Crear intérprete y contexto CommandLineInterpreter cli = new CommandLineInterpreter(); ActionCallingContext acc = new ActionCallingContext();
// Configurar parámetros (interacción con parámetros concatenados) acc.AddParameter("Name", "XGedIaFormatText/height:20");
// Ejecutar comando con parámetros bool resultado = cli.Execute("XGedStartInteractionAction", acc);
// Verificar resultado if (resultado) { MessageBox.Show("Comando ejecutado correctamente"); } else { MessageBox.Show("Error al ejecutar comando"); } } catch (Exception ex) { MessageBox.Show("Error: " + ex.Message); } }}6. Reutilizar ActionCallingContext
Sección titulada «6. Reutilizar ActionCallingContext»6.1 Un contexto por comando
Sección titulada «6.1 Un contexto por comando»Recomendado: Crear un nuevo contexto para cada comando:
CommandLineInterpreter cli = new CommandLineInterpreter();
// Primer comandoActionCallingContext acc1 = new ActionCallingContext();acc1.AddParameter("param1", "valor1");cli.Execute("comando1", acc1);
// Segundo comandoActionCallingContext acc2 = new ActionCallingContext();acc2.AddParameter("param2", "valor2");cli.Execute("comando2", acc2);6.2 Limpiar y reutilizar contexto
Sección titulada «6.2 Limpiar y reutilizar contexto»Si quieres reutilizar el mismo contexto, puedes limpiarlo:
CommandLineInterpreter cli = new CommandLineInterpreter();ActionCallingContext acc = new ActionCallingContext();
// Primer comandoacc.AddParameter("param1", "valor1");cli.Execute("comando1", acc);
// Limpiar contexto (crear nuevo)acc = new ActionCallingContext();
// Segundo comandoacc.AddParameter("param2", "valor2");cli.Execute("comando2", acc);Nota: Es más simple y claro crear un nuevo contexto cada vez.
7. Workflow con múltiples comandos parametrizados
Sección titulada «7. Workflow con múltiples comandos parametrizados»using System;using Eplan.EplApi.ApplicationFramework;using Eplan.EplApi.Scripting;using System.Windows.Forms;
public class WorkflowParametrizado{ [Start] public void Function() { try { CommandLineInterpreter cli = new CommandLineInterpreter();
// Comando 1: Sin parámetros cli.Execute("check");
// Comando 2: Con parámetros (concatenados al Name) ActionCallingContext acc = new ActionCallingContext(); acc.AddParameter("Name", "XGedIaFormatText/height:20"); cli.Execute("XGedStartInteractionAction", acc);
MessageBox.Show("Workflow completado"); } catch (Exception ex) { MessageBox.Show("Error: " + ex.Message); } }}Nota: Puedes mezclar comandos con y sin parámetros en el mismo workflow.
8. Buenas prácticas
Sección titulada «8. Buenas prácticas»8.1 Validar parámetros antes de agregar
Sección titulada «8.1 Validar parámetros antes de agregar»string rutaArchivo = @"C:\temp\export.xml";
// Validar que la ruta es válidaif (string.IsNullOrEmpty(rutaArchivo)){ MessageBox.Show("Ruta de archivo no válida"); return;}
// Agregar parámetroActionCallingContext acc = new ActionCallingContext();acc.AddParameter("EXPORTFILE", rutaArchivo);8.2 Usar nombres de parámetros correctos
Sección titulada «8.2 Usar nombres de parámetros correctos»Los nombres de parámetros son case-sensitive y específicos de cada comando.
Mal:
acc.AddParameter("filename", "archivo.pdf"); // Puede no funcionarBien:
acc.AddParameter("FILENAME", "archivo.pdf"); // Nombre correcto¿Cómo saber el nombre correcto? Consulta la documentación de EPLAN API o los scripts de ejemplo oficiales.
8.3 Comentar qué hace cada parámetro
Sección titulada «8.3 Comentar qué hace cada parámetro»ActionCallingContext acc = new ActionCallingContext();// Para interacciones, los parámetros van concatenados al Nameacc.AddParameter("Name", "XGedIaFormatText/height:20");8.4 Validar resultado del comando
Sección titulada «8.4 Validar resultado del comando»bool resultado = cli.Execute("comando", acc);if (!resultado){ MessageBox.Show("El comando falló. Verifica los parámetros.");}9. Errores comunes
Sección titulada «9. Errores comunes»9.1 Olvidar crear el ActionCallingContext
Sección titulada «9.1 Olvidar crear el ActionCallingContext»Error:
CommandLineInterpreter cli = new CommandLineInterpreter();// Falta crear ActionCallingContextcli.Execute("comando", acc); // acc no existeCorrección:
CommandLineInterpreter cli = new CommandLineInterpreter();ActionCallingContext acc = new ActionCallingContext(); // Crear contextoacc.AddParameter("param", "value");cli.Execute("comando", acc);9.2 Pasar valores con tipo incorrecto
Sección titulada «9.2 Pasar valores con tipo incorrecto»Error:
acc.AddParameter("height", 20); // int, no stringCorrección:
acc.AddParameter("height", "20"); // Siempre string9.3 Nombre de parámetro incorrecto
Sección titulada «9.3 Nombre de parámetro incorrecto»Error:
acc.AddParameter("altura", "20"); // Nombre incorrectoCorrección:
acc.AddParameter("height", "20"); // Nombre correcto según documentación10. ¿Qué comandos requieren parámetros?
Sección titulada «10. ¿Qué comandos requieren parámetros?»10.1 Indicadores comunes
Sección titulada «10.1 Indicadores comunes»Comandos que suelen requerir parámetros:
- Comandos de exportación (ruta de destino)
- Comandos de importación (ruta de origen)
- Comandos de configuración (valores a establecer)
- Comandos de acciones específicas (opciones de ejecución)
10.2 Fuentes de información
Sección titulada «10.2 Fuentes de información»Para saber qué parámetros requiere un comando:
- Documentación EPLAN API (EplanAPI.chm)
- Scripts oficiales de EPLAN-Scripting-4.0
- Experimentación con validación de resultados
- Foros y comunidad EPLAN
Resumen
Sección titulada «Resumen»En este capítulo aprendiste:
- ActionCallingContext es el contenedor de parámetros para comandos
- Usar
AddParameter(nombre, valor)para agregar parámetros - Todos los valores se pasan como string
- Sintaxis:
cli.Execute(comando, contexto) - Puedes combinar comandos con y sin parámetros
- Los nombres de parámetros son case-sensitive
- Siempre validar el resultado del comando
- Crear un contexto nuevo para cada comando es más claro
Preguntas frecuentes
Sección titulada «Preguntas frecuentes»P: ¿Puedo pasar números directamente a AddParameter()?
R: No, debes convertirlos a string: acc.AddParameter("height", "20") o acc.AddParameter("height", altura.ToString())
P: ¿Cuántos parámetros puedo agregar?
R: No hay límite específico. Depende del comando.
P: ¿Qué pasa si paso un parámetro que el comando no espera?
R: Generalmente se ignora, pero puede causar errores. Verifica la documentación.
P: ¿Puedo modificar un parámetro después de agregarlo?
R: No directamente. Debes crear un nuevo ActionCallingContext.
Conexiones
Sección titulada «Conexiones»Capítulo anterior
Sección titulada «Capítulo anterior»Capítulo 17: Ejecutar múltiples comandos
Próximo capítulo
Sección titulada «Próximo capítulo»Capítulo 19: Parámetros múltiples en ActionCallingContext
En el próximo capítulo verás ejemplos más avanzados de pasar múltiples parámetros complejos.
Última actualización: Enero 2025
Tiempo de lectura estimado: 20-25 minutos
Código de ejemplo: code/cap-18/
Script de referencia: EPLAN-Scripting-4.0/02_RunActions/03_ActionsWithParameter.cs