Тема: Как програмно создать и сохранить свой тулбар в автокаде 2006 и выше?

Полазил по форуму (поиск по прежнему не работает), несколько раз поднимались аналогичные вопросы, например:

но ответа нет.
Может быть кто-то нашел решение, чтобы тулбар  сохранялся после перезапуска автокада?

Re: Как програмно создать и сохранить свой тулбар в автокаде 2006 и выше?

> Anatoly
Ответ есть - этого сделать нельзя. Только если воспользоваться _CUI и сделать тулбар вручную.

Re: Как програмно создать и сохранить свой тулбар в автокаде 2006 и выше?

Сгенерировать свой mnu-файл и конвертировать его в cui-файл. Это считается программным решением?

//
***MENUGROUP=ANATOLY_EDIT
//- - - - - - - - -
//
//  Инструментальная панель
//
***TOOLBARS
**AE_TOOLBAR1
ID_AE_Toolbar1_0 [_Toolbar("AE_Toolbar1", _Top, _Show, 1, 0, 1)]
ID_PartialOp_0 [_Button("Anatoly", "AE_Button_Icon.bmp", "AE_Button_Icon.bmp")]^C^C_.alge
//
// Подсказка
//
***HELPSTRINGS
ID_PARTIALOP_0 [Start Anatoly Edit]
//
//      End of ANATOLY menu file
//

Или Александр Ривилис как раз этот вариант и имел ввиду?

Re: Как програмно создать и сохранить свой тулбар в автокаде 2006 и выше?

Правильно ли я понял?:
сделать .mnu файл (вручную), затем в программе
filedia=0
SendCommand-> menuload -> полноеИмяФайла.mnu

Re: Как програмно создать и сохранить свой тулбар в автокаде 2006 и выше?

mnu-файл - да. SendCommand - нет. Загрузить меню можно и без этого.

Re: Как програмно создать и сохранить свой тулбар в автокаде 2006 и выше?

> Кулик Алексей aka kpblc
Напиши, пожалуйста, как загрузить, Lisp'ом?

Re: Как програмно создать и сохранить свой тулбар в автокаде 2006 и выше?

Ну я использую из ruCAD'a подход. Код лисповой выглядит примерно так:

(defun loc:menu-load-partial
         (menu_file_name group_name / counter range_pop_menu loc:get-pop-menu-range _ru-menu-get-max-pulldown-number _kpblc-menucmd)
         ;|
*    Загрузка фрагментарного меню.
*    Параметры вызова:
*    menu-file-name    - имя файла меню
*    group-name    - имя группы, которую загружать
*    Примеры вызова:
(_kpblc-menu-load-partial *kpblc-menu-file* *kpblc-menu-group*)
|;  ;; Локальные функции
    ;; Определение номера последнего падающего меню.
    (defun _ru-menu-get-max-pulldown-number (/ loc_counter)
      (setq loc_counter 1)
      (while (menucmd (strcat "P" (itoa loc_counter) ".1=?"))
        (setq loc_counter (1+ loc_counter))
        ) ;_ end of while
      (1- loc_counter)
      ) ;_ end of defun
    (defun _kpblc-menucmd (number-pop-menu)
      (menucmd (strcat "P"
                       (itoa (1+ (_ru-menu-get-max-pulldown-number)))
                       "=+"
                       group_name
                       (strcat ".POP" (rtos number-pop-menu 2 1))
                       ) ;_ end of strcat
               ) ;_ end of menucmd
      ) ;_ end of defun
    ;; Определение количества "падающих" меню в файле mnu
    (defun loc:get-pop-menu-range (file-name / handle res)
      (if (findfile file-name)
        (progn
          (setq handle (open file-name "r"))
          (while (setq str (read-line handle))
            (setq lst_str (cons str lst_str))
            ) ;_ end of while
          (close handle)
          (apply 'max
                 (vl-remove-if
                   '(lambda (b) (>= b 500))
                   (mapcar '(lambda (a) (atoi (substr a 7)))
                           (vl-remove-if-not
                             '(lambda (x) (wcmatch (strcase x) "`*`*`*POP*"))
                             lst_str
                             ) ;_ end of vl-remove-if-not
                           ) ;_ end of mapcar
                   ) ;_ end of vl-remove-if
                 ) ;_ end of apply
          ) ;_ end of progn
        ) ;_ end of if
      ) ;_ end of DEFUN
    ;; Конец локальных функций
    (setq counter 1
          menu_file_name
           (strcat (loc:path-and-splash (vl-filename-directory menu_file_name))
                   (vl-filename-base menu_file_name)
                   ".mnu"
                   ) ;_ end of strcat
          range_pop_menu
           (loc:get-pop-menu-range menu_file_name)
          ) ;_ end of setq
    (if (not (menugroup group_name))
      (progn
        (if (findfile menu_file_name)
          (progn
            (vla-load (vla-get-menugroups *kpblc-acad-object*)
                      (findfile menu_file_name)
                      ) ;_ end of vla-load
            (repeat range_pop_menu
              (_kpblc-menucmd counter)
              (setq counter (1+ counter))
              ) ;_ end of repeat
            (princ
              (strcat "\nМеню " menu_file_name " успешно загружено.")
              ) ;_ end of princ
            ) ;_ end of progn
          (progn
            (alert (strcat "Не могу найти "
                           menu_file_name
                           ) ;_ end of strcat
                   ) ;_ end of alert
            ) ;_ end of progn
          ) ;_ end of if
        ) ;_ end of progn
      (princ (strcat "\nМеню " menu_file_name ".mnu уже загружено"))
      ) ;_ end of if
    (princ)
    ) ;_ end of defun

Re: Как програмно создать и сохранить свой тулбар в автокаде 2006 и выше?

Спасибо всем, пойду писать код.