ADN Club > AutoCAD .NET API
Отображение DWG/DWF файла в C# WPF
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?
Навигация
Перейти к полной версии