2012-01-03 4 views
1

Я нашел код, чтобы открыть файл dwg в ​​autocad с помощью команд objectARX. Этот код работает успешно, когда я написал его в проекте библиотеки классов, но проблема возникает, когда я хочу поместить этот код в мое приложение windows.It дает мне это сообщение об ошибке:Ошибка: typeInitializationException

Инициализатор типа для '< Модуль>' выбрал исключение.

Внутреннее исключение: модуль 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-ссылок.

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

+0

сделал вы пытались добавить библиотеку классов, как ссылка windows project, а затем вызвать функцию в библиотеке классов, которая открывает файл dwg? –

+0

Да, но я снова получил эту ошибку. –

ответ

0

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

+0

Нет, мой проект с использованием .Net framework 4. –

+0

Используете ли вы AutoCAD 2012? это единственное, скомпилированное против .NET 4 до сих пор –

4

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

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

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

+0

Привет @ rschuler, Спасибо за ваш ответ. Выскажите меня, но я не понял, что ваш смысл «должен запускаться внутри AutoCAD»? и почему мой код работает успешно в библиотеке классов, но имеет ошибку в выигрыше. приложение.? в добавлении я думаю проблема с AcMgd.dll не AcDbMgd.dll. –

+1

Приложение AutoCAD загружает управляемые DLL. Они не могут использоваться вне AutoCAD. Это всего лишь обертки для внутренних функций, они не являются самими AutoCAD. Вы не можете написать приложение .exe, использующее библиотеки AutoCAD DLL. Лазейка AcGe для меня новость, интересно. –

+1

Эта ссылка (http://docs.autodesk.com/ACD/2010/ENU/AutoCAD%20.NET%20Developer%27s%20Guide/files/WS73099cc142f48755-5c83e7b1120018de8c0-2202.htm) объясняет автономные и внутрипроцессные расширения AutoCAD , Он также предоставляет метод создания автономного приложения, но вам все равно необходимо установить AutoCAD на вашем компьютере, и вам нужно создать экземпляр. RealDWG гораздо более гибкий. – JayP

0

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 Тип
  • Управление Выбор Установка
  • Пользовательский интерфейс доступа с управляемыми классами
  • Использование управляемых приложений Инициализация и время загрузки Оптимизация