Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
274
Добавлен:
29.05.2015
Размер:
3.15 Mб
Скачать

Перед использованием AutoLISP-приложения его необходимо загрузить в память. Для этого можно использовать команду ЗАГПРИЛ или функцию load языка AutoLISP. При загрузке приложения AutoLISP выполняется загрузка AutoLISP-кода из LSP-файла в память системы.

Для загрузки с помощью функции load из командной строки необходимо вводить AutoLISP-выражение. В случае успешного завершения функция load возвращает в командной строке значение самого последнего выражения, содержащегося в файле. Обычно в этом качестве выступает либо имя самой последней определенной в файле функции, либо подсказка по использованию функции. Если функция load завершается неудачно, AutoLISP выдает сообщение об ошибке. Подобная ситуация при выполнении функции load может возникнуть вследствие ошибок в LISP-коде или при ошибочном вводе в командной строке имени файла. Формат использования функции load имеет следующий вид:

(load имя_файла [при_ошибке])

Функция load имеет два аргумента: обязательный - имя_файла и необязательный - при_ошибке. При загрузке файла AutoLISP из командной строки обычно задается только аргумент имя_файла. В следующем примере иллюстрируется загрузка

AutoLISP файла newfile.lsp.

Команда: (load "newfile")

Расширение имени файла .lsp не обязательно. Такой формат ввода можно использовать для любых LSP-файлов, хранящихся по текущему библиотечному пути.

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

Команда: (load "d:/files/morelisp/newfile")

ПРИМЕЧАНИЕ Для отделения имен папок при вводе пути следует использовать одну прямую косую черту (/) или две обратных косых черты (\\). Это связано с тем, что в AutoLISP символ обратной косой черты (\\) имеет специальное назначение.

См. также:

“Коротко об организации файлов” на стр.4

Автоматическая загрузка и выполнение процедур AutoLISP

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

210 | Глава 7 Введение в интерфейсы программирования

Коротко об автоматической загрузке процедур

AutoLISP

AutoCAD автоматически загружает содержимое трех определяемых пользователем файлов, acad.lsp, acaddoc.lsp и файла MNL, связанных с текущим файлом настройки. По умолчанию загрузка файла acad.lsp производится один раз в начале нового сеанса AutoCAD, в то время как загрузка файла acaddoc.lsp производится для каждого документа (или чертежа). Это позволяет связать загрузку файла acad.lsp с запуском приложения, а загрузку файла acaddoc.lsp с открытием документа (или чертежа). Описанный способ загрузки можно изменить, модифицировав значение системной переменной ACADLSPASDOC.

Если в одном из этих файлов определена специальная функция S::STARTUP, она автоматически исполняется сразу же после инициализации чертежа. Описание функции S::STARTUP можно найти в разделе “Функция S::STARTUP: выполнение после завершения инициализации чертежа” на стр.215. Кроме того, перечень приложений для автоматической загрузки можно выбрать с помощью команды ЗАГПРИЛ. В последнем случае редактирование файлов не требуется.

Файлы автозагрузки acad.lsp и acaddoc.lsp не поставляются с AutoCAD. При необходимости пользователь должен создать их самостоятельно.

Автозагрузчик команд

При автоматической загрузке команды с помощью функции load или command независимо от фактического использования этой команды под весь ее AutoLISP-код сразу же выделяется память. Функция autoload языка AutoLISP позволяет сделать команду доступной без загрузки ее кода в память. При добавлении следующего кода в файл acaddoc.lsp происходит автоматическая загрузка команд КОМАНДА1,

КОМАНДА2 и КОМАНДА3 из файла cmds. lsp и команды НОВАЯКОМ из файла newcmd. lsp.

(autoload "CMDS" '("КОМАНДА1" "КОМАНДА2" "КОМАНДА3")) (autoload "NEWCMD" '("НОВАЯКОМ"))

После первого ввода в командной строке имени автоматически загруженной команды AutoLISP загружает полное описание этой команды из соответствующего файла. В AutoLISP также имеется функция autoarxload для приложений ObjectARX.

Дополнительную информацию о функциях autoload и autoarxload см. в руководстве Справка по AutoLISP (в меню AutoCAD "Справка" выберите "Дополнительные ресурсы" " Документация для разработчиков").

ПРИМЕЧАНИЕ Если существует несколько файлов автозагрузки AutoLISP с одинаковыми именами, загружается тот из них, который имеет наиболее позднюю дату изменения. То же самое происходит при загрузке файлов с расширениями LSP, если не указано полное имя файла (с расширением).

AutoLISP и Visual LISP | 211

См. также:

“Загрузка файла AutoLISP” на стр.152

“Функция S::STARTUP: выполнение после завершения инициализации чертежа” на стр.215

Файл 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 "mysessionapp1") (load "databasesynch") (load "drawingmanager")

212 | Глава 7 Введение в интерфейсы программирования

ПРЕДУПРЕЖДЕНИЕ lsp, содержащий функции на языке AutoLISP, которые необходимы для нормальной работы AutoCAD. Данный файл загружается в память непосредственно перед загрузкой файла acad.lsp.

См. также:

“Коротко об организации файлов” на стр.4

“Предотвращение ошибок AutoLISP при выполнении файлов автозагрузки” на стр. 214

Файл 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 имеет приведенное ниже содержимое,

файлы mydocumentapp1.lsp, build.lsp и counter.lsp будут загружаться при открытии каждого документа.

(load "mydocumentapp1") (load "build")

(load "counter")

ПРЕДУПРЕЖДЕНИЕ lsp. lsp, содержащий функции на языке AutoLISP, которые необходимы для нормальной работы AutoCAD. Данный файл загружается в память непосредственно перед загрузкой файла acaddoc.lsp.

См. также:

“Коротко об организации файлов” на стр.4

“Предотвращение ошибок AutoLISP при выполнении файлов автозагрузки” на стр. 214

AutoLISP и Visual LISP | 213

Соседние файлы в папке Справочные материалы