Макрос на кнопку

Существует 2 способа загрузки Lisp’ов в AutoCAD

1) Помещение файлов в автозагрузку.

Плюсы:

+ Простой макрос на кнопку: ^C^Cкоманда

+ Хранение файлов где угодно

Минусы:

— Приложения загружаются все разом, что замедляет запуск AutoCAD

— Приложения могут скрыто менять настрйки AutoCAD

— Приложения могут конфликтовать м\у собой и приводить к сбою.

2) Загрузка файлов только при вызове соответствующей команды.

Плюсы:

+ Приложения не засоряют AutoCAD и не конфликтуют м\у собой

+ Систематизация хранения lisp’ов на компьютере

Минусы:

— Немного сложнее Макрос: ^C^C^P(if (not С:команда)(load "Имя файла") );^Pкоманда;

Я советую использовать второй вариант, и чтобы его единственный минус перестал таковым быть, попробую научить вас самих писать макрос для кнопки.

Специальные символы используемые в макросе:

^C - Отмена активной команды или параметра команды (равнозначно нажатию клавиши ESC)

Если кнопка в интерфейсе пользователя нажата, макрос, назначенный ей, все равно выполняется в текущем контексте программы. Это значит, что макрос будет пытаться ответить на текущий запрос. Если требуется убедиться, что ни одна команда не активна при выполнении макроса, поставьте перед макросом префикс последовательности команд ^C. Для отмены большинства команд достаточно ввести ^C один раз; для возврата к командной строке из команды простановки размеров необходимо ввести ^C^C; в зависимости от текущего параметра команды СЛОЙ может потребоваться ввести ^C^C^C. ^C^C обеспечивает отмену большинства последовательностей команд, поэтому рекомендуется широко использовать эту последовательность.

^P - Переключение переменной MENUECHO.

Символы макроса дублируются в командном запросе, как если бы они были введены с клавиатуры. Дублирование на экране называется “эхо-выводом“. Можно подавить эхо-вывод макроса с помощью системной переменной MENUECHO. Если эхо-вывод и запросы для элемента меню включены, их можно временно отключить в макросе с помощью последовательности ^P

; - Имитация нажатия ENTER

Нажатие Ввода, служит для машины сигналом, что ввод данных закончен, можешь начинать выполнять введённое.

Lisp выражения используемые в макросах.

(- начало любой функции

) - завершение любой функции

If - Функция Если

(if <тест-выражение> <выражение-тогда> [<выражение-иначе>])Эта функция исполняет выражение по условию. Если <тест-выражение> верное, тогда исполняется <выражение-тогда>, иначе исполняется <выражение-иначе>. Последнее выражение <выражение-иначе> не обязательно.

not - функция нет

(not <элемент>)Эта функция проверяет элемент, если элемент - Нет, то функция вернёт Верно

load - функция загрузки

(load <имя файла>)Эта функция загружает файл выражений AutoLISPа и выполняет эти выражения. <Имя файла> - это строка, которая представляет собой имя файла. <Имя файла> может включать префикс директории, например, "/function/test1.lsp".

А теперь пишем макрос:

^C^C

Два раза отменяем выполнение текущей команды или запрос её параметров

^C^C^P

Отключаем вывод эхо в командную строку

^C^C^P(if

Спрашиваем систему, Если

^C^C^P(if (not С:команда)

В среде AutoCAD нет нужной нам команды

^C^C^P(if (not С:команда)(load "Имя файла")

То загружаем Lisp файл содержащий эту команду

^C^C^P(if (not С:команда)(load "Имя файла"));

Завершаем функцию Если, и имитируем нажатие Ввода, чтобы запустить выполнение Lisp выражения.

^C^C^P(if (not С:команда)(load "Имя файла"));^P

Включаем обратно эхо в командную строку

^C^C^P(if (not С:команда)(load "Имя файла"));^Pкоманда;

Пишем имя команды и имитируем нажатие Ввода, для вызова этой команды.

В итоге получаем вот такой макрос:

^C^C^P(if (not С:команда)(load "Имя файла"));^Pкоманда;

 

Похожие новости

Комплексные решения Для Autocad

Комплексная автоматизация камеральной работы в AutoCAD

Перейти в раздел