Не удалось получить фабрику класса COM для компонента

Автор Тема: Не удалось получить фабрику класса COM для компонента  (Прочитано 742 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
Здравствуйте, переношу программу с vba на vb.net. При обращении к именам из AcSmComponents21.tlb (например AcSmSheetSetMgr) выдает ошибку
для x86 System.Runtime.InteropServices.COMException: "Не удалось получить фабрику класса COM для компонента с CLSID {1BDC8922-FDEB-40DE-A51E-8C4B44569F42} из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).",
для x64 System.IO.FileNotFoundException: "Не удалось получить фабрику класса COM для компонента с CLSID {1BDC8922-FDEB-40DE-A51E-8C4B44569F42} из-за следующей ошибки: 8007007e Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E)."
Автокад 2017 х64, VS 2017, win 10 x64. Подскажите в чем может быть проблема


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

  • Administrator
  • *****
  • Сообщений: 8786
  • Карма: 1085
  • Рыцарь ObjectARX
  • Skype: rivilis
выдает ошибку для x86
Автокад 2017 х64, VS 2017, win 10 x64.
Ответ выделен.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
Ответ выделен.
для х64 тоже ошибку выдает
для x64 System.IO.FileNotFoundException: "Не удалось получить фабрику класса COM для компонента с CLSID {1BDC8922-FDEB-40DE-A51E-8C4B44569F42} из-за следующей ошибки: 8007007e Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E)."

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

  • Administrator
  • *****
  • Сообщений: 8786
  • Карма: 1085
  • Рыцарь ObjectARX
  • Skype: rivilis
Ну тогда видимо эти компоненты у тебя неправильно зарегистрированы в системе.
Проверь наличие в реестре:
Код - Microsoft Registry [Выбрать]
  1. REGEDIT4
  2.  
  3. [HKEY_CLASSES_ROOT\CLSID\{1BDC8922-FDEB-40DE-A51E-8C4B44569F42}]
  4. @="AcSmSheetSetMgr"
  5.  
  6. [HKEY_CLASSES_ROOT\CLSID\{1BDC8922-FDEB-40DE-A51E-8C4B44569F42}\InProcServer32]
  7. @="AcSmComponents.dll"
  8. "ThreadingModel"="Apartment"
  9.  
  10. [HKEY_CLASSES_ROOT\CLSID\{1BDC8922-FDEB-40DE-A51E-8C4B44569F42}\ProgID]
  11. @="AcSmComponents.AcSmSheetSetMgr.21"
  12.  
  13. [HKEY_CLASSES_ROOT\CLSID\{1BDC8922-FDEB-40DE-A51E-8C4B44569F42}\Programmable]
  14. @=""
  15.  
  16. [HKEY_CLASSES_ROOT\CLSID\{1BDC8922-FDEB-40DE-A51E-8C4B44569F42}\TypeLib]
  17. @="{AA0F32F6-E7D0-44C3-BF90-2C2CC3220C1F}"
  18.  
  19.  

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

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

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
Реестр совпадает. То есть с подшивками нет возможности работать из внешнего приложения? Или надо как то подключатся к этой библиотеке через автокад?

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

  • Administrator
  • *****
  • Сообщений: 8786
  • Карма: 1085
  • Рыцарь ObjectARX
  • Skype: rivilis
То есть с подшивками нет возможности работать из стороннего приложения?
Через AcSmComponents категорически нет. Прочти тему и ответ сотрудника ADN DevHelp: https://forums.autodesk.com/t5/net/external-access-to-dst-file/td-p/3135796
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
А vba не как внешнее приложение считается? Оно же вроде через ActiveX к автокаду обращается.

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

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

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

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

Отмечено как Решение Akkella 10-12-2018, 19:45:17

Оффлайн trir

  • ADN Club
  • ***
  • Сообщений: 241
  • Карма: 26
Цитировать
То есть с подшивками нет возможности работать из внешнего приложения?
подшивка это просто xml-файл... почти

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

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
Цитировать
То есть с подшивками нет возможности работать из внешнего приложения?
подшивка это просто xml-файл... почти

Спасибо, правда эта библиотека упорно не хочет работать

Оффлайн trir

  • ADN Club
  • ***
  • Сообщений: 241
  • Карма: 26
Цитировать
правда эта библиотека упорно не хочет работать
что пишет?

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

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
что пишет?

Необработанное исключение: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
   в SheetSetManager.CustomPropertyBag..ctor(XmlElement nParent) в D:\1\SheetSetManager-master\CustomPropertyBag.cs:строка 17
   в SheetSetManager.Sheet..ctor(XmlElement nParent) в D:\1\SheetSetManager-master\Sheet.cs:строка 19
   в SheetSetManager.SheetSetListener..ctor(String nfilename) в D:\1\SheetSetManager-master\SheetSetListener.cs:строка 29
   в Project6.Module1.SheetSetTest() в C:\Users\akkel\source\repos\Project6\Project6\Module1.vb:строка 721
   в Project6.Form1.Form1_Load(Object sender, EventArgs e) в C:\Users\akkel\source\repos\Project6\Project6\Form1.vb:строка 13

Обращался к библиотеке Dim wListener As New SheetSetListener("D:\тест\Ramka.dst")

Оффлайн trir

  • ADN Club
  • ***
  • Сообщений: 241
  • Карма: 26
исправил
если что, всегда можно сделать так:
Код - C# [Выбрать]
  1. AcSmXml doc = new AcSmXml();
  2. doc.LoadFromDstFile(nfilename);
и получить подшивку как xml
« Последнее редактирование: 10-12-2018, 17:15:53 от Александр Ривилис »

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

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
« Последнее редактирование: 10-12-2018, 21:03:46 от Akkella »