Partial CUI files в AutoCAD 2010-2016

Автор Тема: Partial CUI files в AutoCAD 2010-2016  (Прочитано 13158 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Partial CUI files в AutoCAD 2010-2016
« : 13-05-2016, 18:00:01 »
После создания CUIX-файлов в этом проекте обнаружил две странности в поведении AutoCAD:

1. CUIX создан в AutoCAD 2010. Однако в AutoCAD 2011 и 2012 при нажатии моих кнопок, расположенных на панельке риббонов ничего не происходит. Если эти же кнопки жать на туллбаре, то команды запускаются. В AutoCAD 2013-2016 этой проблемы не наблюдаю.

2. В файле PackageContents.xml определены компоненты, указывающие в какую версию AutoCAD какой CUIX следует загружать (см. строки 69-86). Однако по факту автоматическая загрузка CUIX выполняется только в AutoCAD 2016. В 2013-2015 приходится первый раз подгружать вручную.

На всех AutoCAD установлены все SP.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #1 : 13-05-2016, 19:08:27 »
1) Где-то мы уже обсуждали, что нужно задавать не только SeriesMin, но и SeriesMax
2) Автозагрузчик работает (и соотвественно воспринимает PackageContents.xml), начиная с AutoCAD 2012. Зачем ты его сбиваешь с толку версиями начиная с 2009?
« Последнее редактирование: 13-05-2016, 20:18:40 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #2 : 13-05-2016, 21:13:02 »
1) Где-то мы уже обсуждали, что нужно задавать не только SeriesMin, но и SeriesMax
Из документации:
Цитата: AutoCAD 2016 Help
SeriesMax - Defines the maximum AutoCAD release number the set of components supports.
If you omit this value, any version after that specified by the SeriesMin attribute is allowed.
Т.о. согласно документации SeriesMax можно не указывать.
Автозагрузчик работает (и соотвественно воспринимает PackageContents.xml), начиная с AutoCAD 2012
Я в курсе и это вовсе не означает, что содержимое Bundle-пакетов можно грузить только в 2012 и более новые. Оформление не препятствует возможности загрузки контента в более старые версии.

Зачем ты его сбиваешь с толку версиями начиная с 2009?
Если загрузчик автодеска можно сбить с толку даже этим, то грош ему цена... В документации нет указания на то, что минимально допустимое значение должно быть не менее R18.2. Для версий AutoCAD 2009-2011 у меня свой загрузчик, который делает то, же (ну или почти то же, в нужном мне объёме) что и "родной" загрузчик автокада, анализируя файл PackageContents.xml (поскольку автодеск не предоставляла его для этих версий). Поэтому я и указываю 2009-й.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #3 : 13-05-2016, 21:20:03 »
1) Где-то мы уже обсуждали, что нужно задавать не только SeriesMin, но и SeriesMax) Автозагрузчик работает (и соотвественно воспринимает PackageContents.xml), начиная с AutoCAD 2012. Зачем ты его сбиваешь с толку версиями начиная с 2009?
Какое отношение  SeriesMin, SeriesMax и PackageContents.xml имеет к обозначенному мною поведению хотя бы в AutoCAD 2011?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #4 : 13-05-2016, 22:38:19 »
В AutoCAD 2011 я не проверю - у меня он не установлен. В AutoCAD 2012 лог автозагрузчика:
Извините, вам запрещён просмотр содержимого спойлеров.

Команды запускаются в 2012 и из Ribbon и из Toolbar. Но судя по всему загрузилось меню cadproxy2009.cui, а не cadproxy2010.cuix


Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #5 : 13-05-2016, 23:00:34 »
Исправил то, что связано с версиями:
Код - XML [Выбрать]
  1. <ComponentEntry ModuleName="./Contents/Resources/cadproxy2009.cui"
  2.                AppDescription="CadProxy CUI File">
  3.   <RuntimeRequirements
  4.                         OS="Win32|Win64"
  5.                         Platform="AutoCAD|AutoCAD*"
  6.                         SeriesMin="R17.0"
  7.                         SeriesMax="R17.2"
  8.                         SupportPath="./Contents/Resources/;" />
  9. </ComponentEntry>
  10.  
  11. <ComponentEntry ModuleName="./Contents/Resources/cadproxy2010.cuix"
  12.                  AppDescription="CadProxy CUI File">
  13.     <RuntimeRequirements
  14.                         OS="Win32|Win64"
  15.                         Platform="AutoCAD|AutoCAD*"
  16.                         SeriesMin="R18.0"
  17.                         SupportPath="./Contents/Resources/;" />
  18. </ComponentEntry>
  19.  



