6. Información Asociada Mediante Datos de Entidad Extendidos (XDATA).


La dificultad apuntada más arriba en cuanto a laslimitaciones del método de los atributos se hizo evidente durante lostrabajos de digitalización de los planos de las vías de unaempresa de transporte ferroviario. En este caso se quería asociar a cadaelemento de la vía los códigos de Instalación, Serie yUnidad utilizados en los sistemas de control y mantenimiento de la empresaoperadora. Como parte de la asesoría encargada a uno de los autores porCIC, Consultoría Informática, s.l.,[14] se propuso una estructura para losplanos donde cada capa era identificada mediante un código asociado a lajerarquía Instalación-Serie. Pero quedaba por resolver la manerade asignar a cada objeto dentro de una misma capa sus códigosindividuales como Unidad. Aún cuando estaba prevista lautilización de AutoCAD MAP en la explotación y mantenimiento delos planos por la Oficina Técnica de la Empresa Operadora, laasignación inicial de códigos sería realizada por laempresa de servicios técnicos contratada para la digitalización,y por ello debía programarse de manera que fuera asequible a lasversiones normales de AutoCAD. Justo esta posibilidad era la brindaban, desdesu introducción con la versión 11, los Datos de EntidadExtendidos.

6.1. Estructura de los Datos de Entidad Extendidos(XDATA).

Cada una de las entidades de AutoCAD admite hasta 16Kilobytes de información como datos extendidos. En este caso elcontenedor de datos no es ya un nuevo objeto ATTRIB que se ubica dentro de unasecuencia en la base de datos del dibujo, sino que esos datos se integrandentro del registro de cada entidad gráfica (y también de lastablas de símbolos y otras entidades no gráficas) como campos deinformación adicionales. Otra ventaja de los XDATA sobre los atributosde bloque es la variedad de tipos de datos que son admitidos. La Tabla 2presenta una reseña de estos tipos de datos, con el código degrupo que sirve para identificarlo dentro del registro de datos de la entidad.

Código DXF:

Tipo de Dato:

Observaciones:

1000

Cadena de Texto

Hasta 255 bytesde longitud

1001

Nombre deAplicación

Hasta 31 bytesde longitud

1003

Nombre de Capa

 

1005

Identificador deentidad

 

1010

Valor de Punto3D

3 númerosreales

1040

NúmeroReal

Valor de comaflotante

1070

NúmeroEntero

Entero de 16bits (con o sin signo)

1071

Entero Largo

Entero de 32bits con signo (gestionable por aplicaciones ARX)

1002

Cadena deControl

"{"ó "}" permite a la aplicación agrupar los datos comolistas.

1004

Chunks de DatosBinarios

Hasta 127 bytes(gestionable por aplicaciones ARX)

1011

Posiciónen el SCU

Se actualiza altransformar la entidad propietaria.

1012

Desplazamientoen SCU

Se escala, girao refleja pero no se estira ni se desplaza.

1013

Direcciónen el SCU

Vector unitariogirado o reflejado, no se escala, estira o desplaza.

1041

Distancia

Se escala igualque la entidad propietaria

1042

Factor de Escala

Se actualiza altransformar la entidad propietaria.

Tabla2 - Tipos de Datos admitidos como XDATA

Al estar estos datos destinados a ser gestionados poraplicaciones de usuario, los mismos se agrupan según laaplicación que les haya dado origen. Estas son aplicaciones quedeberán estar previamente registradas en la base de datos del dibujomediante la función REGAPP. Una vez debidamente registrada, ese nombrede aplicación se incluirá en una tabla de nombre APPID mantenidadentro del archivo de dibujo.

El inicio de los campos XDATA en el registro de datos de laentidad se señaliza en el formato de intercambio DXF mediante uncódigo -3. Los datos correspondientes a cada aplicaciónregistrada se agrupan bajo un código 1001 al que se asocia el nombre dela aplicación. Los datos particulares se agrupan, según sunaturaleza en campos identificados mediante los códigos DXF que seindican en la Tabla 2. Los datos extendidos (así como los demáscampos de datos definitorios de la entidad) se pueden recuperar mediante lafunción ENTGET.

6.2. Descripción de la Herramienta para Codificación mediante XDATA.

Esta herramienta se gestiona desde el cuadro dediálogo que muestra la Figura 4. Este cuadro aparece una vez que se hanseleccionado uno o varios objetos gráficos para codificar. El proceso deselección sigue los cauces habituales en AutoCAD, quedando resaltado elconjunto de selección. Una vez concluida la selección el programacomprueba que todos los objetos seleccionados pertenezcan a una misma capa. Deno ser así lo avisa y pide una nueva designación.

Fig. 4 - Cuadro de diálogo principaldela herramienta de codificación.

El recuadro Objeto Seleccionado presenta:

  • El nombre de la Instalación a que pertenecen los objetos designados
  • La descripción de la Serie correspondiente.

En el recuadro Código de Mantenimiento: doscasillas de lista desplegables:

  • Instalación: el Código Numérico que correspondea la Instalación.
  • Serie: el Código Numérico que corresponde a la Serie.

