Ошибка: typeInitializationException - PullRequest
1 голос
/ 03 января 2012

Я нашел код для открытия файла DWG в AutoCAD с командами objectARX. Этот код успешно работает, когда я написал его в проекте библиотеки классов, но проблема возникает, когда я хочу разместить этот код в моем приложении WindowsЭто выдает мне следующее сообщение об ошибке:

Инициализатор типа для вызвал исключение.

Внутреннее исключение: модуль C ++ не загрузился во время инициализации процесса.

мой код:

String MyDWGFilePath = @"\\Server\SharedFolder\Projects\File1.dwg";
DocumentCollection dm = Application.DocumentManager;
Document doc = null;

if(File.Exists(MyDWGFilePath))
{
   doc = dm.Open(MyDWGFilePath, false);
   Application.DocumentManager.MdiActiveDocument = doc;
}

Примечание: Я добавил acdbmgd.dll и acmgd.dll из установленной папки autocad, а также AutoCAD и AXDBLib изСсылки на COM.

, пожалуйста, помогите мне ...

Ответы [ 3 ]

4 голосов
/ 04 января 2012

Насколько я понимаю, Autodesk устанавливает некоторые (но не все *) из своих библиотек AutoCAD так, чтобы они не работали вне адресного пространства AutoCAD. Возможно, вы столкнулись с этим лицензионным ограничением. (Я просматриваю веб-сайт Autodesk для ссылки, подтверждающей это).

Редактировать: RealDWG - это продукт, который Autodesk хочет, чтобы вы купили, если собираетесь выполнять манипуляции .dwg вне AutoCAD. (Тем не менее, поиск AcDbMgd работает только внутри ссылки acad ...)

(*) Я знаю, что группа классов / библиотек AcGe может использоваться вне AutoCAD - я использовал их в некоторых модульных тестах. Я думаю, что все, что манипулирует базой данных .dwg, должно выполняться внутри AutoCAD.

0 голосов
/ 17 января 2012

RealDWG - это то, что вам нужно.

В документации RealDWG:

Основные этапы настройки решения .NET с использованием Visual Studio и управляемых оболочек ObjectARX одинаковы при использовании Microsoft Visual C # .NET или Visual Basic .NET.

Чтобы начать использовать управляемые оболочки ObjectARX с Microsoft Visual Studio

  1. В Visual Studio .NET создайте решение для библиотеки классов и проект.
  2. Выберите Добавить ссылку в меню Проект или Обозреватель решений.
  3. Перейдите в каталог \ inc пакета ObjectARX SDK и выберите acdbmgd.dll и acmgd.dll.
  4. В файле основного класса добавьте пространства имен, которые вы будете использовать.

Например, в C #:

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;

В VB .NET:

Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.RuntimeThe

ObjectARX SDK предоставляет образцы .NET в каталоге \ samples \ dotNet.

Темы в этом разделе

  • Определение команд AutoCAD в управляемых приложениях
  • Определение методов, которые можно вызывать из AutoLISP
  • Использование методов экземпляров и статических команд
  • Загрузка управляемых приложений в AutoCAD
  • Управление исключениями в управляемых приложениях
  • Использование транзакций в управляемых приложениях
  • Использование типа ResultBuffer
  • Управление наборами выбора
  • Доступ к пользовательскому интерфейсу с управляемыми классами
  • Использование инициализации управляемого приложения и оптимизации времени загрузки
0 голосов
/ 03 января 2012

возможно, проверьте целевой фреймворк для проекта Windows, измените его на .Net Framework x, если для него установлен профиль клиента .Net Framework

...