Как программно управлять падающим меню в послених (2010 и выше) версиях Автокада - Страница 2
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как программно управлять падающим меню в послених (2010 и выше) версиях Автокада

Как программно управлять падающим меню в послених (2010 и выше) версиях Автокада

Ответ
Поиск в этой теме
Непрочитано 16.04.2013, 17:40
Как программно управлять падающим меню в послених (2010 и выше) версиях Автокада
480725
 
Москва
Регистрация: 06.10.2007
Сообщений: 132

Начиная с 2010 Автокада не работают конструкции вида (Menucmd "pN=xxx") и (Menucmd "pN=*") для N отличного от 0. Судя по несколько изменившемуся описаннию функции Menucmd в Help это может быть не ошибкой, а сознательным изменением, но явно недопустимость приведенных конструкций не объявлена. Просьба подсказать какой-то другой способ заменить и / или заставить раскрыться раздел падающего меню из программы на LISP.
Просмотров: 6395
 
Непрочитано 24.04.2013, 18:25
#21
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Цитата:
Сообщение от 480725 Посмотреть сообщение
1)Ширина экранного меню не позволяет полноценно разместить пункты падающего меню.
Экранное меню.... Этот вариант даже рассматривать нельзя/не хочется. - Некрофилия.
Делал такие телодвижения в Автокаде 10-12 (ДОС).
ИМХО - получал неплохой результат - динамически контекстно изменяющееся зоны меню,
что обогащало скромный интерфейс ДОС-Автокада, создавались фактически динамические toolbar

Но сейчас столько средств: toolbar, палитры, диалоговые окна (DCL or COM-сервера) и т.д.!
В конечном итоге - Используйте свою программу не под 2010, а под другим, например, Автокадом 2013
Сделайте скрин этого POP-пунктика этой секретной программы.
Что там такое вызывается, что так облом нажать на заголовок падающего меню для разворота в конечном итоге?
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Автор темы   Непрочитано 25.04.2013, 11:52
#22
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 132


Переписать не могу, программа большая никаких концов сейчас нет - разработчик уволился 3 года назад. Переставлять Автокад не имею право. Закрыть проблему неменюшными средствами - во первых можно только при наличии исходного меню, во вторых - с большими ограничениями. Способы альтернативного решения известны, но гораздо изящнее заставить заработать меню. Сам я из-за неладов с английским с объектной моделью пользуюсь только в безвыходных ситуациях, как правило при помощи участников данного форума, спасибо им. Вот и сейчас обращаюсь к знатокам с прямым вопросом: Есть ли Vla (Vlax) функции, при помощи которых можно заставить "выпасть" раздел падающего меню или нет. Если авторитетный человек скажет, что таких функций нет - вопрос исчерпан. Если функции есть - проверю, как работет в А2010 и при удаче - решу свою проблему. Она не частная: Здесь на форуме сообщалось что в А2014 все аналогично.
480725 вне форума  
 
Непрочитано 25.04.2013, 13:11
#23
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


По-моему, через ActiveX такое впрямую не реализовать:
Код:
[Выделить все]
(vlax-dump-Object (vla-item (vla-get-MenuBar (vlax-get-acad-object)) 0) t)
; IAcadPopupMenu: An AutoCAD cascading menu
; Property values:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 0000000140d28e28>
;   Count (RO) = 32
;   Name = "&File"
;   NameNoMnemonic (RO) = "File"
;   OnMenuBar (RO) = -1
;   Parent (RO) = #<VLA-OBJECT IAcadPopupMenus 0000000038711e78>
;   ShortcutMenu (RO) = 0
;   TagString (RO) = "ID_MnFile"
; Methods supported:
;   AddMenuItem (3)
;   AddSeparator (1)
;   AddSubMenu (2)
;   InsertInMenuBar (1)
;   Item (1)
;   RemoveFromMenuBar ()
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.04.2013, 16:49
#24
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 132


Во первых - что делает функция, которую ты привел? Если это Лисп то все строки кроме первой - комментарии?
Во вторых - что значит впрямую нельзя - как-то значит все-таки можно?
Мне, чтобы успокоться - нужен или ответ как можно с минимальным комментарием на русском, или ответ, что такой возможности нет. Я поверю.
480725 вне форума  
 
Непрочитано 25.04.2013, 17:52
#25
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от 480725 Посмотреть сообщение
Мне, чтобы успокоться - нужен или ответ как можно с минимальным комментарием на русском, или ответ, что такой возможности нет. Я поверю.
Очень похоже на вопрос "дай телефон позвонить..." и дальше "а если найду?"
На самом деле, я сегодня тоже глянул на показ выпадающего меню через объектную модель из лиспа. Действительно возможности отобразить меню нет. По поводу обходных маршрутов, есть конечно, но это действительно обходные, которые будут по разному работать на всех версиях. Например, можно попробовать вызвать из VLA- методов ком строку на выполнение (Menucmd "pN=xxx") или запустить VBA код или строку на показ или вообще написать на .NET или ARX программу, для работы из лиспа, позволяющую показать меню. Способы действительно есть, но это не значит, что в Лиспе есть готовые решения, дублирующие стандартные (Menucmd "pN=xxx")...

Цитата:
Во первых - что делает функция, которую ты привел? Если это Лисп то все строки кроме первой - комментарии?
да, в приведенном коде работает только одна строка, все остальное - ответ акада на эту строку, причем ответ акад делает сразу комментарием...

ps. встроенной функции, кроме menucmd нет, создавать ее или пытаться вызвать из другого места я не буду и вам не советую. Лучше переписать функционал вашей программы заново. Например, нет проблем прочесть любое выпадающее меню, посмотреть команду которая там есть и запустить ее. Отображать для запуска раскрытое выпадающее меню бессмысленно. Если есть желание продолжить, рекомендую описать задачу более полно, для чего вам показ меню. Может действительно можно обойти вашу проблему...

Извиняюсь, действительно в акаде 2014 ру работает!
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/

Последний раз редактировалось Елпанов Евгений, 25.04.2013 в 18:08.
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 25.04.2013, 18:58
#26
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 132


Спасибо. Ответ исчерпывающий. Что до формы моего вопроса в предыдущем посте - просто я так утрированно выразил свой интерес к конкретному аспекту проблемы, и равную удовлетворенность как отрицательным так и положительным ответом. Подменить функцию menucmd так, чтобы она чтобы своими средствама продолжала работать в тех режимах, которые допускаются некорректным автокадом и, например, простейшим диалоговым окном со списком заголовков пунктов меню - в остальных случаях вполне реально, хотя проблемы тут есть. Для моего случая этот вариант нельзя сбрасывать..
480725 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как программно управлять падающим меню в послених (2010 и выше) версиях Автокада



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
зависание меню свойств єлементов в AutoCad 2010 rus x86 при работе в Windows 7 micropyhcher Баги и пожелания в Autodesk 3 21.11.2009 11:05
Попасть в слой. Vova AutoCAD 106 10.03.2006 04:36