En caso de existir más de una opción paracualquiera de esos códigos deberá desplegarse la lista parainspeccionar las alternativas. El código que aparezca en la casillaserá el asociado a la entidad. Estos códigos son propuestos demanera automática por el programa en correspondencia a la capa en que seencuentra la entidad seleccionada. No son casillas editables, puesto quenecesariamente deberá optarse por alguno de los códigospropuestos en función de la capa. En caso de encontrarse errores en loscódigos esto implica que se deben cambiar de capa los objetos CAD.

También en este recuadro tenemos la casilla deedición Unidad, para introducir el código particular queidentifica a cada componente del sistema. La entrada de datos en esta casillase limita a cuatro caracteres.

En el borde inferior izquierdo, se puede ver el tipo deobjeto CAD seleccionado y su identificador. Si se ha realizado unaselección múltiple, en lugar del tipo de objeto se indica"SELECCIÓN MULTIPLE".

  • Botón Cancelar: Cierra el diálogo para seleccionar otroobjeto sin enlazar los datos al anteriormente seleccionado. Se emplea en casode error en la designación.
  • Botón Aceptar: Escribe los datos para el objeto y cierra eldiálogo para permitir la selección de otro objeto. En caso depulsar este botón sin entrar datos, aparece una advertencia pidiendocancelar en lugar de aceptar.
Si el objeto seleccionado ya tuviera el código de la unidad, el mismo semuestra en la casilla de edición, permitiendo modificarlo. Enselecciones múltiples con una mezcla de objetos codificados y nocodificados, o con diferentes códigos de unidad, se abre un cuadro dediálogo (figura 5) listando los diferentes códigos detectados. Sepodrá seleccionar cualquiera de estos códigos pulsando sobre lalista y seleccionando el botón Aceptar o haciendo una doblepulsación sobre la línea correspondiente. Si se pulsa elbotón Aceptar sin una selección previa de la lista, setomará como código el primero de arriba. El código deunidad que se elija de esta manera pasará a reemplazar los demáscódigos en los objetos que forman parte del conjunto deselección.
Fig. 5 - Cuadro con datos de Unidad

Todas las incidencias en la ejecución del programa seregistran en un fichero nombrado como el dibujo y de extensión .LOG, quese situará en el mismo directorio que el archivo del dibujo. Estosficheros permiten un control de calidad riguroso durante el proceso decodificación.

6.3. Observaciones al método XDATA.

Aunque resuelve la posibilidad de codificar de manerastandard cualquier tipo de entidad gráfica, no importa cuál fueresu naturaleza, incluso los mismos bloques, deja mucho por hacer aldesarrollador de aplicaciones, que debe gestionar en su totalidad esos datosque AutoCAD sólo se encarga de almacenar. Prueba de esto es el escasonúmero de funciones específicas para los XDATA que ofrecen losentornos de programación, apenas las necesarias para registrar laaplicación (REGAPP) y para comprobar el tamaño en bytesde la información vinculada (XDROOM y XDSIZE). Lainformación relacionada con una misma aplicación y recuperadamediante ENTGET presenta una dificultad particular en lo que serefiere a la aparición de códigos de grupo DXF repetidos, cosaque impide su acceso, como habitualmente se haría cuando se trata de unalista de asociación, mediante la función ASSOC. Unasolución sería la de recorrer la lista respetando el orden en quefueron introducidos los valores. Este procedimiento, sin embargo, pudiera noser lo suficientemente confiable.

6.4. Programación con XDATA

Para la herramienta descrita se emplearon cuatro campos detipo STRING, adicionando a la cadena de datos un prefijo con formato "XX=", donde "XX" representa unidentificador particular del dato dentro de la aplicación. Este recurso,tomado de ADE 1.0, hace posible recuperar el dato de manera directa desde elAPI de MAP mediante la función ADE_EXPREVAL.

6.4.1. Vincular XDATA a un objeto.

El código de la Figura 6 demuestra la manera deañadir a cualquier entidad utilizando este formato. El argumento nomentsería un nombre de entidad (ENAME) del dibujo actual,nombreaplic una cadena con el nombre de aplicación, lis_id unalista con los identificadores en un formato del tipo '("DATO1=""DATO2=" ... "DATOn="), lis_val unalista con los valores que corresponderían a dichos datos'("valor1" "valor2" ... "valorn"),también éstos expresados como STRING.

Fig. 6 - Código paraVincular XDATA a un objeto.

6.4.2.. Recuperar los XDATA mediante ade_expreval

La Figura 7 muestra el código de una funciónque permite recuperar desde AutoCAD MAP en formatos real, entero, cadena opunto, los valores XDATA a partir de los identificadores que les fueronasociados. Por ejemplo, (leedato objeto "MIAPLIC""DATO3" "string") pudiera devolver "777", mientras que (leedato objeto "MIAPLIC" "DATO3""real") devolvería en ese caso 777.0

Fig. 7 - Función para recuperar losXDATA vinculados a un objeto mediante ade_expreval

Inicio | Índice |Continuar...