Сообщество программистов Autodesk в СНГ

ADN Club => Адаптация AutoCAD и вертикальных приложений => Тема начата: Андрей Бушман от 13-05-2016, 18:00:01

Название: Partial CUI files в AutoCAD 2010-2016
Отправлено: Андрей Бушман от 13-05-2016, 18:00:01
После создания CUIX-файлов в этом (https://bitbucket.org/Andrey-Bushman/cadproxy) проекте обнаружил две странности в поведении AutoCAD:

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

2. В файле PackageContents.xml определены (https://bitbucket.org/Andrey-Bushman/cadproxy/src/b6223a80b0a18b47a460ceca4cbb93381289590d/proxy.acad2009/PackageContents.xml?at=master&fileviewer=file-view-default) компоненты, указывающие в какую версию AutoCAD какой CUIX следует загружать (см. строки 69-86). Однако по факту автоматическая загрузка CUIX выполняется только в AutoCAD 2016. В 2013-2015 приходится первый раз подгружать вручную.

На всех AutoCAD установлены все SP.
Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Александр Ривилис от 13-05-2016, 19:08:27
1) Где-то мы уже обсуждали, что нужно задавать не только SeriesMin, но и SeriesMax
2) Автозагрузчик работает (и соотвественно воспринимает PackageContents.xml), начиная с AutoCAD 2012. Зачем ты его сбиваешь с толку версиями начиная с 2009?
Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Андрей Бушман от 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-й.
Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Андрей Бушман от 13-05-2016, 21:20:03
1) Где-то мы уже обсуждали, что нужно задавать не только SeriesMin, но и SeriesMax) Автозагрузчик работает (и соотвественно воспринимает PackageContents.xml), начиная с AutoCAD 2012. Зачем ты его сбиваешь с толку версиями начиная с 2009?
Какое отношение  SeriesMin, SeriesMax и PackageContents.xml имеет к обозначенному мною поведению хотя бы в AutoCAD 2011?
Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Александр Ривилис от 13-05-2016, 22:38:19
В AutoCAD 2011 я не проверю - у меня он не установлен. В AutoCAD 2012 лог автозагрузчика:
Извините, вам запрещён просмотр содержимого спойлеров.

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


Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Александр Ривилис от 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. В остальных не смотрел.
Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Андрей Бушман от 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.  
Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Андрей Бушман от 13-05-2016, 23:04:47
Да, только что сам заметил, спасибо. К сожалению проверить сейчас не смогу. В понедельник только.
Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Андрей Бушман от 13-05-2016, 23:25:17
Подключился по RDP к рабочей машинке (не думал, что получится), внёс изменения в конфигурационный файл, удалил MNR-файлы. Выгрузил и повторно загрузил меню, но проблема в 2011 и 2012 так и не пропала.
Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Андрей Бушман от 16-05-2016, 16:56:25
Внёс в исходный проект ряд изменений:

