Archivo de la etiqueta: órdenes

Imprime los nombres de las órdenes de Digi3D.NET

La ventana de dibujo de Digi3D.NET no implementa las órdenes (como CIR2P, PARALELA, etc.), sino que delega esa responsabilidad en cada una de las extensiones del programa.

Estas extensiones son una serie de archivos con extension .DLL ubicados en c:\Archivos de programa\Digi21.net\Digi3D.NET y cuyos nombres forman el siguiente patrón: DigiNG.[extension].dll, como por ejemplo DigiNG.OrdenesTopologia.dll o DigiNG.OrdenesStandard.dll.

Cuando tecleamos el nombre de una orden, Digi3D.NET a priori no esa orden existe o no, de manera que consulta a cada una de las extensiones (DigiNG.OrdenesTopologia, DigiNG.OrdenesStandard, etc.) si implementan dicha orden. En caso afirmativo, le ordena a la extensión correspondiente que ejecute la orden con los parámetros que haya especificado el usuario.

Pero los nombres de las órdenes dentro de cada uno de estos archivos .DLL no tiene nada que ver con los nombres de las órdenes que tiene que ejecutar el usuario. El nombre de las órdenes internamente es un GUID. La orden (en castellano) CIR2P por ejemplo en realidad se llama {C9CE4CF2-6029-48e7-9FC1-141708C22393}. De hecho puedes probarlo tú mismo, puedes ejecutar la orden {C9CE4CF2-6029-48e7-9FC1-141708C22393} y comprobarás que en realidad se está ejecutando la orden CIR2P, de manera que antes de preguntarle a cada una de la extensiones si implementan una determinada orden, debe transformar dicho nombre de orden al formato GUID, y para ello utiliza los archivos de alias, que no son más que unos archivos .XML ubicados en c:\Archivos de programa\digi21.net\Digi3D.NET\es-ES para español de España y en c:\Archivos de programa\digi21.net\Digi3D.NET\en-US para inglés americano.

En esos archivos es donde se indica que la orden CIR2P en realidad se llama {C9CE4CF2-6029-48e7-9FC1-141708C22393} y  donde además se proporciona una pequeña descripción de cada orden y una lista (quizás no todo todo lo bien actualizada que debería ser)  de órdenes relacionadas.

Bien, pues hoy presentamos una novedad provocada por una solicitud de soporte técnico que recibimos la semana pasada solicitando la posibilidad de imprimir esta información en forma tabulada. Hemos modificado estos archivos de manera que si los arrastras por ejemplo a una ventana de Google Chrome, éste en vez de mostrarte el contenido del archivo .XML, te mostrará una tabla con dos columnas: el nombre de la orden y la pequeña descripción de dicha orden.

Puedes ver esta funcionalidad en acción en el siguiente vídeo:

Acciones a ejecutar al seleccionar cualquier código de una tabla de códigos

Personalmente no me gustan las cajas negras, y Digi3D.NET escondía una que ha heredado por compatibilidad hacia atrás con los primeros días de Digi en MS-DOS. Hoy ha llegado el momento de cambiar eso.

¿Sabías que la orden COD no solo cambia de código sino que también realiza las siguientes acciones cuando seleccionas un código?:

  • Cambia el valor de la variable C a falso.
  • Cambia el valor de la variable S a falso.
  • Cambia el valor de la variable IR_PRINCIPIO a falso.
  • Cambia el valor de la variable Orto a falso;
  • Cambia el valor de la variable Orto_aa a falso.
  • Cambia el valor de la variable FIJA_Z a falso.
  • Cambia el valor de la variable MAXPUNTOS a 0.
  • Cambia el valor de la variable FORMATO_AUTONUM a %d.
  • Cambia el valor de la variable TIPO_DE_Z a 2.
  • Desbloquea la Z de la ventana fotogramétrica.

Esto lo hace la orden COD por código duro y no hay forma de cambiarlo. Si querías cambiar de código pero no querías que se cambiase ninguna de estas variables enumeradas anteriormente, tenías o que clonar una entidad existente o que programarte tú mismo una orden COD tal y como se explica en mi curso de programación de Digi3D.NET

Por otro lado, hace un tiempo ya añadimos a Digi3D.NET la posibilidad de que éste ejecute una serie de órdenes por el mero hecho de seleccionar un código. Puedes indicar las órdenes a ejecutar en la propiedad Ordenes (seleccionar código) en la sección Propiedades del código  de la pestaña Códigos del programa Editor de tablas de códigos.

Esto está genial, nos sirve por ejemplo para indicar que si se selecciona el código de curva de nivel se seleccione automáticamente el modo de búsqueda 12, o que por el mero hecho de seleccionar el código de árbol puntual, se ejecute la orden PUNTO_R.

Lo que no teníamos era la posibilidad de indicar que se ejecute una orden al seleccionar cualquier código, de modo que si queríamos que se ejecutase la orden MODELO_SEMANTICO=1 al seleccionar cualquier código, no podíamos, y no teníamos más remedio que añadir dicha orden a todos los códigos de nuestra tabla de códigos.

Para solucionar los dos problemas (quitar de la orden COD la lógica que cambia si o si el valor de las variables C, S, IR_PRINCIPIO, etc…) y hacer que se puedan indicar una serie de órdenes que se ejecutarán cuando el usuario seleccione cualquier código, hemos añadido una nueva pestaña al programa Editor de Tablas de códigos denominada Acciones que nos va a permitir indicar una serie de órdenes a ejecutar al seleccionar un código, y por defecto todas las tablas de códigos van a tener relleno ese campo con las siguientes órdenes:

C=0
S=0
IR_PRINCIPIO=0
ORTO=0
ORTO_AA=0
FIJAZ=0
MAXPUNTOS=0
FORMATO_AUTONUM=%d
TIPO_DE_Z=2
BLOQUEA_Z=0

y hemos eliminado de la orden COD esas acciones que se ejecutaban si o si, de modo que si no te interesa que se cambie el tipo de FORMATO_AUTONUM al cambiar de código, tan solo tienes que eliminar esa línea, o si quieres que se ejecute la orden MODELO_SEMANTICO=1, tan solo tienes que añadir esa línea.

Puedes ver esta nueva funcionalidad en acción en el siguiente vídeo:

 

 

Truco: Elimina una orden de la ventana de dibujo en Digi3D.NET

En Digi3D.NET podemos anular órdenes para que no se puedan utilizar. Hoy te voy a explicar cómo eliminar órdenes de la ventana de dibujo.

Los motivos pueden ser varios: quizás estemos haciendo un trabajo en el que no queremos que se pueda ejecutar la orden COMPRIMIR, quizás queremos que se anule SALIR, o cualquier motivo.

Digi3D.NET no implementa la órdenes que ejecutas a diario, sino que estas están implementadas en distintas extensiones. A continuación te muestro las extensiones que instala el instalador de Digi3D.NET y el tipo de órdenes que implementa cada extensión:

Extensión Tipos de órdenes
DigiNG.OrdenesStandard Órdenes habituales como LINEA, ARCO, COMPRIMIR, etc.
DigiNG.OrdenesBaseDatos Órdenes relacionadas con bases de datos.
DigiNG.OrdenesMDT Órdenes relacionadas con Modelos Digitales del Terreno.
DigiNG.OrdenesRaster Órdenes relacionadas con imágenes.
DigiNG.OrdenesTopologia Órdenes relacionadas con topología.

La mayoría de órdenes que conoces están implementadas en la extensión DigiNG.OrdenesStandard. Puedes ver dónde está implementadas las órdenes en la ayuda, pues la referencia de cada orden muestra al final en una tabla en la que se indica la extensión en la que se implementa esa orden en particular (en el vídeo de al final de esta entrada te lo muestro).

Bien, pues todas estas extensiones publican los nombres de las órdenes en un archivo .XML que puedes encontrar en %ProgramFiles%\Digi21.net\Digi3D.NET\es-ES.

La última carpeta se llama es-ES pues es donde están las cosas de Español. Podrás comprobar que también hay una carpeta llamada en-US. Ahí tienes los mismos archivos que en la es-ES, pero todo el contenido que encuentres en esa carpeta es para el idioma inglés.

En esa carpeta te encontrarás unos archivos que se llaman igual que las extensiones enumeradas en la tabla anterior con extensión .xml.

Si abres una de ellas con tu editor de texto favorito, te encontrarás con todas las órdenes que implementa la extensión.

Ahora tan solo nos queda comentar o eliminar el nodo que representa a la orden que queremos eliminar. Para ello tenemos que buscar lo siguiente:

name=”orden”

Por ejemplo:

name=”salir”

Nuestro editor nos llevará al nodo XML en el que se publica la orden.

Podemos hacer dos cosas: o eliminamos el nodo completamente o lo comentamos mediante un comentario XML.

En el vídeo de a continuación te muestro como hacerlo.

Ejecuta múltiples órdenes automáticamente al seleccionar un código en Digi3D.NET

Una de las novedades de Digi3D.NET es que permitía asignar opcionalmente una orden a un código, de forma que si seleccionábamos ese código, se ejecutaba dicha orden automáticamente.

Si queríamos ejecutar más de una orden por el mero hecho de seleccionar como código activo un código, no nos quedaba más remedio que crear un archivo de macroinstrucciones (las famosas arrobas).

Acabamos de modificar este funcionamiento añadiendo la posibilidad de añadir tantas órdenes como nos interese en la variable Orden de las propiedades del código.

El contenido de la variable Orden se mostrará vacío si el código no tiene asignada ninguna orden.
Si el código tiene una única orden, se mostrará en la ventana dicha orden.
Si el código tiene asignada más de una orden, se mostrará en la ventana la primera orden y unos puntos suspensivos que nos indicarán que faltan órdenes por mostrar.

Si seleccionamos la variable, aparecerá un botón con puntos suspensivos a la derecha. Si lo pulsamos, aparecerá el editor de órdenes que nos permitirá introducir las órdenes que queremos que se ejecuten al seleccionar dicho código.

Una vez en Digi3D.NET, si seleccionamos una orden que tenga asignada códigos, el programa ejecutará automáticamente las órdenes asignadas.

Puedes ver esta funcionalidad en el siguiente vídeo:

[youtube:https://youtu.be/RioLoKA9tM4%5D