[英]WPF application reading ACAD 3D
我正在制作WPF應用程序,我想在其中打開Autocad文件並獲取3Dsolids的尺寸(寬度,高度等)。
經過幾天的麻煩,我最終設法打開文件並讀取了文件,現在唯一的問題是我無法獲得3D實體的尺寸。
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using acadApp = Autodesk.AutoCAD.ApplicationServices.Application;
using System.Runtime.InteropServices;
using Autodesk.AutoCAD.Interop;
using Autodesk.AutoCAD.Interop.Common;
namespace WpfApplication2
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private static IAcadApplication oAcadApp = null;
private static string sAcadID = "AutoCAD.Application.18";
AcadDocument doc;
public MainWindow()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
try //get a running AutoCAD instance if avaialbale
{
oAcadApp = (IAcadApplication)System.Runtime.InteropServices.Marshal.GetActiveObject(sAcadID);
doc = oAcadApp.Documents.Open(@"C:\Users\Bernard\Desktop\Drawing2.dwg", false);
oAcadApp.Visible = true;
}
catch (System.Exception) //none found so start a new instance
{
System.Type AcadProg = System.Type.GetTypeFromProgID(sAcadID);
oAcadApp = (IAcadApplication)System.Activator.CreateInstance(AcadProg);
if (this.IsLoaded)
{
doc = oAcadApp.Documents.Open(@"C:\Users\Bernard\Desktop\Drawing2.dwg", false);
oAcadApp.Visible = true;
}
}
}
private void button2_Click(object sender, RoutedEventArgs e)
{
AcadModelSpace modelspace = doc.ModelSpace;
MessageBox.Show("aantal objecten = " + modelspace.Count + "");
for (int i = 0; i < modelspace.Count; i++)
{
AcadEntity entity = modelspace.Item(i);
MessageBox.Show("objecttype = " + entity.EntityType);
if (entity.EntityType == 3)
{
Acad3DSolid solid = (Acad3DSolid)entity;
}
}
}
}
}
Acad3DSolid實體=(Acad3DSolid)實體; 這給了我3DSolid,但是我找不到諸如solid.Width之類的東西。
有人有什么主意嗎?
謝謝。
我認為您需要功能GetBoundingBox。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.