1. Т.к. AutoCAD 2012 ещё не использовал AcCoreMgd.dll, но уже начал использовать механизм Bundle-пакетов, то для него я создал отдельную сборку (proxy.acad2012.dll) и добавил её в Bundle-пакет, внеся соответствующие изменения и в конфигурационный файл PackageContents.xml (текущую версию настроек можно глянуть здесь (https://bitbucket.org/Andrey-Bushman/cadproxy/src/1c6176b94614c1ebfc4d03dea9215464862471d8/proxy.acad2009/PackageContents.xml?at=master&fileviewer=file-view-default)).

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

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

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

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

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

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

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

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

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

(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F122076%2F7842324.6%2F0_124e23_cb1f3702_orig.png&hash=cf396acd09b0f2fed2e6e25b56855bdd)

Результат:




 

Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Андрей Бушман от 16-05-2016, 20:20:22
Так и должно быть.
Хм... Полагаю, что вы всё же ошибаетесь, ибо для чего тогда, по вашему, файл справки дополнительно указывается и в конфигурационном файле пакета? И почему, например, в AutoCAD 2016 (в отличие от AutoCAD 2012) нужный файл справки успешно открывается по F1 до загрузки сборки (не открывая, конечно, нужный раздел справки, т.к. этой информации нет в конфиге, но тем не менее...)?

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

По поводу невыполнения команд из Ленты. Похоже, что у тебя остались какие-то хвосты от старого меню.
Как такое возможно? ведь это же файлы Partial CUI. Кроме того, я не раз выгружал и повторно загружал их в AutoCAD. Где эти хвосты могут остаться?
Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Александр Ривилис от 16-05-2016, 20:27:22
И почему, например, в AutoCAD 2016 (в отличие от AutoCAD 2012) нужный файл справки успешно открывается по F1 до загрузки сборки (не открывая, конечно, нужный раздел справки, т.к. этой информации нет в конфиге, но тем не менее...)?
Ну значит в более новых версиях что-то поменяли, чтобы открывался нужный файл помощи. Хотя это всё (IMHO) нелогично... Ну и всё-таки в AutoCAD 2012 была первая попытка создания автозагрузчика.
Как такое возможно? ведь это же файлы Partial CUI. Кроме того, я не раз выгружал и повторно загружал их в AutoCAD. Где эти хвосты могут остаться?
Затрудняюсь сказать. Запусти _CUI и посмотри какие меню загружены, и что в Ribbon.
Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Андрей Бушман от 16-05-2016, 20:50:35
Хотя это всё (IMHO) нелогично...
Почему нелогично?
Запусти _CUI и посмотри какие меню загружены, и что в Ribbon.
Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Александр Ривилис от 16-05-2016, 21:05:22
Проверь вот это:

(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F54004%2F7842324.6%2F0_124e27_4ad39f29_orig.png&hash=09e8c12632d41b0ac0ffb174b123c9b0)

Если Macro пустое, то команда запускаться не будет. В противном случае должна запускаться.
Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Александр Ривилис от 16-05-2016, 21:07:39
Ну и убедись, что путь правильный:

(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F37849%2F7842324.6%2F0_124e28_ed621357_orig.png&hash=6922caf2104e4e02efcc888f58d3805b)

Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Андрей Бушман от 16-05-2016, 21:12:34
Эти вещи я проверял в первую очередь... Касательно макроса - он ведь назначается одной и той же кнопке, которую я затем закидываю на туллбар или риббон через драг-дроп. Т.е. невозможно, чтобы на туллбаре у кнопки макрос был указан, а на ней же в риббоне - нет.
Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Александр Ривилис от 16-05-2016, 21:21:05
А у тебя Ribbon для других команд работает? Может это вообще глюк с версиями .NET или еще чего...
Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Андрей Бушман от 16-05-2016, 21:24:14
А у тебя Ribbon для других команд работает?
Работает, в том-то и дело...
Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Александр Ривилис от 16-05-2016, 21:32:29
А у тебя Ribbon для других команд работает?
Работает, в том-то и дело...
Посмотри поле Macro у своих команд, измени его. Проверь работоспособность.
Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Андрей Бушман от 17-05-2016, 12:47:44
Снёс текущие настройки AutoCAD 2009-2016, вызвав принудительное восстановление настроек, которые имелись сразу после установки каждой версии AutoCAD. В каталоги поисков AutoCAD 2009-2011 добавил дополнительные записи:
Расширение 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
Обратите внимание на то, что помимо нужной справки открывается и справка акада.

Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Андрей Бушман от 17-05-2016, 13:34:21
Снёс текущие настройки AutoCAD 2009-2016, вызвав принудительное восстановление настроек, которые имелись сразу после установки каждой версии AutoCAD.
После выполнения этой операции, кнопки на риббонах AutoCAD 2011 и 2012 стали реагировать на клик мышкой (т.е. команды стали запускаться).
Название: Re: Partial CUI files в AutoCAD 2010-2016
Отправлено: Андрей Бушман от 17-05-2016, 17:36:58
Обновил исходники и откомпилированную версию cadproxy. Подправил CHM-файл справки. Отредактировал конфигурационный файл так, чтобы расширение успешно автоматически (при первом запуске любой команды расширения) загружалось в AutoCAD 2012 и более новые версии (ранее автоматом не грузилось в 2013-2015).