Fundamentos de la Programación

Este capítulo contiene los fundamentos de la programación en Prolan y una breve sinopsis de las funciones predefinidas. Para acceder a la funcionalidad completa consulte la Referencia de Funciones.

1. Bloques de expresiones

Dondequiera que se necesite evaluar un bloque de varias expresiones donde se espera una sola puede utilizarse la funcion haz.

2. Trabajo con objetos

El diseño de programas Prolan es esencialmente una tarea de manipulación de objetos que son mantenidos en su mayoría por la aplicación CORTE. Prolan ofrece funciones para acceder a la totalidad de dichos objetos.

2.1 El objeto Aplicación

La función apl permite el acceso al objeto de la aplicación CORTE. Este objeto funge básicamente como contenedor de todos los lanzamientos abiertos en el entorno de trabajo y permite además el acceso a la ventana principal de CORTE, la ventana de la Consola de Prolan y otros parámetros como la ruta desde la cual se cargó la aplicación.

El código siguiente termina la sesión de trabajo con CORTE cerrando la ventana principal de la aplicación:

(cierraven (lee_Ven (apl)))

2.2 El Objeto Implícito

Es el objeto utilizado implícitamente por el intérprete en las funciones que acceden a los datos de un objeto de CORTE cuando se omite el argumento correspondiente (generalmente el último). Inicialmente coincide con el objeto sobre el cual se lanza la ejecución de Prolan que puede ser bien el lanzamiento actual de la aplicación, si lo hay, en las ejecuciones asincrónicas o bien el objeto cliente de Prolan en las ejecuciones sincrónicas: corte en las etiquetas de patrón, reporte en los eventos y campos calculados de los reportes y forma en la línea de comandos y curvas genéricas del Editor de Forma.

La función este permite leer o fijar el objeto implícito para el resto del programa. La función con establece temporalmente el objeto implícito para evaluar una expresión.

Cuando se espera un lanzamiento como objeto implícito puede utilizarse en su lugar cualquier objeto del lanzamiento que soporte la propiedad Lan.

2.3 Colecciones

Las colecciones son los objetos contenedores por excelencia de los lanzamientos donde se mantienen categorizados los diferentes objetos para el corte: piezas, materiales, patrones, etc. Estos objetos no participan en la gestión de los lanzamientos mientras no sean insertados en las colecciones correspondientes. Una vez que un item se inserta en una colección, no hay necesidad de eliminarlo manualmente pues de ello se encargará la colección propietaria. Sin embargo, los items creados independientemente y no insertados en ninguna colección sí deben eliminarse con la función elimina pues de no hacerlo quedarían ocupando memoria RAM innecesariamente y pudieran ser causa de errores potenciales.

2.3.1 Colecciones Auto

La colección-auto es un tipo especial de colección cuyos items tienen un objeto propietario diferente de la propia colección. Estas colecciones se recrean dinámicamente cada vez que tales items se asignan al objeto propietario. Por tal razón no permiten inserciones ni eliminaciones y pueden utilizarse solamente para recorrer sus elementos. Ejemplos de colecciones-auto son la colección Cortes del patrón, la colección Formas del lanzamiento (formas asignadas a piezas) y la colección Ubicaciones del patrón (ubicaciones de corte asignadas a cortes finales).

2.4 Creación de objetos

Puede utilizar las funciones crea y abre para crear nuevos objetos de lanzamiento y mostrarlos en el entorno de trabajo. Los objetos del lanzamiento pueden crearse bien con las funciones correspondientes de Prolan como pieza, material, cinta, forma, contorno, linea, arco o bien insertando items en blanco en las colecciones propietarias con la función creaitem. Este último método es el preferido para los items que no contienen información geométrica. En particular, las formas y las ubicaciones de corte, una vez creadas, deben asignarse a objetos de pieza y corte, respectivamente.

2.5 Propiedades

Las funciones de propiedades de la forma lee_<propiedad> y pon_<propiedad> permiten la lectura y escritura de las propiedades de los objetos de CORTE a los cuales podrá acceder, en general, realizando los pasos siguientes:

  1. Leer una colección de datos con las propiedades Piezas, Materiales, Cintas, Grupos, Patrones, Ubicaciones del objeto Lanzamiento.
  2. Leer un elemento de la colección con la propiedad Item.
  3. Finalmente leer o escribir las propiedades del elemento seleccionado.

El código siguiente imprime los largos de todas las piezas del lanzamiento actual:

(sea i 0)
(sea Piezas (lee_Piezas))
(repite (lee_Contador Piezas)
 (sea i (1+ i)) ; las colecciones siempre indizadas desde 1
 (imprime (lee_Largo (lee_Item i Piezas)))
)

Véase la Referencia de Propiedades.

2.5.1 Propiedades indizadas

