Тема: Как добавить свое выпадающее меню к стандартному Автокад?

Я создал файл a1.mnu, его содержимое взято с http://www.cadhlp.kulichki.com/a-menu.htm (первый пример). Изменил его следующим образом:

***POP1
**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
[--]

Это точное содержание файла. Затем гружу его командой menuload, оно вроде как грузится, но ни чего к главному выпадающему меню не добавляется. Как изменить содержимое файла так, чтобы оно появлялось последним в выпадающем меню?

Re: Как добавить свое выпадающее меню к стандартному Автокад?

1-Хорощо бы еще в начале дать строчку
***MENUGROUP=<ИМЯ_МЕНЮ>
2-Тк в стандартном меню есть "DRAW" лучше изменить имя своего на другое, просто чтоб самому не путаться
3-В окне загрузке есть вкладка MENU BAR. Надо откр ее в выпадающем списке MENU GROUP Выбрать меню со своим именем (см п.1) Ниже в окне МЕНЮ появится список возможных выпадающих меню "DRAW", выделить эту строку и нажать INSERT
Меню вставиться над той строкой, которая выделена в правом окне, если хочешь вставить последним придется сначала вставить над HELP, потом удалить HELP и вставить опять из ACAD-menu , стоя в правом окне на своем меню DRAW.
Может есть и способ проще :(...

Re: Как добавить свое выпадающее меню к стандартному Автокад?

Еще
Правильность загрузки меню покажет налие файлов a1.mnc, a1.mnr. Само меню a1.mnu должно находиться в папке доступной для АКАДа, те прописаны пути  в File Support

Re: Как добавить свое выпадающее меню к стандартному Автокад?

Да Вы правы, так сделать можно.
А теперь вопрос на засыпку! Как все это сделать из командной строки, пусть даже ЛИСПОВОЙ командой?

Re: Как добавить свое выпадающее меню к стандартному Автокад?

Ведь, если мы грузим из командной строки следующим образом (command "_menuload" "a1.mnu"), то сами пункты выпадающего меню не появятся.

Re: Как добавить свое выпадающее меню к стандартному Автокад?

Ой, чуйствую надо это все сделать именно из лисп-проги!?
После компиляции меню надо использовать команду MENUCMD
Такой подход мне не нравится, но это ИМХО, конечно, Может сделать выбор через диалоговое окно?

Re: Как добавить свое выпадающее меню к стандартному Автокад?

Да именно из ЛИСП проги, но каким образом? И что за компиляция меню?

Re: Как добавить свое выпадающее меню к стандартному Автокад?

При команде MENULOAD происходит компиляция- образуются файлы с расширением mnr, mnc. Затем команда
(MENUCMD "G<ИМЯ_ГРУППЫ_МЕНЮ>.POP1") должна вывести указанное падающее меню на экран

Re: Как добавить свое выпадающее меню к стандартному Автокад?

(menucmd "p14=+<имя_menu>.pop1") - так можно добавить пункт на 14 место

Re: Как добавить свое выпадающее меню к стандартному Автокад?

(menucmd "p14=*") откроет ?14 пад. меню

Re: Как добавить свое выпадающее меню к стандартному Автокад?

Спасибо за столь исчерпывающюю консультацию.
Но новые ответы пораждают вопросы, вот например такой. Программа имеет следующий вид:

(defun c:pr1 ()
(command "_menuload" "a1.mnu")
(menucmd  "mymnu.pop1")
)

Файл а1 точно не загружен. Но в меню нового пункта не добавляется. Почему?

Re: Как добавить свое выпадающее меню к стандартному Автокад?

Ура победа, большое спасибо.

Re: Как добавить свое выпадающее меню к стандартному Автокад?

Удобнее что бы имя меню-групп и имя файла меню были одинаковы
Большой пожалуйста :)

Re: Как добавить свое выпадающее меню к стандартному Автокад?

Продолжаем разговор. Вопрос такой: как определить номер последнего меню выпадающего меню?

Re: Как добавить свое выпадающее меню к стандартному Автокад?

