- ACAD командa _appload ?
- Сообщения 13
- #1 Тема от Valeri 18 сентября 2002г. 17:37:32
- Тема: ACAD командa _appload ?
- #2 Ответ от ShaggyDoc 19 сентября 2002г. 06:06:02
- Re: ACAD командa _appload ?
- #3 Ответ от Valeri 19 сентября 2002г. 18:36:43
- Re: ACAD командa _appload ?
- #4 Ответ от ShaggyDoc 20 сентября 2002г. 06:34:42
- Re: ACAD командa _appload ?
- #5 Ответ от Sash 23 сентября 2002г. 09:00:46
- Re: ACAD командa _appload ?
- #6 Ответ от Павел, г. Пермь 23 сентября 2002г. 11:11:25
- Re: ACAD командa _appload ?
- #7 Ответ от ShaggyDoc 23 сентября 2002г. 11:24:21
- Re: ACAD командa _appload ?
- AutoCAD
- Проблема
- Причины:
- Решение
- Как использовать лисп, опубликованный на форуме
- Сохранение программного кода на своем компьютере
- Загрузка lisp файла
- Команда или функция ?
- Запуск lisp программы
- AutoCAD ; error: no function definition:
- Что такое это (vl-load-com) ?
- Организация библиотеки лисп файлов.
- Автозагрузка файлов.
ACAD командa _appload ?
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщения 13
#1 Тема от Valeri 18 сентября 2002г. 17:37:32
- Valeri
- Восстановленный участник
- На форуме с 12 августа 2002г.
- Сообщений: 41
- Спасибо: 0
Тема: ACAD командa _appload ?
Есть ли возможность загрузить *.lsp приложение в ACADе командной строкой , минуя падающее меню ?
#2 Ответ от ShaggyDoc 19 сентября 2002г. 06:06:02
- ShaggyDoc
- Восстановленный участник
- На форуме с 10 сентября 2001г.
- Сообщений: 1,761
- Спасибо: 0
Re: ACAD командa _appload ?
(load «имя_файла»)
если файл lsp, расширение не указывать. Если включен путь, слэши указывать двойными или обратными «c:\\xxx\\yyy» или «c:/xxx/yyy»
Если файл на путях поиска Автокада, путь можно не указывать
#3 Ответ от Valeri 19 сентября 2002г. 18:36:43
- Valeri
- Восстановленный участник
- На форуме с 12 августа 2002г.
- Сообщений: 41
- Спасибо: 0
Re: ACAD командa _appload ?
Ок! Это понятно. А самой командой _appload «c:\\xxx\\yyy» в ACADе згрузиться никак нельзя?
#4 Ответ от ShaggyDoc 20 сентября 2002г. 06:34:42
- ShaggyDoc
- Восстановленный участник
- На форуме с 10 сентября 2001г.
- Сообщений: 1,761
- Спасибо: 0
Re: ACAD командa _appload ?
Вопрос-то по программированию.
appload — диалоговая команда. Для того, чтобы загружать программы для «разового» или редкого использования. Когда их начинают использовать часто — включают в меню или автозагрузку. Тут и пригодится (load . ). Ее тоже в командной строке набирают обычно на стадии отладки, потом — в меню или автозагрузку.
Многие диалоговые команды автокада имеют вариант для командной строки (обычно с префиксом «-«). Это бывает нужно для программирования, детали можно уточнять в Help. APPLOAD такого варианта не имеет, потому, что нет смысла — есть ФУНКЦИИ загрузки load, arxload и т.п.
#5 Ответ от Sash 23 сентября 2002г. 09:00:46
- Sash
- Восстановленный участник
- На форуме с 23 сентября 2002г.
- Сообщений: 2
- Спасибо: 0
Re: ACAD командa _appload ?
2 ShaggyDoc
А если мне требуется чтобы команда повторялась по нажатию правой кнопки мыши? Как я понимаю надо прописывать команду в acad.pgp типа c:mycomand? И получается, что при загрузке она попадет в оперативку и займет там лишнее место.
#6 Ответ от Павел, г. Пермь 23 сентября 2002г. 11:11:25
- Павел, г. Пермь
- Восстановленный участник
- На форуме с 8 августа 2002г.
- Сообщений: 157
- Спасибо: 0
Re: ACAD командa _appload ?
Sash, место много жрать такая ссылка не будет.
А если тебе надо, чтобы по правй клавише команда повторялась, то есть вариант с ЛИСП файлом:
Имя файла RUN.lsp, либо при открытии сеанса запускаешь, либо в MNL-файле прописываешь загрузку.
(defun c:mycommand ()
(load «c:\\myProgs\\Myprogramm»)
;Здесь можно выбрасывать используемую функцию из памяти
(setq MyProgramm nil)
)
Эта команда mycommand, доступна, если ты загрузил файл содержащий эту функцию. И вызывается по нажатию правой клавиши мыши.
#7 Ответ от ShaggyDoc 23 сентября 2002г. 11:24:21
- ShaggyDoc
- Восстановленный участник
- На форуме с 10 сентября 2001г.
- Сообщений: 1,761
- Спасибо: 0
Re: ACAD командa _appload ?
Мухи отдельно, котлеты отдельно.
1. Загрузка файла — разъяснено.
2. Что в загруженном файле? Обычно функции. Некоторые могут выполняться в процессе загрузки.
3. Что такое «команда». Это или «стандартная» команда Автокада (например «LINE»), или «пользовательская», определенная в загружаемом файле. Пользовательские функции-команды имеют определение вида (defun C:NAME () ). Обязательно без параметров. Отличие от обычных функций:
а) могут вызываться с клавиатуры без скобок (а функции только в скобках). Это преимущество, но сомнительное, так как запоминать сотни пользовательских команд невозможно. А если «обнилять», как советует Павел, вообще смысл пропадает.
б) ведут себя как стандартные, то есть нажатие Enter вызывает предыдущую команду (хоть стандартную, хоть пользовательскую)
Источник
AutoCAD
Автор:
Проблема
Причины:
Решение
Убедитесь, что команда доступна в программе или инструментарии.
Установите доступные обновления AutoCAD (см. раздел Установка обновлений, надстроек и дополнений).
C:\Program files\Autodesk\ \support\
- Нажмите кнопку ОК в окне «Настройка».
- Отсутствует файл acad doc.lsp
- Откройте Проводник Windows и выполните поиск файла acad doc.lsp в папке установки AutoCAD. Путь: C:\Program Files\Autodesk\AutoCAD \Support\ .
- В командной строке введите НАСТРОЙКА, чтобы посмотреть, присутствует ли путь к файлу acad doc.lsp в списке «Пути доступа к вспомогательным файлам».
- В командной строке введите ЗАГПРИЛ и проверьте, загружен ли файл acad doc.lsp. Если нет, перейдите по указанному выше пути и загрузите файл acad doc.lsp.
- Для пользовательских команд, настроенных с помощью редактора АПИ, следует добавить кнопки на панели инструментов или панели ленты либо вынести их в раскрывающееся меню. Кроме того, их можно определить с помощью процедур LISP и загрузить посредством команды ЗАГПРИЛ (недоступно в AutoCAD LT).
- Если пользовательские команды добавляются с помощью надстройки, проверьте совместимость надстройки с AutoCAD, а затем удалите и повторно установите ее.
-
Восстановите настройки AutoCAD по умолчанию (см. раздел Восстановление настроек AutoCAD по умолчанию).
Источник
Как использовать лисп, опубликованный на форуме
Примечание: AutoLISP программы могут быть запущены только на полной версии Автокада, они не работают под AutoCAD LT. (исключая случаи загрузки дополнительных приложений типа LT Extender и ему подобных, которые специально разработаны для запуска lisp и (или) arx приложений в среде AutoCAD LT.)
Сохранение программного кода на своем компьютере
С помощью курсора выделяем этот код и копируем его в буфер обмена, нажав правую кнопку мыши и выбрав пункт Копировать (или Ctrl+C).
Запускаем «Блокнот» и вставляем наш код с помощью меню Правка >> Вставить (или Ctrl+V):После того как вставили код в блокнот, мы должны иметь что-то наподобие этого:
Теперь мы должны сохранить файл. Файл можно назвать, как вам нравится, но расширение у него должно быть .LSP. Правильнее (но не обязательно) будет назвать файл так же, как названа команда в найденном Вами коде. Команде всегда предшествует префикс C: после слова defun. В примере выше видно, что команду назвали OFF2, соответственно файл называем off2.lsp. Таким образом, мы можем избежать беспорядка, т.к. будем знать, что в файле off2.lsp находится команда OFF2.
Иногда в коде представлено несколько функций. Необходимо найти «главную». Такая функция либо имеет префикс С:, либо сам автор кода уточняет, что «использовать как «. В случае нескольких «главных» именование файла не может иметь никаких рекомендаций.Загрузка lisp файла
Далее, запускаем Автокад и выбираем Сервис >> Автолисп >> Загрузить (Tools >> AutoLISP >> Load) или набираем в командной строке _appload.
Мы должны увидеть диалоговое окно как представлено ниже:Используйте следующую последовательность, чтобы загрузить off2.lsp:
- Перейдите к папке, куда Вы сохранили lisp файл.
- Выберите файл, который Вы хотите загрузить из списка.
- Нажмите кнопку Загрузить.
(Если все прошло удачно, Вы должны увидеть надпись «off2.lsp успешно загружено») - Нажмите кнопку Закрыть для завершения команды.
Команда или функция ?
Для начала необходимо определиться, что у нас: команда или функция?
Немного теории.
В описании практически любого кода есть такая строка, каки потом после нее чего-то там написано. Так вот то, что там написано и есть имя функции.
Если первыми символами являются C:, то функция готова к вызову из командной строки. Если такого нет, то вызывать функцию надо, заключая ее имя в круглые скобки.
Например, есть функция(defun c:test () ) Ее вызывать (при условии, что она подгружена) с командной строки можно напрямую:
И будут выполнены действия
А вот такую:(defun test () ) Можно будет вызывать только так:
И будут выполнены действия .
С точки зрения AutoCAD’a это 2 разных модуля.Запуск lisp программы
Как только lisp файл загружен, Вы можете вызвать команду из командной строки. Команда вызывается по ее имени. В нашем примере необходимо набрать в командной строке OFF2.
Запомните, имя команды содержит префикс C: после слова defun. Если Вы видите в коде:то в командной строке необходимо набрать без префикса C:.
Tips: Вы можете также загрузить lisp файл путем перетаскивания (drag-and-drop) иконки файла в графическое окно открытого документа Автокада.
AutoCAD ; error: no function definition:
Если Ваша функция или команда не работает или завершает работу с сообщением как в примере ниже, то Вам может помочь простой способ.
Команда: (vlax-get-acad-object)
; error: no function definition: VLAX-GET-ACAD-OBJECTНаберите в командной строке (vl-load-com) или (предпочтительнее) добавьте ее в начало lisp файла.
Команда: (vl-load-com) Теперь ваш lisp должен работать без ошибок.
Что такое это (vl-load-com) ?
Данная функция загружает большое количество функций, входящих в расширение AutoLisp, позволяющее работать с объектами, свойствами, методами и событиями ActiveX. Признаком необходимости загрузки расширения AutoLisp является наличие в тексте Вашей программы функций, начинающихся с префиксов vla- (например vla-get-activedocument), vlax- (например vlax-get-acad-object), vl- (например vl-catch-all-apply) и vlr- (например vlr-pers).
В любом случае никогда не помешает добавить (vl-load-com) в начало файла, чтобы избежать подобных ошибок.Организация библиотеки лисп файлов.
Что делать, если набралось достаточное количество файлов? Каждый раз набирать _appload для загрузки того или иного приложения? Наиболее эффективным будет организация своей библиотеки. Для начала условимся, что все наши файлы будем складывать в одну папку. Например, D:\MyLisp. Пропишем эту папку в путях доступа Автокада. Для этого выбираем Сервис >> Настройка (Tools >> Options) или набираем в командной строке _options. Переходим на закладку Файлы (Files) и раскрываем список Путь доступа к вспомогательным файлам (Support File Search Path).
Мы должны увидеть диалоговое окно, как представлено ниже:Используйте следующую последовательность, чтобы прописать папку в путях доступа:
- Нажмите кнопку Добавить.
- Нажмите кнопку Обзор и выберите целевую папку (в нашем случае , D:\MyLisp)
- Путь к папке должен появиться в диалоговом окне.
- Нажмите кнопку OK для завершения команды.
Теперь наша папка прописана в путях доступа Автокада. Что это нам дает? Мы можем загружать наши файлы не указывая конкретного пути, а только имя файла.
Мы можем набрать в командной строке (load » «) для загрузки необходимого кода, например (load «off2»). Заметьте, что добавлять расширение .lsp не обязятельно, хотя и не запрещается.
И, наконец, самое главное — это позволит нам создать панели с кнопками для загрузки той или иной программы. Кнопка будет иметь следующее содержание:Вместо текста мы должны будем подставлять имя нужной нам команды, а вместо текста имя того файла, в котором эта команда сохранена. Напоминаю, что файл должен иметь расширение .lsp. Более подробно по организации меню можно почитать еще здесь http://www.kulichki.com/cadhlp/pdmnu.htm
Автозагрузка файлов.
Если есть необходимость загружать свои lsp файлы при открытии чертежа, то нужно добавить необходимые файлы в список автозаргузки.
Запускаем Автокад и выбираем Сервис >> Автолисп >> Загрузить (Tools >> AutoLISP >> Load) или набираем в командной строке _appload.
В открывшемся диалоговом окне жмем на кнопку Приложения рядом с изображение портфеляВ следующем диалоговом окне жмем на кнопку Добавить и указываем на необходимые файлы.
Они должны появиться в списке приложений.
Теперь перечисленные файлы будут загружаться каждый раз при открытии рисунка.
Важно понимать, что (по крайней мере в полной версии AutoCAD) загрузка приложений, помещенных в Автозагрузку (Startup Suite), как правило, выполняется во все профили и сессии AutoCAD’a.
Кроме того, есть еще один момент. Если существует 2 или более файлов, в которых описаны функции с одинаковыми именами, выполняться будет та, которая загрузилась последней. Поскольку предсказать, в какой последовательности будет выполняться загрузка приложений, невозможно, подобных ситуаций следует избегать.Автор статьи: Владимир Азарко aka VVA
Источник