Acerca de la compatibilidad de AutoLISP

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.

Nota: A partir de los productos basados en AutoCAD 2014, las aplicaciones personalizadas deben funcionar en modo seguro cuando la variable de sistema SECURELOAD se establece en 1 o 2. Al funcionar en modo seguro, el producto basado en AutoCAD queda restringido a la carga y ejecución de archivos que contengan código de ubicaciones de confianza; las ubicaciones de confianza se especifican mediante la variable de sistema TRUSTEDPATHS. Para obtener más información, consulte "Acerca de la seguridad y la protección contra virus".

Información general

Comandos y variables de sistema obsoletos

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.

Nota: Aunque es posible que un comando o una variable de sistema obsoletos puedan funcionar en un programa, no se garantiza que sigan funcionando en una versión futura del producto. Se recomienda reescribir los programas personalizados para evitar el uso de comandos o variables de sistema obsoletos.

Las técnicas siguientes pueden ser útiles para utilizar un comando o una variable de sistema obsoletos en un programa:

  • Añada un punto delante del nombre de un comando. Por ejemplo, .MARCAAUX permite el uso del comando MARCAAUX.
  • Evite la ejecución de una variable de sistema obsoleta con la función COMMAND, lo que podría generar un mensaje de error de comando desconocido; en lugar de ello, utilice las funciones GETVAR y SETVAR. Por ejemplo, (getvar "BLIPMODE") devuelve la variable de sistema BLIPMODE.
Nota: Los comandos y las variables de sistema que se hayan eliminado del producto no se pueden restaurar mediante las técnicas mencionadas anteriormente.

Productos basados en AutoCAD 2020

Comando INSERT

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")

Productos basados en AutoCAD 2017 y versiones posteriores

CDATE, DATE y otras variables de sistema relacionadas con la fecha/hora

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:

  • TDCREATE
  • TDINDWG
  • TDUCREATE
  • TDUPDATE
  • TDUSRTIMER
  • TDUUPDATE

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)))
    )
  )
)
Variable de sistema EPDFSHX

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:

  • GETVAR: se devolverá el valor nil en lugar del valor de entero 0 o 1.
  • SETVAR: es posible que se detenga la ejecución del programa y se muestre el mensaje de error ; error: parámetro de variable de AutoCAD rechazado: "epdfshx".
  • COMMAND: es posible que se detenga la ejecución del programa y se muestre el mensaje de error EPDFSHX Comando desconocido "EPDFSHX".

Productos basados en AutoCAD 2016 y versiones posteriores

Archivos con firma digital

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.

Función REFENT

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.