Ввод команд в системе AutoCAD осуществляется с помощью меню или из командной строки. При вызове того или иного пункта меню системе передается управляющий код. Управляющий код может быть простым или сложным, включающим в себя различные проверки, переходы по условиям, загрузку и запуск программы на исполнение.
Запуск программы с командной строки выглядит следующим образом:

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

Если программ, которые вы используете, набролось достаточно и (или) грузить прогу с командной строки в лом можно создать свое меню запуска.

Для удобства использования программ на AutoLISP, создайте свое меню для запуска программ. Создайте текстовый файл с расширением *.MNU по анологии с ACAD.MNU.Включите программу одним из пунктов меню. При выботе пункта меню будет выполняться загрузка (если программа не загружена ранее) и запуск AutoLISP программы.
Если Вы создаете свое меню с именем, например, MY.MNU, создайте и файл MY.MNL. В файлы с таким расширением необходимы для подгрузки необходимых программ.
Пункты меню удобнее добавлять в файл MY.MNS, т.к. при этом сохраняется установка (видимость, положение на экране) панелей меню. Этот файл создается после компиляции (загрузки) вашего меню (MY.MNU) в АКАД и редактировать в дальнейшем я предпочитаю его. Файл MY.MNS практически идентичен MY.MNU. Периодически можно копировать MY.MNS в MY.MNU и использовать последний как страховочная копия.
Файл меню состоит из нескольких разделов. Нам интересны разделы POP1…POP15 – падающие группы текстового меню и TOOLBARS – панели (или набор иконок) меню и графическое меню IMAGE.

ТЕКСТОВОЕ ПАДАЮЩЕЕ МЕНЮ

Каждая группа меню начинается с записи идентификатора следующего вида

*** POP<N>
– где <N> определяет порядковый номер падающего меню, ниже следует

**DRAW
– название группы, которой будет отображаться в строке меню , по которому к нему можно обращаться, после этого идут пункты меню. Ниже приведен пример:

***POP7
**DRAW
[&Draw]
[&Line]^C^C_line
[&Ray]^C^C_ray
[Cons&truction Line]^C^C_xline
[&Multiline]^C^C_mline
[–]
[&Polyline]^C^C_pline
[&3D Polyline]^C^C_3dpoly
[Pol&ygon]^C^C_polygon
[Rectan&gle]^C^C_rectang
[–]

В квадратных скобках написано то, что будет на экране, знак & определяет букву, по которой происходит вызов с клавиатуры, на экране эта буква будет подчеркнута.
Далее ^C^C – отмена любой предыдущей команды AutoCAD’а, затем вызов собственно программы или встроенной команды.
^P – отмена эха выполнения команд в командной строке.
На экране отобразится лишь то, что в квадратных скобках (пункты меню).

***POP7 – порядковый номер меню на экране. В каждом файле падающие группы меню должны нумероваться от 1 до …, без пропусков.
**DRAW – название ниспадающего меню, которое высвечивается в строке текстового меню.

Если мы захотим вставить пункт в одну из групп меню, вызывающий программу CONUS, запишем по аналогии следующее:

[Конус]^C^C^P (load “conus”); conus;

Сначала надо загрузить программу на лиспе, записанную в файле CONUS, а затем вызвать ее на выполнение. Лучше проверить, может программа уже загружена, тогда грузить ее снова не стоит:

[Конус]^C^C^P(if (= C:conus nil) (load “conus”)); conus;

В тексте программы всегда должна быть главная подпрограмма, начинающаяся с

