Los datos de control de cada elemento se complementan con sus datos de consulta, puesto que podemos consultar información de un elemento para tenerlo en cuenta en su control. Las opciones de consulta de los elementos las encontraremos en el tema 6: Datos de consulta de elementos. Estas opciones se abren desde la opción "DATOS DE COMPONENTES", accediendo a un componente concreto y seguidamente pulsando la opción "DATOS DE ELEMENTOS". Si pulsa el enlace anterior podrá ver a la vez los datos de consulta y las opciones de control de cada elemento.
ATRAS... |
(bool) forzar dibujado de... |
(número) asignar posición X relativa a... |
(número) asignar posición Y relativa a... |
(número) asignar grado de opacidad a... (0 a 100) |
(número) asignar color rrrgggbbb a linea de... |
(número) asignar color rrrgggbbb a relleno de... |
(número) asignar color rrrgggbbb a gradiente de... |
(número) asignar X punto inicial de gradiente a... |
(número) asignar Y punto inicial de gradiente a... |
(número) asignar X punto final de gradiente a... |
(número) asignar Y punto final de gradiente a... |
(bool) ver o no ver gradiente de... |
(bool) ver o no ver linea a trazos de... |
(número) asignar grosor de linea a... |
(bool) mejorar o no calidad dibujado de... |
(número) asignar X al punto de referencia de... |
(número) asignar Y al punto de referencia de... |
(número) asignar tipo unión linea a... |
(número) asignar anchura a... |
(número) asignar altura a... |
(bool) dibujar o no con redondeado... |
(número) asignar X al centro de redondeado... |
(número) asignar Y al centro de redondeado... |
La opción para forzar el dibujado del elemento hace que se dibuje o no se dibuje según se asigne verdadero o falso. Durante la edición del elemento puede haberse definido visible en determinados pasos del componente. En los pasos en que sea visible, la opción de forzado de su dibujado no tiene efecto, por lo tanto, si se pretende un control por programa de un elemento, debe hacerse no visible en su edición, al menos en el paso o pasos cuyo control será programado. Para el resto de las opciones de control ya se supone conocido su significado puesto que se ha explicado en apartados anteriores. Si necesita repasar algún concepto, revise los apartados de edición de componentes y datos de consulta. Mejorar la calidad con la que se dibuja un elemento (antialias) implica un tiempo de dibujado bastante mayor por lo que se recomienda hacer falsa esta opción si el aspecto es adecuado sin aplicar mejoras. Los rectángulos no tienen activa esta opción por defecto.
Las elipses carecen de las opciones de redondeado de vértices, pues carecen de ellos a diferencia de las formas rectangulares. Tampoco tienen sentido en las elipses el tipo de unión de linea porque no existe tal unión. En los botones tampoco existen opciones de redondeado de los vértices porque siempre se dibujan en arista viva y tampoco tiene sentido el tipo de unión de linea porque no existe en los botones una linea de contorno. El grosor de linea en un botón afecta a la profundidad del aparente relieve. Las mismas consideraciones hechas para los botones son aplicables a los recténgulos hundidos.
ATRAS... |
(texto) nueva ruta de archivo de sonido para... |
(bool) cambiar sonido actual por el nuevo... |
(bool) ejecutar sonido una sola vez... |
(bool) ejecutar sonido repetidamente... |
(bool) detener el sonido de... |
(bool) usuario carga archivo sonido para... |
Un elemento de sonido solo tiene opciones de control. Cuando se crea nuevo se especifica un archivo de sonido por defecto que podrá ser cambiado por programa (un solo elemento servirá para ejecutar múltiples archivos de sonido). Para cambiar el sonido actual por otro nuevo solo hay que asignar nueva ruta de archivo y hacer verdadera la opción para cambiarlo. La ruta de un archivo de sonido podrá ser absoluta como C:\sonidos\inicial.mid o relativa como .\Proyectos\sonidos\inicial.mid. El punto inicial equivale a la ruta donde se encuentre AutoJava. La barra "\" es el separador que se utiliza en Windows como separador pero será diferente en otros sistemas. Cuando se carga por primera vez el archivo se añade automáticamente una copia con la aplicación, por lo que no será necesario mantener el archivo original. El archivo de sonido actual puede ser ejecutado una sola vez o repetidamente, así como ser detenido. La última opción abre un cuadro de búsqueda con el que el usuario podrá cargar el archivo de sonido que prefiera. Cuando lo haga, el sonido que estuviera ejecutándose se detiene y se cambia por el nuevo, es necesario activar una opción que lo ejecute posteriormente. Los tipos de archivos admitidos son mid, wav, au, rmf y aif.
ATRAS... |
(bool) forzar dibujado de... |
(número) asignar posición X relativa a... |
(número) asignar posición Y relativa a... |
(número) asignar grado de opacidad a... (0 a 100) |
(número) asignar color rrrgggbbb a linea de... |
(número) asignar color rrrgggbbb a relleno de... |
(número) asignar color rrrgggbbb a gradiente de... |
(número) asignar X punto inicial de gradiente de... |
(número) asignar Y punto inicial de gradiente de... |
(número) asignar X punto final de gradiente de... |
(número) asignar Y punto final de gradiente de... |
(bool) ver o no ver gradiente de... |
(bool) ver o no ver linea a trazos de... |
(número) asignar grosor de linea a... |
(bool) mejorar o no calidad dibujado de... |
(número) asignar X al punto de referencia de... |
(número) asignar Y al punto de referencia de... |
(número) asignar tipo unión linea a... |
(número) asignar tipo extremo linea a... |
(número) índice de selección de punto de... |
(punto) datoX,datoY para nuevo punto de... |
(bool) cambiar punto seleccionado por el nuevo... |
(bool) insertar punto nuevo en posición seleccionada... |
(bool) borrar punto seleccionado de... |
(bool) asignar o no curva al punto seleccionado de... |
(bool) terminar o no polígono en punto seleccionado... |
(bool) borrar todos los puntos de... |
La opción de forzado para el dibujado es idéntica a la descrita para las formas rectangulares. Otras muchas opciones de control son conocidas por los apartados de edición de componentes y datos de consulta. En toda polilinea podemos seleccionar cualquier punto para cambiarlo por otro nuevo, para insertar el nuevo punto justo a continuación del seleccionado, para borrar el punto, convertir la arista en curva y para finalizar polígono y comenzar otro nuevo en el punto seleccionado. También podremos borrar todos los puntos.
Una aplicación de las polilineas es la representación de funciones. Puede verse un ejemplo en el apartado "CONSTRUCCIÓN DE SECUENCIAS" en el tema 4 Programación con Gafcet. No debe olvidarse que el origen de coordenadas se encuentra por defecto en la esquina superior izquierda y que la coordenada Y aumenta hacia abajo. Esto no se ha considerado en el ejemplo pero tiene fácil solución: Para que la coordenada Y aumente hacia arriba bastará con multiplicarla por -1 en el cálculo del punto y para posicionar el origen de la función en cualquier punto del panel bastará con asignar a la polilinea unas coordenadas relativas (en el bloque de ejecución única, por ejemplo, siempre que se quiera mantener fijo el origen de la función). Puesto que se ha definido una etapa como bucle, hay que asegurarse de que el número máximo de repeticiones sea mayor que el número de puntos a calcular para asegurar que no sea interpretado como un bucle sin fin. En el entorno de programación se encuentra el botón "Nº rep." para establecer el número máximo de repeticiones.
Como se explicó en el tema "Edición de componentes", las polilineas abiertas sirven para crear generatrices de superficies en tres dimensiones (mallas). Las mallas son realmente lineas abiertas con la diferencia de que no es posible borrar sus puntos por programa y si el componente se representa en perspectiva no se dibujan como lineas abiertas sino como mallas. Las lineas abiertas y las mallas contienen 3 coordenadas por cada punto, pero por programa no se ha previsto consultar ni cambiar las tres, solo es posible consultar y modificar la coordenada X y la Y, pero no la Z.
ATRAS... |
(bool) forzar dibujado de... |
(número) asignar posición X relativa a... |
(número) asignar posición Y relativa a... |
(número) asignar grado de opacidad a... (0 a 100) |
(número) asignar color rrrgggbbb a linea de... |
(número) asignar color rrrgggbbb a relleno de... |
(número) asignar color rrrgggbbb a gradiente de... |
(número) asignar X punto inicial de gradiente a... |
(número) asignar Y punto inicial de gradiente a... |
(número) asignar X punto final de gradiente a... |
(número) asignar Y punto final de gradiente a... |
(bool) ver o no ver gradiente de... |
(bool) ver o no ver linea a trazos de... |
(número) asignar grosor de linea a... |
(bool) mejorar o no calidad dibujado de... |
(número) asignar X al punto de referencia de... |
(número) asignar Y al punto de referencia de... |
(número) asignar anchura a... |
(número) asignar altura a... |
(texto/número) nuevo texto o número para... |
(bool) definir si el contenido de... será editable |
(bool) definir si el contenido de... tendrá fondo |
La opción de forzado para el dibujado es idéntica a la descrita para las formas rectangulares. Otras muchas opciones de control son conocidas por los apartados de edición de componentes y datos de consulta. La mejora del dibujado no está activa por defecto en el caso de texto. La linea a trazos no tiene significado en textos llenos y los textos huecos cerecen de opciones para hacerlos editables y para asignarles rectángulo de fondo. La opción para asignar nuevo texto o número establece la asignación directamente, sin otra opción que se encargue de ejecutar la asignación. En caso de programar varias asignaciones de contenido no debería hacerse en el mismo bloque de programa porque la última asignación sobreescribirá a la anterior, pero sí tendrá sentido en secuencias y subrutinas. Los textos llenos se pueden definir como editables o no editables durante su edición, que será su asignación por defecto en caso de no programar ninguna. La opción de fondo es verdadera por defecto, si se quiere quitar dicho fondo debe ponerse una asignación falsa en el programa.
ATRAS... |
(bool) forzar dibujado de... |
(número) asignar posición X relativa a... |
(número) asignar posición Y relativa a... |
(número) asignar grado de opacidad a... (0 a 100) |
(bool) mejorar o no calidad dibujado de... |
(número) asignar X al punto de referencia de... |
(número) asignar Y al punto de referencia de... |
(número) asignar anchura a... |
(número) asignar altura a... |
(texto) nueva ruta de imagen (gif, jpg) para... |
(bool) cambiar imagen actual por la nueva... |
(bool) usuario carga nuevo archivo imagen... |
(bool) recortar imagen de la pantalla para... |
La opción de forzado para el dibujado es idéntica a la descrita para las formas rectangulares. Otras muchas opciones de control son conocidas por los apartados de edición de componentes y datos de consulta. La mejora del dibujado no está activa por defecto en el caso de imágenes, su efecto consiste en meclar parcialmente el color de puntos próximos con una diferencia de color muy pronunciada y es adecuado por ejemplo para suavizar el contorno de una imagen recortada. Variando la anchura o altura se consigue estrechar o alargar la imagen, con un efecto similar al de un escalado. Cuando se crea nuevo elemento de imagen se especifica un archivo de sonido por defecto que podrá ser cambiado por programa (un solo elemento servirá para visualizar múltiples archivos de imagen). Para cambiar el archivo actual por otro nuevo solo hay que asignar nueva ruta de archivo y hacer verdadera la opción para cambiarlo. La ruta de un archivo de imagen podrá ser absoluta como por ejemplo C:\imagenes\inicial.gif o relativa como .\Proyectos\imagenes\inicial.gif. El punto inicial equivale a la ruta donde se encuentre AutoJava. La barra "\" es el separador que se utiliza en Windows como separador pero será diferente en otros sistemas. Cuando se carga por primera vez el archivo se añade automáticamente una copia con la aplicación, por lo que no será necesario mantener el archivo original. La opción de carga por el usuario abre un cuadro de búsqueda con el que seleccionar un archivo. Cuando lo haga, la imagen cambiará inmediatamente, sin esperar encontrar una opción de cambio.
La opción para recortar imagen de la pantalla hace que el elemento cambie la imagen por la que resulte de recortar una zona del fondo. Cuando se crea nuevo elemento de imagen se pregunta en primer lugar si se desea asignar una imagen por defecto: Contestar que NO tendrá sentido si se pretende utilizar el elemento para recortar zonas del contenido. Por ejemplo, si una imagen grande la queremos dividir en trozos, bastaría con un solo elemento con imagen asignada y varios más sin asignación. Estos últimos serían los encargados de trocear la imagen del primero. Para hacer un recorte de una determinada zona, primeramente se define para el elemento la posición, ancho y alto que concuerden con la zona a recortar y seguidamente se hace verdadera la opción para recortar. Si luego se mueve el elemento veremos que se ha llevado una copia de un trozo del contenido.
ATRAS... |
(bool) forzar dibujado de... |
(número) asignar posición X relativa a... |
(número) asignar posición Y relativa a... |
(número) asignar grado de opacidad a... (0 a 100) |
(número) asignar color rrrgggbbb a linea de... |
(bool) editar manualmente el contenido de... |
(número) índice de selección de segmento de... |
(número) tipo segmentos: números, textos, puntos (0 a 2) |
(número) nuevo segmento numérico (si el tipo es 0)... |
(texto) nuevo segmento de texto (si el tipo es 1)... |
(punto) nuevo segmento de punto (si el tipo es 2)... |
(bool) cambiar segmento seleccionado por el nuevo... |
(bool) insertar segmento nuevo en posición seleccionada... |
(bool) borrar segmento seleccionado de... |
(texto) nueva ruta de archivo(.txt) para... |
(bool) usuario define archivo para... |
(bool) cargar segmentos de archivo... |
(bool) guardar segmentos en archivo... |
(texto) nombre de área de texto de origen... |
(bool) cargar segmentos de área de texto de origen... |
(bool) cargar segmentos de puerta de intercambio entre programas... |
(bool) copiar segmentos a puerta de intercambio entre programas... |
(bool) borrar todos los segmentos de... |
La opción de forzado para el dibujado es idéntica a la descrita para las formas rectangulares. Otras opciones de control son conocidas por los apartados de edición de componentes y datos de consulta. A diferencia de otros elementos, el control de color solo se aplica al de linea, es decir, el color del texto. Esta opción de color afectará a todos los segmentos excepto aquellos en los que se haya cambiado durante la edición.
Haciendo verdadera la opción para edición manual se muestra el cuadro de edición, que permitirá al usuario modificar manualmente el contenido de todos parte de los segmentos, borrarlos, etc., exactamente igual que al crearlo por primera vez. No es difícil plantear tareas que requieren edición de datos, por ejemplo para crear un programa con el que gestionar los datos de clientes, es necesario ofrecer la posibilidad al usuario de modificar sus propios datos. La edición que puede ponerse a disposición del usuario puede ser de dos formas: La primera es como ya se ha indicado, con el cuadro de edición para añadir y borrar líbremente el contenido. La segunda permite editar sin cuadro de edición, de forma que solo es posible modificar el contenido de cada segmento pero no borrarlo, ni añadir segmentos nuevos ni cambiarlos de posición ni de formato. Esta posibilidad es necesaria en cuadros de diálogo, formularios, etc., donde no tiene sentido dejar total libertad de edición. El momento en que se decide la forma de editar por el usuario es en el mismo momento que se crea nuevo área de texto, siendo solicitado si se utilizará o no el cuadro de edición.
Con el índice de selección podemos especificar un segmento cuyo contenido haya que consultar, borrar, cambiar o insertar nuevo dato a continuación. Con la opción de tipo de segmentos se define el tipo de datos que deseamos, así, con valor 0 se establece que los datos serán considerados como números, con valor 1 serán textos y con valor 2 serán puntos. Si los datos contenidos no tienen el formato correcto los datos podrán tener errores, por ejemplo no tendrá sentido un dato como "abc123" y especificar que los datos serán valores numéricos (tipo 0). Son daton numéricos válidos ejemplos como 43, 12.567, -78, -9.05 o 12567E-3 (notación científica). Nótese que el caracter separador de los decimales en valores reales es el punto y no la coma. Son datos de punto válidos dos valores numéricos cualquiera separados por una coma, por ejemplo -54,32.56.
Para cambiar el contenido de un segmento o insertar segmento nuevo, primeramente seleccionamos el que queremos cambiar o el que quedará delante del que insertaremos, especificamos el nuevo dato con la opción de nuevo segmento (según tipo de datos definido) y por último hacemos verdadera la opción para cambiar o para insertar segmento. Borrar un segmento solo precisa seleccionarlo y hacer verdadera la opción para borrarlo.
Si definimos nueva ruta de archivo con la opción para este fin, estaremos definiendo un archivo (existente o no) en que podremos guardar todo el contenido del área de texto, o bien del que podremos leer datos previamente guardados. Los archivos para áreas de texto tendrán extensión txt. Una ruta como datos.txt (solo el nombre del archivo y su extensión) será un archivo que se encontrará dentro de la aplicación que estamos creando y es donde se buscará para guardar o para leer datos. Una ruta como .\otraAplicacion\datos.txt especifica un archivo dentro de otra aplicación del mismo proyecto. Dicha aplicación deberá existir para poder encontrarlo. De esto se deduce que podemos crear varias aplicaciones con archivos de áreas de texto compartidos, de modo que cada aplicación tenga acceso para lectura y para escritura y los datos generados en una de ellas, la otra podrá consultarlos.
Otra de las opciones de control permite al usuario buscar el archivo que le interese con un cuadro de búsqueda. Cuando lo acepta, dicho archivo podrá tener la misma función que cualquier otro definido por programa.
Las opciones para cargar y guardar segmentos en archivo actúan con el archivo que previamente se haya especificado, bien por programa o por el usuario.
Las áreas de texto pueden cargar sus datos directamente de otro área texto. Para hacerlo, especificamos el nombre del área de texto que contenga los datos a leer (origen de datos) y hacemos verdadera la opción para cargar los segmentos del origen.
Adicionalmente, entre aplicaciones del mismo proyecto, es posible leer directamente los datos de un área de texto generados en la otra aplicación por medio de una puerta de intercambio. Por ejemplo, si en una aplicación A se copia el contenido de un área de texto a la puerta de intercambio y se cargan los datos de la puerta desde otra aplicación B, se habrá conseguido transmitir directamente datos entre aplicaciones.
Por último, la opción para borrar todos los segmentos tendrá sentido cuando los datos sean creados por programa y se necesite actualizarlos. El procedimiento para hacerlo será muy parecido al que se ha descrito para programar una función (vease en el tema 4 Programación con Gafcet.), excepto en que el bucle se utilizaría para introducir dato en el área de texto y no para modificar las coordenadas de un punto.
ATRAS... |
(bool) forzar dibujado de... |
(número) asignar posición X relativa a... |
(número) asignar posición Y relativa a... |
(número) índice de selección de punto de... |
(punto) datoX,datoY para nuevo punto de... |
(bool) cambiar punto seleccionado por el nuevo... |
(número) definir paso actual de... |
La opción de forzado para el dibujado y la posición relativa son idénticas a las descritas para las formas rectangulares. Con el índice de selección especificamos un punto para consultar de él sus coordenadas o para modificarlas. No existe la posibilidad de borrar puntos ni insertarlos. El punto seleccionado cambiará de posición haciendo verdadera la opción para cambiar por el nuevo. Antes de hacerlo habrá que haberlo seleccionado y definido las nuevas coordenadas (opción para especificar nuevo punto).
Cambiando el paso de la transformación es como se controla a los elementos (y componentes) que tengan asignada la transformación. Por ejemplo, si el paso cambia de 0 a 1 en una trayectoria, se produce un desplazamiento paralelo al segmento que une los puntos 0 y 1 de la trayectoria. El paso se controlará fácilmente avanzando, retrocediendo o pasando pasos en cualquier orden. Entre los bloques insertables se encuentran algunos que harán sencilla esta tarea.
Otra forma de control de elementos y componentes con la transformación asignada, consiste en controlar la posición de un punto de la transformación (el paso y el punto seleccionado deben coincidir). Por ejemplo, si a un punto de una rotación le asignamos las mismas coordenadas que al pájaro de la figura, entonces el telescopio apuntará al pájaro en todo momento, siempre que el telescopio tenga asignada la rotación.
En el paso 0 de toda transformación no existe efecto alguno, de forma que asignar valor 0 al paso hace que la transformación no tenga efecto. Si esto nos causa algún problema, se puede prescindir del paso 0 y hacer variar el paso desde el valor 1 en adelante.
La siguiente imagen muestra una forma muy simple de controlar de forma progresiva el paso de una transformación: Al crear la aplicación se asignó la rotación a la estrella, de forma que al ser ejecutado resulta un giro progresivo de la estrella a pesar de que la transformación (la rotación) solo tiene dos pasos (el 0 que define el centro de giro y el 1 para definir un solo ángulo de 60 grados). Esto se debe a que el paso puede ser un valor real y para valores intermedios entre dos enteros (pasos) consecutivos se interpola automáticamente el efecto (desplazamiento, rotación o escalado). En el ejemplo, el ángulo que forma el único segmento de la rotación es de 60 grados y como el paso se incrementa en 0.05 son necesarios 20 incrementos para avanzar del paso 0 al 1, o lo que es lo mismo, para recorrer los 60 grados. Cuando el paso alcance el valor 1, la comparación se hace falsa (valor 0) y el paso vuelve a ser 0. El mismo resultado se hubiera conseguido con una rotación de 20 pasos distribuidos en el ángulo de 60 grados, incrementando el paso de uno en uno hasta el último.
Variar el paso de forma progresiva en una rotación es equivalente a controlar dicha rotación por su ángulo de giro, lo que resulta mucho más sencillo que el ejemplo que a continuación se muestra, en el que se controla la posición de un punto para que el ángulo corresponda al valor de la variable 0: El elemento de rotación solo contiene dos puntos (el centro de giro o punto 0 y el punto 1) y se define el punto 1 como seleccionado y se selecciona igualmente el paso 1, lo que permitirá que al mover el punto 1 también afecte a todo lo que tenga asignada la rotación. Escogiendo un radio cualquiera (50 en el ejemplo) y una variable para definir el ángulo (variable 0 en el ejemplo), las coordenadas en las que debe ponerse el punto serán las mismas que las del punto 0 (80,60) sumando la proyección del radio en horizontal y en vertical. Como el punto se define con un dato de tipo "punto", se utiliza el bloque PTO para crear el dato y se asigna como nuevo punto de la rotación. La asignación final cambia el punto seleccionado (el 1) por el nuevo y como el paso de la rotación es también el 1, el cambio de punto afectará a todo lo que tenga asignada la rotación.