ADN Club > AutoCAD .NET API

Отображение DWG/DWF файла в C# WPF

(1/5) > >>

chudik:
Добрый день!
Хочу отобразить в проекте C# WPF файл DWG, но не получается.
Код в данный момент у меня тривиальный

--- Код: ---ACCTRLLib.AcCtrlClass acc = new ACCTRLLib.AcCtrlClass();
acc.PutSourcePath("1.dwg");

--- Конец кода ---
Дальше, мне необходимо отобразить, говорят, что вот надо написать следующее

--- Код: ---System.Windows.Forms.Integration.WindowsFormsHost host = new System.Windows.Forms.Integration.WindowsFormsHost();
host.Child = acc;
this.grid1.Children.Add(host);

--- Конец кода ---
Но проблема в том, что acc не является объектом Control и по этому ошибка. Помогите с этим разобраться!
Заранее спасибо за ответы и советы.

Александр Ривилис:
Боюсь что с WPF могут быть проблемы.
Для начала посмотри следующие ссылки:
http://through-the-interface.typepad.com/through_the_interface/2008/03/embedding-autoc.html
http://forums.autodesk.com/t5/NET/Adding-acctrl-control-kills-Visual-Studio-2010/td-p/3456832 (особенно ответы Balaji_Ram)

chudik:
Во, спасибо за ссылки.
А это необходимо делать же с предустановленным автокадом?
Просто есть приложения (они написаны на плюсах) и там используется DWG TrueView, есть такая возможость его использовать?
Просто необходимо сделать не через AutoCAD, т.к. например, при установленном 2013 нет такоого COM компонента как AcCtrl

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

--- Цитата: chudik от 18-10-2013, 15:39:10 ---Просто есть приложения (они написаны на плюсах) и там используется DWG TrueView, есть такая возможость его использовать?
--- Конец цитаты ---
acctrl.dll которая содержится в составе AutoCAD 2014 позволяет получить Interop-файлы:

--- Код: ---C:\Program Files\Common Files\Autodesk Shared>aximp acctrl.dll
Generated Assembly: C:\Program Files\Common Files\Autodesk Shared\ACCTRLLib.dll
Generated Assembly: C:\Program Files\Common Files\Autodesk Shared\AxACCTRLLib.dll
--- Конец кода ---
Та же процедура для файла acctrl.dll из состава DWG TrueView 2014:

--- Код: ---C:\Program Files\Autodesk\DWG TrueView 2014>aximp acctrl.dll
Generated Assembly: C:\Program Files\Autodesk\DWG TrueView 2014\ACCTRLLib.dll
Generated Assembly: C:\Program Files\Autodesk\DWG TrueView 2014\AxACCTRLLib.dll

--- Конец кода ---
Так что теоретически можно подключить и её. Другое дело, что для DWG TrueView нет официального API и поддержки - так  что тут только на свой страх и риск.


--- Цитата: chudik от 18-10-2013, 15:39:10 ---при установленном 2013 нет такоого COM компонента как AcCtrl
--- Конец цитаты ---
Есть. Находится в %Program Files%\Common Files\Autodesk Shared\

chudik:
Ну покопался, с DWG TrueView подружиться очень трудно, покопавшись еще в интернете, нашел хороший способ работать с dwf, т.е. в Windows Form это все работает и в WPF (Только там надо наследовать Form объект). В COM-объектах добавил контрол Autodesk DWF Viewer Control (библиотека AdView.dll) и следующий код работает

--- Код: ---public Form1()
        {
            InitializeComponent();
            StreamReader sr = new StreamReader(@"C:\1.dwf");
            string pat = @"C:\1.dwf";
            try
            {
                axCExpressViewerControl1._SourceStream = sr;
            }
            catch(Exception e)
            {
                MessageBox.Show(e.Message);
                sr.Close();
                axCExpressViewerControl1.SourcePath = pat;
            }
        }

--- Конец кода ---
.
Вот только одна загвоздка, при вызове axCExpressViewerControl1._SourceStream = sr; выскакивает ошибка, что данные метод не реализован, т.е. я правильно понял, что данное свойство не реализованно разработчиками Autodesk Design Review?

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии