Автозагрузка dll в автокад

Автор Тема: Автозагрузка dll в автокад  (Прочитано 5527 раз)

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

Оффлайн MeatAllАвтор темы

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Автозагрузка dll в автокад
« : 21-01-2022, 17:02:24 »
Добрый день. Не работает автозагрузка плагина в автокаде. Скомпилил dll, которая создает вкладку, на ней кнопки, которые вызывают WPF форму, не буду вдаваться в подробности. Пытался сделать автозагрузку этой dll - в %appdata% сделал папку MyApp.bundle, в ней лежит PackageContents.xml и папка Contents. в папке Contents лежит сама dll и папка Resources, в которой в свою очередь лежат иконка и help.html, которые я, в попытке сделать этот автозапуск, скопировал с установленного рабочего расширения, которое в свою очередь, было скачано с apps.autodesk. Когда запускаю автокад он не предалает загрузить мою dll, в отличие от других расширений. Через netload подрузить dll получается, все работает, разве что выпадает fatalerror при открытии на ленте вкладки "рекомендованные приложения". Вот код PackageContents.xml
Код - XML [Выбрать]
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <ApplicationPackage SchemaVersion="1.0" ProductType="Application"
  3.  AutodeskProduct="AutoCAD"
  4.  ProductType="Application"
  5.  AppVersion="1.0.0"
  6.  Name="My App"
  7.  Description="My App"
  8.  Icon="./Contents/Resources/Appicon.ico"
  9.  HelpFile="./Contents/Resources/help.html"
  10.  ProductCode="{00000000-0000-0000-0000-0000000A0000}"
  11.  <CompanyDetailsName="IAM"Url="www.aaaa.com"Email="1111@1111.com" />
  12.     <ComponentsDescription="Runtime parts">
  13.  
  14.     <RuntimeRequirementsOS="Win32|Win64|MacOS"Platform="AutoCAD|AutoCAD*"SeriesMin="R18.2"SeriesMax="R24.4" />
  15.  
  16.     <ComponentEntryAppName="MyApp"Version="1.0.0"ModuleName="./Contents/MyApp.dll" PerDocument="True"/>
  17.  
  18.   </Components>
  19.  
  20. </ApplicationPackage>
  21.  
создание и подгрузка вкладки с кнопками делались по данному примеру: https://habr.com/ru/post/263373/ , только из кода был выкинуто
//и раз уж лента запустилась, то отключаем обработчик событий
                Autodesk.Windows.ComponentManager.ItemInitialized -=
                    new EventHandlerRibbonItemEventArgs>(ComponentManager_ItemInitialized);
так как с ним не компилилось. Делал на .NET Framework 4.7.2 и запускал на 2022 автокаде.
« Последнее редактирование: 21-01-2022, 17:05:12 от Александр Ривилис »

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Автозагрузка dll в автокад
« Ответ #1 : 21-01-2022, 17:08:53 »
Пытался сделать автозагрузку этой dll - в %appdata% сделал папку MyApp.bundle
Странное место для приложения. Может всё-таки как-то так: http://docs.autodesk.com/ACD/2014/ENU/files/GUID-5E50A846-C80B-4FFD-8DD3-C20B22098008.htm
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Автозагрузка dll в автокад
« Ответ #3 : 21-01-2022, 17:15:27 »
P.S.: Я предпочитаю помещать плагины сюда: C:\Program Files\Autodesk\ApplicationPlugins
В этом случае они работают для всех пользователей компьютера. Но помещение в этот каталог требует прав Администратора.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн MeatAllАвтор темы

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Re: Автозагрузка dll в автокад
« Ответ #4 : 21-01-2022, 17:22:02 »
Пытался сделать автозагрузку этой dll - в %appdata% сделал папку MyApp.bundle
Странное место для приложения. Может всё-таки как-то так: http://docs.autodesk.com/ACD/2014/ENU/files/GUID-5E50A846-C80B-4FFD-8DD3-C20B22098008.htm

попробовал по тем путям, как там указано - без изменений

Оффлайн MeatAllАвтор темы

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Re: Автозагрузка dll в автокад
« Ответ #5 : 21-01-2022, 17:23:08 »
P.S.: Я предпочитаю помещать плагины сюда: C:\Program Files\Autodesk\ApplicationPlugins
В этом случае они работают для всех пользователей компьютера. Но помещение в этот каталог требует прав Администратора.

да вот перебрал разные варианты, в том числа и предложенные Вами - пока не помогает

