Что надо сделать чтоб загрузить плагин в ACAD2014?

Автор Тема: Что надо сделать чтоб загрузить плагин в ACAD2014?  (Прочитано 12464 раз)

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

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

  • ADN OPEN
  • Сообщений: 4
  • Карма: 0
Из статьи я узнал что теперь сборки скомпилированные в .NET должны грузится по другому. Безопасность и все такое... ок.
Разместил папку с файлом плагина (DLL) в директорию: C:\Program Files\Autodesk\ApplicationPlugins
Добавил в реест:

[HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R19.1\ACAD-D000:419\Applications\MyPlugin]
"LOADCTRLS"=dword:00000002
"LOADER"="C:\\Program Files\\Autodesk\\ApplicationPlugins\\MyPlugin\\MyPlugin_2014.dll"

Какой надо добавить ключ чтоб модуль загружался автоматически?
сейчас загрузка происходит только через netload

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Более развёрнутая информация по теме загрузки - здесь. Там же присутствует и ссылка на тему с ответом на твой вопрос.

P.S. Допустимые значения LOADCTRLS описаны здесь.

Отмечено как Решение Александр Ривилис 30-04-2016, 12:10:34

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Какой надо добавить ключ чтоб модуль загружался автоматически?
сейчас загрузка происходит только через netload
Подозреваю, что у тебя не хватает ключа:
Цитировать
"MANAGED"=dword:00000001


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

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

  • ADN OPEN
  • Сообщений: 4
  • Карма: 0
Да, именно этого ключа не хватало. Упустил из вида его. Спасибо!

ps
оффтоп: как же сложно тут на форуме с капчей написть спасибо ;)

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

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

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

  • ADN OPEN
  • Сообщений: 4
  • Карма: 0
Возможно кому-то пригодится. Нашел вот такой код для регистрации плагина в автозагрузу автокада:
Код - C [Выбрать]
  1. public void RegisterMe()
  2. {
  3.     //AutoCAD (or vertical) and Application keys
  4.     Microsoft.Win32.RegistryKey acadKey =
  5.         Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
  6.             HostApplicationServices.Current.MachineRegistryProductRootKey);
  7.  
  8.     Microsoft.Win32.RegistryKey acadAppKey = acadKey.OpenSubKey("Applications", true);
  9.  
  10.     string curAssemblyName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
  11.     string curAssemblyPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
  12.     string curAssemblyFullName = System.Reflection.Assembly.GetExecutingAssembly().GetName().FullName;
  13.  
  14.     //already registered?
  15.     String[] subKeyNames = acadAppKey.GetSubKeyNames();
  16.  
  17.     foreach (String subKeyName in subKeyNames)
  18.     {
  19.         if (subKeyName.Equals(curAssemblyName))
  20.         {
  21.             Microsoft.Win32.RegistryKey subkey = acadAppKey.OpenSubKey(subKeyName, true);
  22.             subkey.SetValue("LOADER", curAssemblyPath, Microsoft.Win32.RegistryValueKind.String);
  23.             subkey.Close();
  24.             acadAppKey.Close();
  25.             return;
  26.         }
  27.     }
  28.  
  29.     //create the addin key
  30.     Microsoft.Win32.RegistryKey acadAppAddInKey = acadAppKey.CreateSubKey(curAssemblyName);
  31.  
  32.     acadAppAddInKey.SetValue("DESCRIPTION", curAssemblyFullName, Microsoft.Win32.RegistryValueKind.String);
  33.     acadAppAddInKey.SetValue("LOADCTRLS", 14, Microsoft.Win32.RegistryValueKind.DWord);
  34.     acadAppAddInKey.SetValue("LOADER", curAssemblyPath, Microsoft.Win32.RegistryValueKind.String);
  35.     acadAppAddInKey.SetValue("MANAGED", 1, Microsoft.Win32.RegistryValueKind.DWord);
  36.  
  37.     acadAppKey.Close();
  38. }

и этот же кода для VB.NET:
Код - Visual Basic [Выбрать]
  1.         <CommandMethod("RegMe")> _
  2.         Public Sub RegisterMe()
  3.             'AutoCAD (or vertical) and Application keys
  4.            Dim acadKey As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(HostApplicationServices.Current.MachineRegistryProductRootKey)
  5.  
  6.             Dim acadAppKey As Microsoft.Win32.RegistryKey = acadKey.OpenSubKey("Applications", True)
  7.  
  8.             Dim curAssemblyName As String = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
  9.             Dim curAssemblyPath As String = System.Reflection.Assembly.GetExecutingAssembly().Location
  10.             Dim curAssemblyFullName As String = System.Reflection.Assembly.GetExecutingAssembly().GetName().FullName
  11.  
  12.             'already registered?
  13.            Dim subKeyNames As [String]() = acadAppKey.GetSubKeyNames()
  14.  
  15.             For Each subKeyName As [String] In subKeyNames
  16.                 If subKeyName.Equals(curAssemblyName) Then
  17.                     Dim subkey As Microsoft.Win32.RegistryKey = acadAppKey.OpenSubKey(subKeyName, True)
  18.                     subkey.SetValue("LOADER", curAssemblyPath, Microsoft.Win32.RegistryValueKind.[String])
  19.                     subkey.Close()
  20.                     acadAppKey.Close()
  21.                     Return
  22.                 End If
  23.             Next
  24.  
  25.             'create the addin key
  26.            Dim acadAppAddInKey As Microsoft.Win32.RegistryKey = acadAppKey.CreateSubKey(curAssemblyName)
  27.  
  28.             acadAppAddInKey.SetValue("DESCRIPTION", curAssemblyFullName, Microsoft.Win32.RegistryValueKind.[String])
  29.             acadAppAddInKey.SetValue("LOADCTRLS", 14, Microsoft.Win32.RegistryValueKind.DWord)
  30.             acadAppAddInKey.SetValue("LOADER", curAssemblyPath, Microsoft.Win32.RegistryValueKind.[String])
  31.             acadAppAddInKey.SetValue("MANAGED", 1, Microsoft.Win32.RegistryValueKind.DWord)
  32.  
  33.             acadAppKey.Close()
  34.         End Sub

отсюда

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Возможно кому-то пригодится. Нашел вот такой код для регистрации плагина в автозагрузу автокада:
В обозначенном коде регистрация проводится посредством кода, запущенного в AutoCAD. Давно существует библиотека, позволяющая получать полный расклад по установленным на локальной (или удалённой) машине версиям AutoCAD, их обновлениям, а так же управлять их различными настройками, например настройками автозагрузок плагинов как в Applications веток HKLM\HKCU, так и в настройках профиля AutoCAD (Startup Suite). Причём библиотека самостоятельная (не плагин AutoCAD) и может быть использована во внешних приложениях (собственно для этого и писалась). Документация на русском ломанном английском прилагается.

Изначально в библиотеке присутствовал функционал управления BUNDLE пакетами, но из "религиозных соображений", позднее я его исключил из набора, правда править документацию уж не стал - в ней остались примеры того, как библиотека работала с BUNDLE пакетами (см. файл How to do... -> Edit an info -> Edit a 'bundle' info).
« Последнее редактирование: 30-01-2014, 12:50:54 от Андрей Бушман »

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

  • ADN OPEN
  • Сообщений: 4
  • Карма: 0
Давно существует библиотека

отличная вещь! буду использовать для полноценного инсталятора. Спасибо Андрей!

Оффлайн xSAKABSx

  • ADN Club
  • Сообщений: 36
  • Карма: 1
А чем вам не нравиться инструмент с бандлами?
без ковыряния в реестре ?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
А чем вам не нравиться инструмент с бандлами?
без ковыряния в реестре ?
1) Годится только для последних трех версий AutoCAD
2) Спецификация BUNDLE еще не устоялась на 100%
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
1) Годится только для последних трех версий AutoCAD
Это не аргумент, т.к. легко реализуется и для более ранних версий (изначально я так и сделал). Второй обозначенный пункт - это именно оно.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Это не аргумент, т.к. легко реализуется и для более ранних версий (изначально я так и сделал).
Ты путаешь свою реализацию и встроенную в AutoCAD. Согласись, что это не одно и тоже.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Ты путаешь свою реализацию и встроенную в AutoCAD. Согласись, что это не одно и тоже.
Это может волновать только тех, кому "шашечки" нужнее, чем "ехать". Важен результат. ObjectARX SDK на то и даётся, чтобы можно было реализовать то, что не реализовано Autodesk. А если из каких-либо соображений предпочитать использовать только то, что "из коробки", то какой смысл браться программировать вообще?

Оффлайн xSAKABSx

  • ADN Club
  • Сообщений: 36
  • Карма: 1
Ты путаешь свою реализацию и встроенную в AutoCAD. Согласись, что это не одно и тоже.
Это может волновать только тех, кому "шашечки" нужнее, чем "ехать". Важен результат. ObjectARX SDK на то и даётся, чтобы можно было реализовать то, что не реализовано Autodesk. А если из каких-либо соображений предпочитать использовать только то, что "из коробки", то какой смысл браться программировать вообще?

По поводу из коробки, это способ из коробки не заставляет загаживать реестр,
во вторых это дает мультиверсионность: У меня 12 и 14 кады стоят,
и я не мучаюсь тем чтобы при каком либо обновлении или дополнении плагина  лезть в реестр

да я потратил некоторое время на то чтоб  понять их файлик .xml

Но когда у тебя плагин состоит из dll,lsp,xml,cuix и кучи доп файлов,
для разных кадов они разные,
Родная автозагрузка это просто благодать !



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

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