В программы на языке AutoLISP® часто требуется внести небольшие изменения, чтобы они могли выполняться в новой версии.
Однако программа AutoLISP может работать неправильно в последней версии, так как функция AutoLISP либо команда программы или системная переменная на основе AutoCAD была изменена или устарела.
Проверьте свои пользовательские программы, чтобы выявить команды и системные переменные, которые могли устареть. В некоторых случаях устаревшие команды и системные переменные могут использоваться в таких программах, даже если их нельзя ввести непосредственно в командную строку или запустить через пользовательский интерфейс.
При необходимости использовать устаревшую команду или системную переменную в пользовательской программе можно обратиться к следующим методам.
В значениях системных переменных CDATE и DATE больше не отражаются текущая дата и время с точностью до тысячной или сотой доли секунды. Теперь наименьшей единицей времени для выражения значений этих переменных являются секунды. Если необходимо отследить промежутки времени с точностью до долей секунды, используйте значение системной переменной MILLISECS, которое отражает разницу во времени с момента запуска компьютера в миллисекундах.
В следующих системных переменных, связанных с датой и временем, также больше не используются миллисекунды:
Если для любой из программ требуется свести различия времени к ближайшей миллисекунде, можно получить последние две или три цифры значения, хранящегося в системной переменной 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, представленная в AutoCAD 2016 Update 1, переименована в PDFSHX. В результате изменения названия следует пересмотреть все утверждения AutoLISP, которые ссылаются на системную переменную EPDFSHX. Функции, на которые скорее всего повлияет данное изменение в пользовательских программах:
В файлах AutoLISP теперь поддерживается цифровая подпись. Если добавить к файлу AutoLISP цифровую подпись, то при его загрузке в среду чертежа AutoCAD не будет отображаться предупреждение о том, что файл получен из ненадежного источника. Файлы VLX с цифровой подписью нельзя загружать в продукты на базе AutoCAD 2015 или более ранних версий.
Функция объектной привязки больше не поддерживает быстрый режим объектной привязки qui. Ссылки на режим qui необходимо удалить из всех операторов, использующих функцию объектной привязки в программах AutoLISP. Если режим не удаляется, функция объектной привязки возвращает NIL, а не значение координат для допустимой точки в области чертежа.