Як використовувати Лісп, опублікований на форумі

Ви знайшли корисний для себе код на Ліспі і хочете його використовувати. Можна виділити 3 етапи:

  • збереження програмного коду на своєму комп'ютері
  • завантаження файлу
  • запуск програми

Примітка: AutoLISP програми можуть бути запущені тільки на повній версії Автокад, вони не працюють під AutoCAD LT. (Крім випадків завантаження додаткових додатків типу LT Extender і йому подібних, які спеціально розроблені для запуску lisp і (або) arx додатків в середовищі AutoCAD LT.)

Збереження програмного коду на своєму комп'ютері

За допомогою курсору виділяємо цей код і копіюємо його в буфер обміну, натиснувши праву кнопку миші і вибравши пункт Копіювати (або Ctrl + C).
Запускаємо "Блокнот" і вставляємо наш код за допомогою меню Правка >> Вставити (або Ctrl + V):

Після того як вставили код в записник, ми повинні мати щось на зразок цього:

Як використовувати Лісп, опублікований на форумі

Завантаження lisp файлу

Далі, запускаємо Автокад і вибираємо Сервіс >> АвтоЛІСПа >> Завантажити (Tools >> AutoLISP >> Load) або набираємо в командному рядку _appload.
Ми повинні побачити діалогове вікно як представлено нижче:

Як використовувати Лісп, опублікований на форумі

Використовуйте наступну послідовність, щоб завантажити off2.lsp:

  1. Перейдіть до папки, куди Ви зберегли lisp файл.
  2. Виберіть файл, який Ви хочете завантажити зі списку.
  3. Натисніть кнопку Завантажити.
    (Якщо все пройшло вдало, Ви повинні побачити напис "off2.lsp успішно завантажено")
  4. Натисніть кнопку Закрити для завершення команди.

Команда або функція?


Для початку необхідно визначитися, що у нас: команда або функція?
Трохи теорії.
В описі практично будь-якого коду є такий рядок, як


і потім після неї чогось там написано. Так ось те, що там написано і є ім'я функції.
Якщо першими символами є C :. то функція готова до виклику з командного рядка. Якщо такого немає, то викликати функцію треба, укладаючи її ім'я в круглі дужки.
Наприклад, є функція


Її викликати (за умови, що вона довантажуючи) з командного рядка можна безпосередньо:

І будуть виконані дії
А ось таку:


Можна буде викликати тільки так:

І будуть виконані дії.
З точки зору 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 файлу.


Тепер ваш 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).
Ми повинні побачити діалогове вікно, як наведено нижче:

Як використовувати Лісп, опублікований на форумі

Використовуйте наступну послідовність, щоб прописати папку в шляхах доступу:

  1. Натисніть кнопку Додати.
  2. Натисніть кнопку Огляд і виберіть цільову папку (в нашому випадку. D: \ MyLisp)
  3. Шлях до папки повинен з'явитися в діалоговому вікні.
  4. Натисніть кнопку OK для завершення команди.

Автозавантаження файлів.

Якщо є необхідність завантажувати свої lsp файли при відкритті креслення, то потрібно додати необхідні файли в список автозаргузкі.
Запускаємо Автокад і вибираємо Сервіс >> АвтоЛІСПа >> Завантажити (Tools >> AutoLISP >> Load) або набираємо в командному рядку _appload.
У діалоговому вікні тиснемо на кнопку Додатки поруч з зображення портфеля

Як використовувати Лісп, опублікований на форумі

У наступному діалоговому вікні тиснемо на кнопку Додати і вказуємо на необхідні файли.

Як використовувати Лісп, опублікований на форумі

Вони повинні з'явитися в списку додатків.
Тепер перераховані файли будуть завантажуватися щоразу при відкритті малюнка.
Важливо розуміти, що (принаймні в повній версії AutoCAD) завантаження додатків, поміщених в автозавантаження (Startup Suite), як правило, виконується в усі профілі і сесії AutoCAD'a.
Крім того, є ще один момент. Якщо існує 2 або більше файлів, в яких описані функції з однаковими іменами, виконуватися буде та, яка завантажилася останньої. Оскільки передбачити, в якій послідовності буде виконуватися завантаження додатків, неможливо, подібних ситуацій слід уникати.