Son propiedades que permiten el acceso a elementos individuales en los objetos contenedores. En CORTE existen contenedores lineales (un índice) como las colecciones o matriciales (dos índices) como las tablas de los reportes.

2.5.2 Configuración del lanzamiento

Un caso especial de funciones de propiedades indizadas es el par de funciones lee_Config y pon_Config que acceden a la propiedad Config del objeto Lanzamiento para leer o modificar las opciones de configuración. En ambos casos, el índice se utiliza para indicar el código de una opción de configuración.

El código siguiente establece la distancia entre piezas en 5.45 y la precisión de la Unidad de Medida en dos dígitos decimales.

(pon_Config oDistanciaPiezas 5.45)
(pon_Config oPrecisionUM 2)

Nótese en el ejemplo anterior el uso de constantes simbólicas predefinidas para indicar los códigos de las opciones. Prolan ofrece también constantes simbólicas para algunos valores enumerados que pueden tomar las opciones. En algunos casos dichos valores deberán combinarse juntos mediante los operadores lógicos bit a bit.

Véase la Referencia de Configuración.

2.6 Recorrer colecciones

La función porcada permite recorrer cómodamente todos los items de una colección.

El código que sigue produce la misma salida que el ejemplo anterior donde se imprimen los largos de todas las piezas:

(porcada Pieza (imprime (lee_Largo Pieza)) (lee_Piezas))

2.6.1 Objetos actuales

Todas las colecciones de lanzamiento y la propia colección de lanzamientos abiertos de la aplicación CORTE, mantienen un objeto actual (el seleccionado en las vistas) accesible con las propiedades IDActual y Actual.

El objeto actual se utiliza implícitamente cuando se accede a las propiedades de un item directamente desde la colección.

Las dos expresiones que siguen son equivalentes:

(lee_Largo (lee_Actual (lee_Piezas)))
(lee_Largo (lee_Piezas))

Téngase en cuenta que el objeto actual es nada (IDActual=0) si la selección correspondiente en el entorno de CORTE no existe o es múltiple.

2.7 Patrones de corte

Los patrones de corte tienen un tratamiento especial por las razones siguientes:

2.8 Datos extendidos

Puede definir datos adicionales, diferentes de los mantenidos por las propiedades predefinidas, en todos los items de colección y el propio lanzamiento con la propiedad OtrosDatos. Esta propiedad es simplemente una cadena de caracteres donde se pueden almacenar valores etiquetados con el formato Nombre=Valor, separados por un delimitador que por defecto es el carácter ; (punto y coma). Las funciones leeval y ponval simplifican notablemente la tarea de leer y escribir valores etiquetados.

3. Unidades

Los valores de dimensión se leen y trabajan internamente con los tipos reales independientemente del formato de la Unidad de Medida del lanzamiento. Esto puede significar un problema cuando necesite trabajar con unidades inglesas o fraccionarias, utilizar el símbolo de la unidad o imprimir valores con una precisión determinada. En estos casos, puede realizar la conversión a medida con convdm o bien formatear con convdc o formato.

Prolan tiene funciones para convertir valores numéricos a cadenas y viceversa y entre los diferentes tipos de unidades del lanzamiento.

4. Texto fuera

El intérprete de Prolan reconoce y mantiene internamente los textos introducidos fuera del cuerpo de las funciones que no sean comentarios. Estos textos se consideran fuera de programa y automáticamente se concatenan después de eliminar los espacios y cambios de línea al inicio y al final y formatearlos como en la función imprime. Para introducir espacios y cambios de línea al inicio y al final u otros caracteres especiales como paréntesis y puntos y comas en el texto fuera, debe utilizar explícitamente las secuencias de escape reconocidas por la función imprime.

Dentro del cuerpo de las funciones tales textos serían variables.

Puede utilizar la funciones textofuera e incrusta para leer o incrustar cadenas en el texto fuera de programa. Estas dos funciones le permiten utilizar los comandos Prolan como scrips que modifican dinámicamente una plantilla de texto prefijada de antemano.

Consulte el archivo Texto fuera.plan suministrado con la instalación.

5. Directorios implíctos

Varias funciones Prolan solicitan un argumento de cadena para indicar el nombre de un archivo desde el cual se leerán los datos requeridos. En general, los nombres de los archivos podrán indicarse parcialmente, es decir, omitiendo los primeros directorios de la ruta de acceso al disco y también la extensión.

En esos casos, Prolan añadirá automaticamente la extensión según el tipo de objeto que solicita los datos y buscará los archivos en los directorios siguientes, en el orden indicado: la ruta especificada en el argumento, Instalación de CORTE, Datos de Aplicación de CORTE, Documentos de CORTE, Lanzamientos y Prolan. Al especificar la ruta de un archivo, tanto la barra inclinada (/) como la barra invertida (\), sencilla o doble, son delimitadores de directorio válidos.