(defun C:conus ( / ……..

это имя и надо указывать при вызове.

В большинстве случаев имя программы совпадает с именем главной подпрограммы. В большинстве случаев при нормальной загрузке программы в командной строке появляется информация об этом и имя вызываемой (главной) подпрограммы.
В падающее текстовое меню можно вложить раскрывающееся к пукту подменю. Так при наведении на пункт “ФОРМАТКА ЧЕРТЕЖА” появятся два пункта подменю – “СПЕЦИФИКАЦИЯ” и “МАТЕРИАЛ”. Сделать это просто. Обратите внимание на два знака
 ->
<-

 и Все.

[->Форматка чертежа]
[Спецификация]^C^C^P(progn(command “_INSERT” “sp_indraw” pause 1 1 0)(command “_EXPLODE” “last”))
[<-Материал]^C^C^P(if(= C:mtrl nil)(load “mtrl”));mtrl;

[Переходник]^C^C^P(if(= C:transit nil)(load “transition”));transit;
[Шероховатость]^C^C^P(if(= C:facing nil)(load “facing”));facing;

МЕНЮ ПАНЕЛИ (TOOLBARS)

Так называемое меню – TOOLBARS, позволяет запускать команды АвтоКАДа, указывая на графические элементы (кнопочки), которые группируются в панели и могут находиться в любом месте экрана.
В файле меню раздел панелей начинается следующим образом:

***TOOLBARS
название раздела

**ОБЩАЯ
имя панели

[_Toolbar(“Общая”, _Floating, _Show, 0, 2, 1)]
параметры панели “ОБЩАЯ” (плавающая, видна на экране, координаты). Параметры можно написать здесь произвольные, а установить их уже на экране.

[_Flyout(“PG”, PG16.bmp, PG24.bmp, _OtherIcon, PG.TB_PG_MAIN)]

_Flyout – указывает, что иконка вызывает другую, вложенную, панель
“PG” – строка, которая будет высвечиваться, как помошь или пояснение, при наведении мышки на эту иконку.
“PG16.bmp” – файл самой иконки размером 16х16 или 24х24 для разных разрешений
Далее сказано, что панель “ОБЩАЯ” включает в себя другую панель, находящуюся в файле меню PG (PG.MNS) и имеющую имя “TB_PG_MAIN”.

Далее могут идти другие панели

[_Flyout(“Станд инструменты”, ncopy16.bmp, ncopy24.bmp, _OtherIcon, PG.TB_2)]

или отдельные кнопки, вызывающие программы на исполнение

[_Button(“Дата…”, “wndate.bmp”, “wndate.bmp”)]^C^C^P(if (= C:wndate nil) (load “wndate”));wndate;

структура, надеюсь понятна из всего выше сказанного.

Сама панель TB_PG_MAIN” выглядит так

**TB_PG_MAIN
[_Toolbar(“Главная”, _Top, _Show, 1, 1, 1)]
[_Flyout(“Текстовые операции”, dtext.bmp, dtext.bmp, _OtherIcon, PG.TB_TEKCT)]
[_Button(“Дата…”, “wndate.bmp”, “wndate.bmp”)]^C^C^P(if (= C:wndate nil) (load “wndate”));wndate;
[–]
[_Flyout(“Радиус/Фаска”, 0c.bmp, 0c.bmp, _OtherIcon, PG.TB_PG_RADFAS)]
[_Button(“Разрез”, “ICON_Slit.bmp”, “ICON_Slit.bmp”)]^C^C^P(if (= C:slit nil)(load “slit”));slit;

Здесь есть и отдельные кнопки для запуска программ и кнопки вложенных панелей.

Надеюсь все понятно !

ИКОННОЕ МЕНЮ ВЫБОРА (IMAGE)
Используется все реже и реже самой системой. На замену приходит “Интрументальная Палитра (Панель)” (Tool Palettes).
Иногда необходимо или более удобно и наглядно выполнить какой-то выбор типовых элементов (болты, гайки, шайбы) по рисунку или схеме. Средства АвтоКАДа позволяю включить такой выбор в меню. Для этого необходимо создать слайды с нужным изображением, сгруппировать их в библиотеку (для удобства), но есть одно замечание : имена файлов слайдов должны быть в формате 8.3 и только английскими буквами, иначе библиотека не создается!
(Спасибо за замечание kpblc)
А затем надо сделать следующее :

Включить в текстовый раздел меню (POP или TOOLBARS) подобную строку

[Фланцы, штуцера …]^C^C^P$I=PG.lap1 $i=PG.*

где после названия пункта меню, управляющих символов ^C^C^P – идет указание на вызов меню типа IMAGE из файла PG (PG.MNS) с именем LAP1. Затем $i=PG.* – вызывает окно со слайдами.

В разделе IMAGE надо описать это меню.

***IMAGE
имя раздела

**LAP1
имя меню

[Select ProType]
имя заголовка окна со слайдами

[izdelie(flange)](progn(load “izdelie”)(izdelie 1))
[izdelie(flange-1)](progn(load “izdelie”)(izdelie 2))
[izdelie(nippel)](progn(load “izdelie”)(izdelie 3))
[izdelie(shtucer)](progn(load “izdelie”)(izdelie 4))

набор слайдов выбора.

[izdelie(flange)] – имя библиотеки со слайдами (имя слайда в библиотеке)
или просто – укажите имя слайда, но лучше слайды меню объединить в библиотеку – меньше файлов.

(progn(load “izdelie”)(izdelie 1)) – описанная ранее процедура вызова программы (здесь программа имеет свой аргумент “1”, но это именно для этой проги).

TOOL PALETTES. ИНСТРУМЕНТАЛЬНАЯ ПАЛИТРА (ПАНЕЛЬ).
Палитры пришли на смену меню выбора изображений, создание которого было более трудоемко, чем палитры.
Несколько страниц сайта посвящены их созданию, сохранению и экспорту, размещению на них блоков, отдельных программ и стандартных команд. Так же вы узнаете как на панели можно (и нужно) организовать несколько вкладок (групп).

От Genchik