Оффлайн MeatAllАвтор темы

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Автозагрузка dll в автокад
« Ответ #7 : 21-01-2022, 17:28:42 »
1. Скачай http://adn-cis.org/assets/gallery/AutoCAD/MgdDbg.zip
2. Разблокируй zip-архив
3. Разархивируй в %ProgramFiles%\Autodesk\ApplicationPlugins
Подробности здесь: https://adn-cis.org/forum/index.php?topic=7274.0
Проанализируй файл C:\Program Files\Autodesk\ApplicationPlugins\Autodesk DWG MgdDBG.bundle\PackageContents.xml - сравни чем отличается от твоего. Возможно причина в этом.
Похоже что на уровне  <ApplicationPackage> у тебя нет <RuntimeRequirements>, которые обязательно должны присутствовать. И причем здесь MacOS???
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Автозагрузка dll в автокад
« Ответ #8 : 21-01-2022, 17:36:01 »
И вообще у тебя куча ошибок в PackageContents.xml - проверь парность знаков ">" и "<"
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Автозагрузка dll в автокад
« Ответ #9 : 21-01-2022, 17:45:14 »
Попробуй вот такой вариант. Я его не тестировал, но он значительно ближе к истине чем твой:

Код - XML [Выбрать]
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <ApplicationPackage SchemaVersion="1.0" ProductType="Application"
  3.  AutodeskProduct="AutoCAD"
  4.  ProductType="Application"
  5.  AppVersion="1.0.0"
  6.  Name="My App"
  7.  Description="My App"
  8.  Icon="./Contents/Resources/Appicon.ico"
  9.  HelpFile="./Contents/Resources/help.html"
  10.  ProductCode = "{E67ADF67-D351-499D-BC37-3933783C39F5}">
  11.   <RuntimeRequirements OS="Win32|Win64" Platform="AutoCAD|AutoCAD*" SeriesMin="R18.2" SeriesMax="R24.2" />
  12.   <Components Description="My AutoCAD APP">
  13.     <RuntimeRequirements OS="Win32|Win64" Platform="AutoCAD|AutoCAD*" SeriesMin="R18.2" SeriesMax="R24.2" />
  14.     <ComponentEntry AppName="MyApp" Version="1.0.0" ModuleName="./Contents/MyApp.dll" PerDocument="True" />
  15.   </Components>
  16. </ApplicationPackage>
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн MeatAllАвтор темы

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Re: Автозагрузка dll в автокад
« Ответ #10 : 21-01-2022, 18:17:26 »
1. Скачай http://adn-cis.org/assets/gallery/AutoCAD/MgdDbg.zip
2. Разблокируй zip-архив
3. Разархивируй в %ProgramFiles%\Autodesk\ApplicationPlugins
Подробности здесь: https://adn-cis.org/forum/index.php?topic=7274.0
Проанализируй файл C:\Program Files\Autodesk\ApplicationPlugins\Autodesk DWG MgdDBG.bundle\PackageContents.xml - сравни чем отличается от твоего. Возможно причина в этом.
Похоже что на уровне  <ApplicationPackage> у тебя нет <RuntimeRequirements>, которые обязательно должны присутствовать. И причем здесь MacOS???

просто взял Вашу xml, скопировал и заменил в ней ModuleName на свое. Теперь у меня, по крайней мере, на кнопке "вход в службы" появляется всплывающее уведомление, что мой плагин подгружен, хотя вкладка на ленте не появляется

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Автозагрузка dll в автокад
« Ответ #11 : 21-01-2022, 18:23:22 »
Вкладка наверное не подгружается именно из-за того, что ты убрал часть кода из примера.
Но главное, что сам плагин грузится.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн MeatAllАвтор темы

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Re: Автозагрузка dll в автокад
« Ответ #12 : 21-01-2022, 18:30:07 »
Вкладка наверное не подгружается именно из-за того, что ты убрал часть кода из примера.
Но главное, что сам плагин грузится.

я попробовал в ContentPackage.xml прописать ссылку на lsp файл, который через _netload должен dll подгружать. когда я в запущенном акаде гружу dll через netload, то все ок.
(command "_netload" "C:\\Program Files\\Autodesk\\ApplicationPlugins\\MyApp.bundle\\Contents\\MyApp.dll")
выдает "; ошибка: команда Autocad: _netload отвергнута". Скажите пожалуйста, почему такое может быть?

Оффлайн MeatAllАвтор темы

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Re: Автозагрузка dll в автокад
« Ответ #13 : 21-01-2022, 18:34:48 »
Даже когда в запущенный акад закидываю этот lisp файл, то вкладка отстраивается

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Автозагрузка dll в автокад
« Ответ #14 : 21-01-2022, 19:09:28 »
я попробовал в ContentPackage.xml прописать ссылку на lsp файл, который через _netload должен dll подгружать. когда я в запущенном акаде гружу dll через netload, то все ок.
Зачем ты это пытаешься делать? В момент, когда загружается твой плагин еще нет Ленты (Ribbon) и соответственно вкладку ты добавить не можешь. Твой плагин должен дождаться момента, когда Лента готова и тогда добавлять свою вкладку.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение