Сведения о совместимости AutoLISP

В программы на языке AutoLISP® часто требуется внести небольшие изменения, чтобы они могли выполняться в новой версии.

Однако программа AutoLISP может работать неправильно в последней версии, так как функция AutoLISP либо команда программы или системная переменная на основе AutoCAD была изменена или устарела.

Прим.: Начиная с программных продуктов на основе AutoCAD 2014, пользовательские приложения должны работать в безопасном режиме, когда для системной переменной SECURELOAD установлено значение 1 или 2. При работе в режиме безопасности программа на основе AutoCAD ограничивается загрузкой и выполнением файлов, содержащих код из доверенных местоположений; доверенные местоположения определяются системной переменной TRUSTEDPATHS. Для получения дополнительной информации см. раздел «Безопасность и антивирусная защита».

Общая информация

Устаревшие команды и системные переменные

Проверьте свои пользовательские программы, чтобы выявить команды и системные переменные, которые могли устареть. В некоторых случаях устаревшие команды и системные переменные могут использоваться в таких программах, даже если их нельзя ввести непосредственно в командную строку или запустить через пользовательский интерфейс.

Прим.: Несмотря на то, что устаревшие команды и системные переменные могут работать в пользовательских программах, нельзя гарантировать, что они продолжат работать в последующих версиях продукта. Рекомендуется переделать пользовательские программы, так чтобы устаревшие команды и системные переменные в них не использовались.

При необходимости использовать устаревшую команду или системную переменную в пользовательской программе можно обратиться к следующим методам.

  • Поставьте точку перед командой. Например, чтобы воспользоваться командой BLIPMODE, введите .BLIPMODE.
  • Не используйте устаревшие системные переменные в рамках функции COMMAND, так как это может привести к появлению ошибки «Неизвестная команда». Вместо этого рекомендуется использовать функции GETVAR или SETVAR. Например, выражение (getvar "BLIPMODE") возвращает текущее значение системной переменной BLIPMODE.
Прим.: Команды и системные переменные, которые были удалены из продукта, не могут быть восстановлены с помощью описанного выше способа.

Программы на основе AutoCAD 2017 и более поздней версии

CDATE, DATE и другие связанные с датой и временем системные переменные

В значениях системных переменных CDATE и DATE больше не отражаются текущая дата и время с точностью до тысячной или сотой доли секунды. Теперь наименьшей единицей времени для выражения значений этих переменных являются секунды. Если необходимо отследить промежутки времени с точностью до долей секунды, используйте значение системной переменной MILLISECS, которое отражает разницу во времени с момента запуска компьютера в миллисекундах.

В следующих системных переменных, связанных с датой и временем, также больше не используются миллисекунды:

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

Если для любой из программ требуется свести различия времени к ближайшей миллисекунде, можно получить последние две или три цифры значения, хранящегося в системной переменной MILLISECS, и добавить их к значению, которое вернула системная переменная CDATE, в результате чего будет получено значение, сравнимое с возвращенным системной переменной CDATE в продуктах на основе AutoCAD 2016 и более ранних версиях. Следующий пример кода показывает, что можно сделать, чтобы получить значение даты/времени, которое включает миллисекунды, на основании целевого выпуска AutoCAD.

; 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)))
    )
  )
)
Системная переменная EPDFSHX

Системная переменная EPDFSHX, представленная в AutoCAD 2016 Update 1, переименована в PDFSHX. В результате изменения названия следует пересмотреть все утверждения AutoLISP, которые ссылаются на системную переменную EPDFSHX. Функции, на которые скорее всего повлияет данное изменение в пользовательских программах:

  • GETVAR — с большей вероятностью вернет значение nil, а не целое значение 0 или 1.
  • SETVAR — выполнение программы может приостановиться с появлением сообщения об ошибке Настройка переменной AutoCAD отвергнута: epdfshx.
  • COMMAND — выполнение программы может приостановиться с появлением сообщения об ошибке EPDFSHX Неизвестная команда EPDFSHX.

Программы на основе AutoCAD 2016 и более поздней версии

Файлы с цифровой подписью

В файлах AutoLISP теперь поддерживается цифровая подпись. Если добавить к файлу AutoLISP цифровую подпись, то при его загрузке в среду чертежа AutoCAD не будет отображаться предупреждение о том, что файл получен из ненадежного источника. Файлы VLX с цифровой подписью нельзя загружать в продукты на базе AutoCAD 2015 или более ранних версий.

функция объектной привязки

Функция объектной привязки больше не поддерживает быстрый режим объектной привязки qui. Ссылки на режим qui необходимо удалить из всех операторов, использующих функцию объектной привязки в программах AutoLISP. Если режим не удаляется, функция объектной привязки возвращает NIL, а не значение координат для допустимой точки в области чертежа.