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

хотел написать макрос на клаву не получаетса (я не програмер)... например при выборе команды _pline появляетса toolbar с привязками типа ('cal;(end+end)/2;), но при выходе из команды етот toolbar закрываетса.
Подскажите.

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

Схема такая (через Active-X):
1. Читаешь корневой объект ACAD
2. Из него через MenuGroups добираешься до нужного тулбара
3. Через свойство Visible данного тулбара управляешь его появлением на экране.
Если надо пример - отпиши

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

) Спосибо за уделенное внимание!
1.  Пример конечно надо (желательно с пояснениями)
2.  Active-X-----что ето. (я конечно слышал такое слово...)
3.  Как сделать, допустим если FILEDIA забита на кнопку,
    FILEDIA=1 на кнопке одна икона а =0 другая
4.  Надо написать скрипт где допустим после команды LINE
   (где команда завершаетса Close или Enter), автоматически
    включалась допустим Insert.
)))) если я жирно попросил, то ответьте хотябы на первый...)
С уважением!

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

На первый и третий... Посмотри темку https://www.caduser.ru/forum/topic4954.html Там картинки в тулбаре меняются, но принцип "как добраться до тулбара" должен быть понятен.
На второй... Сей код написан с использованием ActiveX.
на четвертый... Проще написать маленький Лисп (имхо).

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

Пример

(vl-load-com)
(defun tbtoggle( / tb v)
  (setq tb
    (vla-item (vla-get-toolbars (vla-item (vla-get-menugroups (vlax-get-acad-object))
                                0);-первая группа меню
              )
    0);-первый тоолбар
Про кнопки-читай литературу (В.Свет)
  )
  (setq v (vla-get-visible tb))
  (if (= v :vlax-true)
    (vla-put-visible tb :vlax-false)
    (vla-put-visible tb :vlax-true)
  ); if
); tbtoggle

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

Комментарий к программке:
1. Загрузить через (load "имя_файла")
2. Запустить - (tbtoggle)
3. Должно работать в ACAD 2000 и выше.
Программа гасит/включает первый толлбар (ТБ) в первой группе меню. Обработки ошибок нет. Если нужно вкл./откл. не первый ТБ - то измени 0 на другое число (есть и другие варианты).
Подробнее о программировании ActiveX - читай Полещука и Help.

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

Наверно более правильным будет обращение к тулбару не по индексу, а по имени. Во всяком случае, это ближе к человеческой логике. Тем более, vla-item допускает такой вызов.

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

> VK
экономил место

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

Добрый день!
Данная тема очень кстати!
Огромная просьба сведущим внести в пример zhuravsky
дополнение или изменение, позволяющее таки обращаться
к тулбару не по индексу, а по имени.
Напряг, знаете ли, с ActiveX.
Спасибо заранее.

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

По имени примерно так:

(defun tbtoggle    (mnname tbname / mn tb)
  (if (not (vl-catch-all-error-p
         (setq mn (vl-catch-all-apply
            'vla-item
            (list (vla-get-menugroups (vlax-get-acad-object)) mnname)
              ) ;_ end of vl-catch-all-apply
         ) ;_ end of setq
       ) ;_ end of vl-catch-all-error-p
      ) ;_ end of not
    (if    (not (vl-catch-all-error-p
           (setq tb    (vl-catch-all-apply
              'vla-item
              (list (vla-get-toolbars mn) tbname)
            ) ;_ end of vl-catch-all-apply
           ) ;_ end of setq
         ) ;_ end of vl-catch-all-error-p
    ) ;_ end of not
      (progn
    (vla-put-visible
      tb
      (if (= (vla-get-visible tb) :vlax-true)
        :vlax-false
        :vlax-true
      ) ;_ end of if
    ) ;_ end of vla-put-visible
    t
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of if
) ;_ end of defun
;;; (tbtoggle "acad" "insert")

Последняя закоментареная строка - пример вызова. При успешной сработке возвращает - T, иначе - NIL.

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

Спасибо, spook!
С этим более-менее разобрался.
А позвольте ещё наводящий вопросик -
как написать на ActiveX выражение:
"Если экранное меню уже активно, то nil,
иначе
(vla-put-DisplayScreenMenu (vla-get-Display (vla-get-Preferences (vlax-get-acad-object))) :vlax-true),
т.е. активизировать".
А то приходится при запуске ACAD сначало ... :vlax-false),
а затем ... :vlax-true), иначе получаются какие-то странности.

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

> Kosarev
Раз есть свойство, то можно его проверить - экранным меню манипулировать не приходилось, но должно быть так:

(vla-get-DisplayScreenMenu (vla-get-Display (vla-get-Preferences (vlax-get-acad-object))))

:vlax-false - если нет
:vlax-true - если да
Без роверки

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

Ещё раз спасибо,spook !
Всё нормально отработало.
Будь здоров.

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

А можно не выпендриваться, а поставить всего две строки в лисп:
(command "-toolbar" "Имя толбара" "H") - погасить
(command "-toolbar" "Имя толбара" "S") - показать