Это всё в AutoCAD 2012. В остальных не смотрел.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #6 : 13-05-2016, 23:03:56 »
Команды запускаются в 2012 и из Ribbon и из Toolbar. Но судя по всему загрузилось меню cadproxy2009.cui, а не cadproxy2010.cuix
Под вечер стал менее внимательным. Нужно будет мне подправить значения SeriesMin и SeriesMax следующим образом:
Код - XML [Выбрать]
  1.     <ComponentEntry ModuleName="./Contents/Resources/cadproxy2009.cui"
  2.                    AppDescription="CadProxy CUI File">
  3.       <RuntimeRequirements
  4.                                 OS="Win32|Win64"
  5.                                 Platform="AutoCAD|AutoCAD*"
  6.                                 SeriesMin="R17.2"
  7.                                 SeriesMax="R17.2"
  8.                                 SupportPath="./Contents/Resources/;" />
  9.     </ComponentEntry>
  10.  
  11.     <ComponentEntry ModuleName="./Contents/Resources/cadproxy2010.cuix"
  12.                    AppDescription="CadProxy CUI File">
  13.       <RuntimeRequirements
  14.                                 OS="Win32|Win64"
  15.                                 Platform="AutoCAD|AutoCAD*"
  16.                                 SeriesMin="R18.0"
  17.                                 SupportPath="./Contents/Resources/;" />
  18.     </ComponentEntry>
  19.  

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #7 : 13-05-2016, 23:04:47 »
Да, только что сам заметил, спасибо. К сожалению проверить сейчас не смогу. В понедельник только.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #8 : 13-05-2016, 23:25:17 »
Подключился по RDP к рабочей машинке (не думал, что получится), внёс изменения в конфигурационный файл, удалил MNR-файлы. Выгрузил и повторно загрузил меню, но проблема в 2011 и 2012 так и не пропала.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #9 : 16-05-2016, 16:56:25 »
Внёс в исходный проект ряд изменений:

1. Т.к. AutoCAD 2012 ещё не использовал AcCoreMgd.dll, но уже начал использовать механизм Bundle-пакетов, то для него я создал отдельную сборку (proxy.acad2012.dll) и добавил её в Bundle-пакет, внеся соответствующие изменения и в конфигурационный файл PackageContents.xml (текущую версию настроек можно глянуть здесь).

2. В атрибуты команд добавил информацию, необходимую для открытия соответствующего раздела справки при нажатии F1.

**********************************

Закидываю свой bundle-пакет в каталог "C:\Program Files\Autodesk\ApplicationPlugins\". Для начала, обозначаю проблемы, которые проявляются в AutoCAD 2012 (для последующих версий акада обозначу проблемы после разбора 2012-го):

1. Как я уже писал выше, при нажатии на кнопки моих команд на риббоне ничего не происходит. Даже в консоль AutoCAD ничего не пишется, как будто нажатия просто не происходит.

2. Согласно текущим настройкам конфигурационного файла, сборка будет грузиться по требованию (т.е. при первом вызове любой моей команды). Конфиг-файл знает о том, где лежит справка. Однако если до первого вызова команд жать F1, то вместо моей справки открывается Autodesk Exchange.

3. Кнопки на туллбаре работают - запускают мои команды. Однако после этого корректно справка начинает открываться только если F1 нажата на кнопках риббонов (тех, которые не хотят запускать команды), а при попытке нажатия F1 на кнопках туллбара по прежнему открывается окно Autodesk Exchange.

Показываю видео с обозначенными проблемами:


Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #10 : 16-05-2016, 18:59:10 »
2. Согласно текущим настройкам конфигурационного файла, сборка будет грузиться по требованию (т.е. при первом вызове любой моей команды). Конфиг-файл знает о том, где лежит справка. Однако если до первого вызова команд жать F1, то вместо моей справки открывается Autodesk Exchange.
Так и должно быть. Ведь конфигурация справки, как ты написал:
2. В атрибуты команд добавил информацию, необходимую для открытия соответствующего раздела справки при нажатии F1.
Эта информация (из атрибута [CommandMethod]) будет прочитана и обработана только после того, как сборка будет загружена. А загружается она только после вызова одной из команд. Вывод: хочешь справку - загружай автоматически при загрузке AutoCAD.

По поводу невыполнения команд из Ленты. Похоже, что у тебя остались какие-то хвосты от старого меню. У меня всё работает прекрасно. Кстати, и справка по F1 на тулбаре тоже работает. Правда для этой цели мне пришлось немного "порихтовать" твоё меню (а именно, добавить Command display name для каждой из твоих команд):



Результат:




 

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #11 : 16-05-2016, 20:20:22 »
Так и должно быть.
Хм... Полагаю, что вы всё же ошибаетесь, ибо для чего тогда, по вашему, файл справки дополнительно указывается и в конфигурационном файле пакета? И почему, например, в AutoCAD 2016 (в отличие от AutoCAD 2012) нужный файл справки успешно открывается по F1 до загрузки сборки (не открывая, конечно, нужный раздел справки, т.к. этой информации нет в конфиге, но тем не менее...)?

Я предполагаю, что именно для такого случая в конфиге и хранится информация о локации файла справки пакета.

По поводу невыполнения команд из Ленты. Похоже, что у тебя остались какие-то хвосты от старого меню.
Как такое возможно? ведь это же файлы Partial CUI. Кроме того, я не раз выгружал и повторно загружал их в AutoCAD. Где эти хвосты могут остаться?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #12 : 16-05-2016, 20:27:22 »
И почему, например, в AutoCAD 2016 (в отличие от AutoCAD 2012) нужный файл справки успешно открывается по F1 до загрузки сборки (не открывая, конечно, нужный раздел справки, т.к. этой информации нет в конфиге, но тем не менее...)?
Ну значит в более новых версиях что-то поменяли, чтобы открывался нужный файл помощи. Хотя это всё (IMHO) нелогично... Ну и всё-таки в AutoCAD 2012 была первая попытка создания автозагрузчика.
Как такое возможно? ведь это же файлы Partial CUI. Кроме того, я не раз выгружал и повторно загружал их в AutoCAD. Где эти хвосты могут остаться?
Затрудняюсь сказать. Запусти _CUI и посмотри какие меню загружены, и что в Ribbon.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #13 : 16-05-2016, 20:50:35 »
Хотя это всё (IMHO) нелогично...
Почему нелогично?
Запусти _CUI и посмотри какие меню загружены, и что в Ribbon.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #14 : 16-05-2016, 21:05:22 »
Проверь вот это:



Если Macro пустое, то команда запускаться не будет. В противном случае должна запускаться.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #15 : 16-05-2016, 21:07:39 »
Ну и убедись, что путь правильный:



Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #16 : 16-05-2016, 21:12:34 »
Эти вещи я проверял в первую очередь... Касательно макроса - он ведь назначается одной и той же кнопке, которую я затем закидываю на туллбар или риббон через драг-дроп. Т.е. невозможно, чтобы на туллбаре у кнопки макрос был указан, а на ней же в риббоне - нет.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #17 : 16-05-2016, 21:21:05 »
А у тебя Ribbon для других команд работает? Может это вообще глюк с версиями .NET или еще чего...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #18 : 16-05-2016, 21:24:14 »
А у тебя Ribbon для других команд работает?
Работает, в том-то и дело...

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #19 : 16-05-2016, 21:32:29 »
А у тебя Ribbon для других команд работает?
Работает, в том-то и дело...
Посмотри поле Macro у своих команд, измени его. Проверь работоспособность.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #20 : 17-05-2016, 12:47:44 »
Снёс текущие настройки AutoCAD 2009-2016, вызвав принудительное восстановление настроек, которые имелись сразу после установки каждой версии AutoCAD. В каталоги поисков AutoCAD 2009-2011 добавил дополнительные записи:
  • C:\Program Files\Autodesk\ApplicationPlugins
  • C:\ProgramData\Autodesk\ApplicationPlugins
  • C:\Users\<UserName>\AppData\Roaming\Autodesk\ApplicationPlugins
Расширение cadproxy.bundle размещаю в каталоге C:\Program Files\Autodesk\ApplicationPlugins.

В AutoCAD 2009-2011 загружаю расширение через NETLOAD и командой CUI загружаю менюшки (для AutoCAD 2009) или CUIX (для AutoCAD 2010, 2011). В меню одни и те же экземпляры кнопок размещены на палитре инструментов и на палитре риббонов.

Смотрю поведение разных версий AutoCAD по нажатию F1 на кнопках... В разных версиях поведение разное: кто в лес, кто по дрова... Практика показывает, что корректное поведение по нажатию F1 наблюдается только у AutoCAD 2009. Версии AutoCAD 2010 и 2011 вообще не открывают нужной справки, если F1 нажат над кнопками на туллбаре.

AutoCAD 2009 x64 - English Version 4


AutoCAD 2010 x64 - English Version 3
Обратите внимание на то, что на заднем плане на долю секунды открывается справка самого акада, после чего закрывается и только после этого открывается нужная.


AutoCAD 2011 x64 - English Version 3
Обратите внимание на то, что помимо нужной справки открывается и справка акада.


Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #21 : 17-05-2016, 13:34:21 »
Снёс текущие настройки AutoCAD 2009-2016, вызвав принудительное восстановление настроек, которые имелись сразу после установки каждой версии AutoCAD.
После выполнения этой операции, кнопки на риббонах AutoCAD 2011 и 2012 стали реагировать на клик мышкой (т.е. команды стали запускаться).

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #22 : 17-05-2016, 17:36:58 »
Обновил исходники и откомпилированную версию cadproxy. Подправил CHM-файл справки. Отредактировал конфигурационный файл так, чтобы расширение успешно автоматически (при первом запуске любой команды расширения) загружалось в AutoCAD 2012 и более новые версии (ранее автоматом не грузилось в 2013-2015).