Los programas de AutoLISP suelen requerir muy pocos cambios para poder ejecutarlos en la versión más reciente.
Sin embargo, es posible que un programa de AutoLISP ya no se ejecute correctamente en la versión más reciente debido a que una función de AutoLISP, o un comando o una variable de sistema de un producto basado en AutoCAD hayan cambiado o se hayan dejado de utilizar.
Revise los programas personalizados en busca de comandos y variables de sistema que se hayan designado como obsoletos. En algunos casos, un comando o una variable de sistema obsoletos se pueden seguir utilizando mediante los programas personalizados, incluso aunque no se puedan introducir directamente en la solicitud de comando o acceder a ellos desde la interfaz de usuario.
Las técnicas siguientes pueden ser útiles para utilizar un comando o una variable de sistema obsoletos en un programa:
El comando INSERT ahora muestra la paleta de bloques, mientras que el nuevo comando INSERTCLASICO muestra el cuadro de diálogo Insertar "heredado". Si el programa de AutoLISP se basa en el uso del cuadro de diálogo Insertar, deberá cambiar el programa existente. Anteriormente, es posible que haya utilizado las siguientes instrucciones de AutoLISP para visualizar el cuadro de diálogo Insertar:
(initdia) (command "insert")
Para seguir visualizando el cuadro de diálogo Insertar con los programas de AutoLISP, deberá cambiar los programas existentes para utilizar uno de estos enfoques:
(initcommandversion 2) (initdia) (command "insert")
(command "classicinsert")
Los valores almacenados en las variables de sistema CDATE y DATE ya no representan la fecha y hora actuales al milisegundo o la centésima parte de segundo más próximos. Los segundos son ahora la unidad de tiempo más pequeña en la que se expresan los valores de estas dos variables de sistema. Si necesita realizar un seguimiento de intervalos inferiores a un segundo, considere la posibilidad de usar el valor devuelto por la variable de sistema MILLISECS, que almacena la diferencia de tiempo en milisegundos desde que se inició la estación de trabajo.
Las siguientes variables de sistema relacionadas con la fecha/hora también se han visto afectadas por la eliminación de los milisegundos:
Si alguno de los programas existentes requiere diferencias de tiempo hasta el milisegundo más próximo, puede obtener los últimos 2 o 3 dígitos del valor almacenado en la variable de sistema MILLISECS y añadirlos al valor devuelto por la variable del sistema CDATE que generará un valor comparable al que ha devuelto la variable de sistema CDATE en productos basados en AutoCAD 2016 y versiones anteriores. En el siguiente código de ejemplo, se muestra cómo puede obtener un valor de fecha/hora que incluya milisegundos en función de la versión de AutoCAD de destino:
; Returns a CDATE value that includes milliseconds based on release ; Usage: (CDate) ; Replaces (rtos (getvar "CDATE") 2 8) (defun CDate ( / ms) ; Check to see which AutoCAD release is being used (if (<= (atof (getvar "ACADVER")) 22.0) (rtos (getvar "CDATE") 2 8) (progn ; Get the current milliseconds and append it to the CDATE value (setq ms (itoa (getvar "MILLISECS"))) (strcat (rtos (getvar "CDATE") 2 6)(substr ms (- (strlen ms) 2))) ) ) )
El nombre de la variable de sistema EPDFSHX integrada en AutoCAD 2016 Update 1 ha cambiado a PDFSHX. Como resultado del cambio de nombre, deben modificarse las instrucciones de AutoLISP que hacen referencia a la variable de sistema EPDFSHX. Estas son las funciones que probablemente se verán afectadas por este cambio en los programas personalizados:
Los archivos de AutoLISP ahora se pueden firmar digitalmente. Al firmar digitalmente un archivo de AutoLISP, este se puede cargar en el entorno de dibujo de AutoCAD sin recibir una advertencia de que el archivo no es de confianza. Los archivos VLX con firma digital no se pueden cargar en la versión 2015 y anteriores de los productos basados en AutoCAD.
La función REFENT ya no admite el modo de referencia rápida a objetos (qui). Las referencias al modo qui deben eliminarse todas las sentencias que utilicen la función REFENT de los programas de AutoLISP. Si el modo no se elimina, la función REFENT devuelve nil en lugar de un valor de coordenadas de un punto válido en el área de dibujo.