camomile, не понятно о чем речь, если о функциях Автокада реализованных с помощью LISP :
Файл ACAD.LSP
Пользователь может создать файл acad.lsp для регулярного использования программ на AutoLISP. При запуске AutoCAD производится поиск файла поддержки acad.lsp. Если файл acad.lsp найден, он загружается в память.
Загрузка файла acad.lsp производится один раз при запуске нового сеанса AutoCAD. Это связано с тем, что файл acad.lsp предназначен для автозагрузки специальных приложений. Поэтому все переменные и функции, определенные в файле acad.lsp, доступны только для самого первого чертежа. Если требуется, чтобы некоторые процедуры были доступны для всех открываемых документов, их следует поместить в файл acaddoc.lsp.
Режимом загрузки файлов acad.lsp и acaddoc.lsp можно управлять с помощью системной переменной ACADLSPASDOC. Если для системной переменной ACADLSPASDOC установлено значение, равное 0 (значение по умолчанию), файл acad.lsp загружается только один раз, а именно при запуске приложения. Если ACADLSPASDOC равна 1, файл acad.lsp загружается при открытии или создании каждого чертежа.
Значение системной переменной ACADLSPASDOC игнорируется при работе в однодокументном режиме SDI (single document interface). Если системная переменная SDI имеет значение 1, системная переменная LISPINIT управляет повторной инициализацией AutoLISP при открытии нового чертежа. Если LISPINIT равна 1, функции и переменные AutoLISP действуют только для текущего чертежа; при открытии нового чертежа все они выгружаются из памяти, после чего выполняется повторная загрузка файла acad.lsp. В случае, когда системная переменная SDI равна 0, изменение значения LISPINIT не оказывает никакого действия.
В файле acad.lsp может размещаться код AutoLISP одной или нескольких процедур или только последовательность вызовов функции load. Последний способ более предпочтителен, так как при этом упрощается возможная модификация перечня загружаемых процедур и приложений. Если приведенный ниже код сохранить как файл acad.lsp, файлы mysessionapp1 .lsp, databasesynch.lsp и drawingmanager.lsp будут загружаться при каждом запуске программы AutoCAD.
(load "mysessionappl") (load "databasesynch") (load "drawingmanager")
ПРЕДУПРЕЖДЕНИЕ lsp, содержащий функции на языке AutoLISP, которые необходимы для нормальной работы AutoCAD. Данный файл загружается в память непосредственно перед загрузкой файла acad.lsp.
Файл ACADDOC.LSP
Файл acaddoc.lsp предназначен для выполнения инициализации каждого документа (чертежа). Этот файл удобно использовать для автоматической загрузки библиотек AutoLISP-процедур при создании нового чертежа или открытии имеющегося.
Каждый раз при открытии чертежа программа AutoCAD производит поиск файла acaddoc.lsp по библиотечному пути. При обнаружении такого файла производится его загрузка в память. Загрузка файла acaddoc.lsp производится для каждого чертежа независимо от значения системных переменных ACADLSPASDOC и LISPINIT.
В большинстве случаев пользователю достаточно иметь один файл acaddoc.lsp для всех AutoLISP-процедур, работающих непосредственно с документами. AutoCAD выполняет поиск файла acaddoc.lsp в порядке, заданном в стандартных библиотечных путях. Поэтому при работе с различными типами чертежей в каждой папке с чертежами можно хранить свой файл acaddoc.lsp для загрузки требуемого набора процедур AutoLISP.
В файле acaddoc.lsp может храниться код для одной или нескольких процедур или серии запросов функции load . Последний способ более предпочтителен, так как при этом упрощается возможная модификация перечня загружаемых процедур и приложений. Если, например, файл acaddoc.lsp имеет приведенное ниже содержимое, файлы mydocumentappl .lsp, build.lsp и counter.lsp будут загружаться при открытии каждого документа.
(load "mydocumentappl")
(load "build")
(load "counter")
ПРЕДУПРЕЖДЕНИЕ lsp. lsp, содержащий функции на языке AutoLISP, которые необходимы для нормальной работы AutoCAD. Данный файл загружается в память непосредственно перед загрузкой файла acaddoc.lsp.
MNL-файл и AutoLISP-функции для меню
Во время загрузки файла настройки AutoCAD производит поиск файла MNL с таким же именем. При обнаружении нужного файла производится его загрузка в память. Данный механизм позволяет обеспечить загрузку функций AutoLISP, необходимых для работы меню, в программе AutoCAD.
Данный механизм позволяет обеспечить загрузку функций AutoLISP в программе AutoCAD, необходимых для работы меню. Например, файл адаптации AutoCAD по умолчанию acad.cui зависит от содержимого файла acad.mnl. Этот файл содержит определения функций AutoLISP, вызываемых в макросах меню. MNL-файл загружается после файла acaddoc.lsp.
ПРИМЕЧАНИЕ Если файл настройки загружается с помощью функции command на языке AutoLISP, которая имеет формат (command "menu" "newmenu"), то соответствующий файл MNL загружается только после запуска всей процедуры AutoLISP.
В данном примере для выдачи сообщения использована функция princ. Первый вызов функции princ приводит к появлению в командной строке следующего сообщения:
Утилиты "Newmenu"... загружены.
Второй вызов princ используется для завершения функции AutoLISP. Без второго вызова princ сообщение в командной строке появится дважды. Как уже упоминалось ранее, можно использовать аргумент при ошибке при вызове функции load для повышения надежности процедур.
Предотвращение ошибок AutoLISP при выполнении файлов автозагрузки
Если в процессе выполнения AutoLISP-файла автозагрузки происходит ошибка, то оставшаяся часть файла игнорируется и не загружается.
Если файлы, указанные в файле загрузки, не существуют или отсутствуют по библиотечному пути AutoCAD, это обычно вызывает ошибки. Для предотвращения прерывания выполнения файла автозагрузки при возникновении ошибки можно использовать аргумент при ошибке функции load. В следующем примере иллюстрируется использование данного аргумента:
(princ (load"mydocappl" "ХпФбйл MYDOCAPP1.LSP не загружен."))
(princ (load"build" "Файл BUILD.LSP не загружен."))
(princ (load"counter" "Файл COUNTER.LSP не загружен."))
(princ)