|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как программно управлять падающим меню в послених (2010 и выше) версиях Автокада
Москва
Регистрация: 06.10.2007
Сообщений: 132
|
||
Просмотров: 6350
|
|
||||
Регистрация: 06.10.2007
Москва
Сообщений: 132
|
Цитата:
В программе стояло (menucmd "P1=*"), т.к. (menucmd "P0=*") гарантированно закрывала ту часть чертежа, к которой относилось меню. |
|||
![]() |
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,834
![]() |
Цитата:
Воспользуйтесь MENUBAR=1 "В строке меню можно отобразить раскрывающиеся меню в качестве альтернативы ленте или для совместного с ней использования." - HELP Мы такое делали для собственного меню. Если интересно, могу показать пример
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... Последний раз редактировалось Alan, 20.04.2013 в 16:30. |
|||
![]() |
|
||||
Регистрация: 06.10.2007
Москва
Сообщений: 132
|
Ленту в своем меню отключаю. MENUBAR=1, естественно устанвливаю (menucmd "p1=xxx") работает, т.е. разделы меню подменяются и добавляются, а вот заставить их раскрываься по команде (menucmd "p1=*") не получается. От А2000 до A2009 все нормально, а дальше (A2010, A2011)- глухо не только старая программа, но и все экперименты пробуксовывают. Если у вас именно (menucmd "p1=*") работает (цифра может быть любая, главное, чтобы не 0, т.к. с P0=* проблем нет) то буду очень благодарен за отправку меню и фрагмента программы. Можно максимально сократить, но только предварительно убедиться, что продолжает работать.
|
|||
![]() |
|
||||
[IMG]http://img845.**********.us/img845/3387/21042013191718.png[/IMG]
Что-то не так?
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Подтверждаю ошибку:
В AutoCAD 2014 en - работает В AutoCAD 2014 ru - не работает В AutoCAD 2013 en - не работает В AutoCAD 2013 ru - не работает
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ |
||||
![]() |
|
||||
Регистрация: 06.10.2007
Москва
Сообщений: 132
|
Вынужден признать, что в А2011 рус - работает. Но в А2010 не работает. Про А2013 и А2014 Евгений написал - тоже дела не ахти. Так есть какие-то возможности решить проблему через VLX или VLA?
Последний раз редактировалось 480725, 23.04.2013 в 22:52. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
AutoCAD 2013 x64 + SP1.1; независимо от локализации - работает.
P.S. Интересна конечная цель таких шагов...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
VLX - это не объектная модель, а формат компиляции лисповых исходников.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,834
![]() |
Цитата:
Извини, был сильно занят, не отвечал. А чем не устраивает "разворачивание" какой-то стандартной зоны (или другой?) падающего меню с возвратом после отработки строки меню её назад? ![]() Вот как делали мы... Вызов: (menucmd "P5=ПАРКС.POP1-SST")(menucmd "P5=*") соответствующий кусок меню ПАРКС.mnu Код:
Вернули назад стандартную зону: (menucmd "P5=POP5") Показали, что стандартные тоже можно ронять. (menucmd "P5=*") Результат - POP5_Standart.jpg
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
![]() |
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,834
![]() |
Да, в 2010 не работает ни в какой зоне
![]() Придётся отнести это к "традиционному" багу разработчиков Autodesk в Автокаде... ![]() А что ты пытаешься там уронить? М.б. можно перейти от указания строки падающего меню к чему-то другому, например, _toolbar? В некоторых китайских Автокадах с использованием меню вообще большие проблемы, я перешел на _toolbar
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
![]() |
|
||||
Регистрация: 06.10.2007
Москва
Сообщений: 132
|
Есть откомпилированная программа без исходника. Есть меню с исходником. Я переопределяю (menucmd "p1=*") так,
чтобы для данного конкретного заголовка выполнялся оператор (menucmd"s=заголовок"). Это сделано и работает. НО. 1)Ширина экранного меню не позволяет полноценно разместить пункты падающего меню. 2)Сделать такой фокус можно только имея исходное меню. Не исключено, что в какой-то другой программе исходного меню не будет, тогда в подобной ситуации даже понять в чем причина сбоя не удастся. Если есть средства заставить падать падающее меню через объектную модель, то можно так переопределить menucmd, что она всегда будет работать. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Первое движение души - переписать...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,834
![]() |
Цитата:
Делал такие телодвижения в Автокаде 10-12 (ДОС). ИМХО - получал неплохой результат - динамически контекстно изменяющееся зоны меню, что обогащало скромный интерфейс ДОС-Автокада, создавались фактически динамические toolbar Но сейчас столько средств: toolbar, палитры, диалоговые окна (DCL or COM-сервера) и т.д.! В конечном итоге - Используйте свою программу не под 2010, а под другим, например, Автокадом 2013 Сделайте скрин этого POP-пунктика этой секретной программы. Что там такое вызывается, что так облом нажать на заголовок падающего меню для разворота в конечном итоге?
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
![]() |
|
||||
Регистрация: 06.10.2007
Москва
Сообщений: 132
|
Переписать не могу, программа большая никаких концов сейчас нет - разработчик уволился 3 года назад. Переставлять Автокад не имею право. Закрыть проблему неменюшными средствами - во первых можно только при наличии исходного меню, во вторых - с большими ограничениями. Способы альтернативного решения известны, но гораздо изящнее заставить заработать меню. Сам я из-за неладов с английским с объектной моделью пользуюсь только в безвыходных ситуациях, как правило при помощи участников данного форума, спасибо им. Вот и сейчас обращаюсь к знатокам с прямым вопросом: Есть ли Vla (Vlax) функции, при помощи которых можно заставить "выпасть" раздел падающего меню или нет. Если авторитетный человек скажет, что таких функций нет - вопрос исчерпан. Если функции есть - проверю, как работет в А2010 и при удаче - решу свою проблему. Она не частная: Здесь на форуме сообщалось что в А2014 все аналогично.
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
По-моему, через ActiveX такое впрямую не реализовать:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 06.10.2007
Москва
Сообщений: 132
|
Во первых - что делает функция, которую ты привел? Если это Лисп то все строки кроме первой - комментарии?
Во вторых - что значит впрямую нельзя - как-то значит все-таки можно? Мне, чтобы успокоться - нужен или ответ как можно с минимальным комментарием на русском, или ответ, что такой возможности нет. Я поверю. |
|||
![]() |
|
||||
Цитата:
![]() На самом деле, я сегодня тоже глянул на показ выпадающего меню через объектную модель из лиспа. Действительно возможности отобразить меню нет. По поводу обходных маршрутов, есть конечно, но это действительно обходные, которые будут по разному работать на всех версиях. Например, можно попробовать вызвать из VLA- методов ком строку на выполнение (Menucmd "pN=xxx") или запустить VBA код или строку на показ или вообще написать на .NET или ARX программу, для работы из лиспа, позволяющую показать меню. Способы действительно есть, но это не значит, что в Лиспе есть готовые решения, дублирующие стандартные (Menucmd "pN=xxx")... Цитата:
ps. встроенной функции, кроме menucmd нет, создавать ее или пытаться вызвать из другого места я не буду и вам не советую. Лучше переписать функционал вашей программы заново. Например, нет проблем прочесть любое выпадающее меню, посмотреть команду которая там есть и запустить ее. Отображать для запуска раскрытое выпадающее меню бессмысленно. Если есть желание продолжить, рекомендую описать задачу более полно, для чего вам показ меню. Может действительно можно обойти вашу проблему... Извиняюсь, действительно в акаде 2014 ру работает!
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ Последний раз редактировалось Елпанов Евгений, 25.04.2013 в 18:08. |
||||
![]() |
|
||||
Регистрация: 06.10.2007
Москва
Сообщений: 132
|
Спасибо. Ответ исчерпывающий. Что до формы моего вопроса в предыдущем посте - просто я так утрированно выразил свой интерес к конкретному аспекту проблемы, и равную удовлетворенность как отрицательным так и положительным ответом. Подменить функцию menucmd так, чтобы она чтобы своими средствама продолжала работать в тех режимах, которые допускаются некорректным автокадом и, например, простейшим диалоговым окном со списком заголовков пунктов меню - в остальных случаях вполне реально, хотя проблемы тут есть. Для моего случая этот вариант нельзя сбрасывать..
|
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
зависание меню свойств єлементов в AutoCad 2010 rus x86 при работе в Windows 7 | micropyhcher | Баги и пожелания в Autodesk | 3 | 21.11.2009 11:05 |
Попасть в слой. | Vova | AutoCAD | 106 | 10.03.2006 04:36 |