Для выполнения операций по настройке после инициализации чертежа можно написать функцию S::STARTUP.
command; надежная работоспособность данной функции возможна только после завершения инициализации чертежа.
Все автоматически загружаемые файлы LISP (acad.lsp, acaddoc.lsp и MNL) размещаются в памяти до завершения полной инициализации чертежа. Обычно это не создает проблем, за исключением тех случаев, когда используется функцияS::STARTUP содержится в файлахacad.lsp,acaddoc.lsp , или MNL, то она выполняется при каждом создании нового или открытии имеющегося чертежа. Таким образом, для выполнения операций по настройке можно написать функцию S::STARTUP и поместить ее в автоматически загружаемый LISP-файл.
Если пользовательская функцияШТРИХ таким образом, чтобы при вводе ее имени вызывалась команда КШТРИХ и выдавалось соответствующее сообщение. Для этого в файл acaddoc.lsp нужно добавить следующий код:
Пусть, например, требуется переопределить стандартную команду(defun C:ШТРИХ ( )
(alert "Вызывается команда КШТРИХ!")
(princ "\nДля вызова встроенной команды ШТРИХ введите ВСТРШТРИХ.\n")
(command "КШТРИХ")
(princ)
)
(defun C:ВСТРШТРИХ ( )
(command ".ШТРИХ")
(princ)
)
(defun-q S::STARTUP ( )
(command "нетком" "штрих")
(princ "\nПереопределение ШТРИХ на КШТРИХ!\n")
)
defun задаются новые описания команд ШТРИХ и ВСТРШТРИХ. После завершения инициализации чертежа вызывается функция S::STARTUP, которая отключает стандартное описание команды ШТРИХ.
Перед завершением инициализации чертежа с помощью функцииS::STARTUP может быть определена в различных файлах (acad.lsp, acaddoc.lsp, файлах MNL или любых других файлах AutoLISP), то определенную ранее функцию S::STARTUP можно переопределить. В следующем примере приводится способ определения данной функции, позволяющий избежать подобных ситуаций.
Так как функция с именем(defun-q MYSTARTUP ( )
... автоматически выполняемая функция ...
)
(setq S::STARTUP (append S::STARTUP MYSTARTUP))
S::STARTUP добавляется к коду новой функции S::STARTUP. Этот способ определения можно использовать независимо от ранее существовавшей функции S::STARTUP.
В результате такого определения код предыдущей загруженной функции