Включение команды пользователя и адаптация ее в меню не очень сложное дело, но и не простое, раз сделал, второй повторил, а дальше все автоматом пойдет. Для начала определимся, что пользовательское меню уже существует, и мы хотим добавить новую команду в это меню рабочего пространства. Подключать будем команду, написанную на языке AutoLISP, оформленную как отдельный файл, т.е. программу.
Ввод команд в системе AutoCAD осуществляется с помощью меню или из командной строки, в принципе кнопка (пункт) меню просто “передает” командной строке запуск функции. В данном случае мы хотим запускать программу через меню, т.к это удобнее. При вызове того или иного пункта меню системе передается управляющий код. Управляющий код (макрос) может быть простым или сложным, включающим в себя различные проверки, переходы по условиям, загрузку и, в конце концов – запуск программы на исполнение, рассмотрим обычный макрос.
Запуск программы с командной строки выглядит следующим образом:

  • загрузка программы
    (Load «prog_name»)
    где «prog_name» — это имя лисп-файла программы,
  • вызов программы на исполнение
    (C:prog_name) или prog_name
    (C:prog_name) — имя главной функции,собственно и есть сам вызов, причем в одном сеансе работы достаточно один раз загрузить программу, а потом только вызывать ее.

В большинстве случаев имя файла и имя главной функции совпадают, но все-таки лучше проверить, если код программы открыт. Надо найти в теле кода строку типа
(defun c:<имя_команды> (……..
если оно отлично от имени файла, то запускать программу на исполнение надо будет так —
(c:<имя_команды>). Но чаще эти имена совпадают.
Иногда, после загрузки программы, в командной строке бывает сообщение, как запустить данную программу на исполнение, чаще всего такое делается, если программа скомпилирована или код программы нечитабелен (типа защищен) и нельзя подсмотреть функцию запуска, тогда после ее удачной загрузки выскочит сообщения с командой запуска программы типа (c:<имя_команды>).

При создании пункта меню для запуска программы нам надо все это объединить в один макрос.

  • Завершить все запущенные команды.
  • Проверить загружена ли наша программа.
  • Загрузить ее если она НЕ загружена.
  • Запустить программу на исполнение.

Подробнее…
Откроем окно пользовательского интерфейса CUI.
В Окне CUSTOMIZE выберем файл нашего меню, в которое хотим добавить новую команду.

В нашем случае это меню _mscope.cuix.
После выбора перейдем в окно Custom Command.
В зоне окна давим правую кнопку мыши и выбираем пункт New Command (Новая Команда).

После этого видим в окне новую добавленную заготовку под команду:

Видим команду под именем Command1, которая размещена в меню _mScope (на рисунке подчеркнуто красным).

Теперь рассмотрим окно свойств для нашей новой команды:

Name имя команды
Description описание
Extended Help File файл помощи
Command Display Name имя команды на экране
Macro макрос вызова функции (программы)
Tags всплывающая подсказка
Element ID идентификационный номер, присваивается автоматически
Smal image файл кнопки-картинки 16*16
Large image вайл кнопки-картинки 32*32

Начнем заполнение граф.
Я выбрал программу для соединение дуги, превращение ее в окружность mA2C. Судя по описанию в коде программы ее автор S. Restmeyer, скачана она была давным давно, как бесплатная программа, откуда уже не помню.

;This function will change an arc to a circle
;written by: S. Restmeyer
6/2/98

Главная функция c:mA2C, ее то мы и будем вызывать на исполнение, а файл с программой имеет схожее название mA2C.lsp

Зададим Имя – “Соединить дугу”.
Графы ниже пропустим, сейчас не до них, до MACRO, куда запишем следующую строку:

^C^C^P(progn(if(= C:mA2C nil)(load “mA2C”)));mA2C;

Надо расшифровать запись?
Ок. Коротенько. Если программа не загружена еще – загружаем, затем вызываем на исполнение. Если загружена ранее – сразу вызываем на исполнение. В данном случае запись макроса можно изменить на:

^C^C^P(if(= C:mA2C nil)(load “mA2C”));mA2C;

Функция PROGN тут лишняя. В более сложной конструкции она была бы необходима, а сейчас функция IF справляется сама.
Напоминать, что файлы программ должны лежать в доступном для системы каталоге, думаю не надо, но картинку напомню:

После заполнения граф давим на кнопку APPLY и OK.
При безошибочном вводе система выполнит быструю перезагрузку меню и готова к работе.

Вот как-то так!

От Genchik