А по названию меню его номер? А по номеру его название?

Re: Как добавить свое выпадающее меню к стандартному Автокад?

Фрагм. файла *.mnl из програмы ACADVar
небезызвестного Лёхи.

; функция вставляет падающее меню ACADVar в ряд
; на третье справа место.
(defun svr_init_placemenu (/ cnt)  (setq cnt 1)
  (while (< cnt 24)
    (if (menucmd (strcat "P" (itoa cnt) ".1=?"))
      (setq cnt (1+ cnt))
      (progn
        (if (> cnt 2)
          (setq cnt (- cnt 2))
          (setq cnt 2)
        );if
        (menucmd (strcat "P" (itoa cnt) "=+ACADVar.pop1"))
        (setq cnt 25)
      );progn
    );if
  );while
);defun

Re: Как добавить свое выпадающее меню к стандартному Автокад?

> <==>
На самом деле это из EXPRESS из acetmain.mnl

; ------------  PLACE THE EXPRESS PULL-DOWN FUNCTION -------------
;  This function places the Express pull-down to the left of the
;  second to last pull-down on the acad menu.
; ----------------------------------------------------------------
(defun acet-init-placemenu (/ CNT)
  (setq CNT 1)
  (while (< CNT 24)
    (if (menucmd (strcat "P" (itoa CNT) ".1=?"))
      (setq CNT (1+ CNT))
      (progn
        (if (> CNT 2)
          (setq CNT (- CNT 2))
          (setq CNT 2)
        )
        (menucmd (strcat "p" (itoa CNT) "=+EXPRESS.pop1"))
        (setq CNT 25)
      )
    )
  )
)

Re: Как добавить свое выпадающее меню к стандартному Автокад?

Знатоки, подскажите пожалуйста.
У меня меню загружается только по команде из ACAD
Tools->Customize->Menus...->Load
А я хочу, чтобы все произошло автоматически.
Для этого создал по примеру выше файл abs.mnl.
Но появлается только Toolbar.
Мое меню показывается только по команде Insert.
Вот тексты моих файлов abs.mnu

***MENUGROUP=ABS
***POP1
**ABS
ID_ABS               [ABS]
ID_Line_0      [&Line]^C^C_line
ID_Ray_0       [&Ray]^C^C_ray
ID_Construction_Line_0 [Cons&truction Line]^C^C_xline
ID_Multiline_0 [&Multiline]^C^C_mline
               [--]
ID_Polyline_0  [&Polyline]^C^C_pline
ID_3D_Polyline_0 [&3D Polyline]^C^C_3dpoly
ID_Polygon_0   [Pol&ygon]^C^C_polygon
ID_Rectangle_0 [Rectan&gle]^C^C_rectang
               [--]
[Abs]^C^C^P(if (= C:Abs nil) (load "Abs")); Abs
***TOOLBARS
**TB_MYTOOLBAR
ID_MyToolbar [_Toolbar("My Toolbar",_Floating, _Show, 0, 1, 1)]
ID_Ddis [_Button("DDIS", abs1.bmp, abs1.bmp)]^C^Cddis
ID_Ddis2 [_Button("DDIS2", abs2.bmp, abs2.bmp)]^C^C_line

А это файл abs.mnl

(defun PlaceAbsMenu( / n )
      (progn
       (setq n 1)
       (while (< n 24)
        (if (menucmd (strcat "P" (itoa n) ".1=?"))
            (setq n (+ n 1))
            (progn
             (if (> n 3)
                 (setq n (- n 2))
                 (setq n 3)
             );if
             (menucmd (strcat "P" (itoa n) "=+Abs.pop1"))
             (setq n 25)
            );progn
        );if
       );while
      );progn
);defun acet-init-placemenu

Re: Как добавить свое выпадающее меню к стандартному Автокад?

Файл abs.mnl я сделал, как обезъяна, не понимая до конца смысл или команды menucmd.
Возможно здесь ошибка.
Но Acad ничего не говорит.
А может мой файл и не выполняется вовсе?