Partial CUI files в AutoCAD 2010-2016

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

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
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь 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
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь 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
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь 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
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь 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
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь 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
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Partial CUI files в AutoCAD 2010-2016
« Ответ #14 : 16-05-2016, 21:05:22 »
Проверь вот это:



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