latour_g 发表于 2016-9-8 14:13:49

创建ViewTableRecord

嗨,我试着这样做:1-读取一个DWG并将所有ViewTableRecord放在一个列表中2-使用列表创建ViewTableRecord。我没有得到任何错误,但我的代码没有创建任何视图,一定有问题,但我不知道是什么。公共结构INFOVIEW。
{。
公共Point2d viewCenter;。
公共Point3d viewTarget;。
公共Vector3d视图方向;。
公共双视图高度;。
}。

私有的无效btnView_Click(对象发送者,EventArgs e)。
{。
Listlist=new List();。

文档文档=AcadApp.DocumentManager.MdiActiveDocument;。
数据库dbXref=新数据库(false, true);。

使用(doc.LockDocument())。
{。
使用(dbXref)。
{。
尝试。
{。
dbXref.ReadDwgFile("C:\\TEMP\\viewtesting.dwg",FileShare.ReadWrite, false, "");。
}。

捕捉。
{。
dbXref.Dispose();。
返回;。
}。

使用(事务tr=dbXref.TransactionManager.StartTransaction())。
{。
ViewTable vt=(ViewTable)tr.GetObject(dbXref.ViewTableId,OpenMode.ForWrite);。
foreach(vt中的ObjectId id)。
{。
vtr=(ViewTableRecord)tr.GetObject(id,OpenMode.ForWrite);。

INFOVIEW newInfo;。
newInfo.viewCentervtr.CenterPoint。
newInfo.viewTargetvtr.Target。
newInfo.viewDirectionvtr.ViewDirection。
newInfo.viewHeightvtr.Height。
list.Add(newInfo);。
}。
tr.Commit();。
}。
dbXref.Dispose();。
}。

数据库db=doc.Database;。

使用(事务tr=db.TransactionManager.StartTransaction())。
{。
ViewTable vt2=(ViewTable)tr.GetObject(db.ViewTableId,OpenMode.ForWrite);。

foreach(INFOVIEW vtrList in list)。
{。
ViewTableRecord viewTBR=new ViewTableRecord();。
viewTBR.TargetvtrList.viewTarget。
viewTBR.ViewDirectionvtrList.viewDirection。
viewTBR.HeightvtrList.viewHeight。
viewTBR.CenterPointvtrList.viewCenter。
vt2.Add(viewTBR);。
tr.AddNewlyCreatedDBObject(viewTBR,true);。
}。
tr.Commit();。
}。
}。
}。



**** Hidden Message *****

latour_g 发表于 2016-9-8 14:42:31

快速浏览一下你试过给他们命名吗?它们可能被添加,但匿名。

latour_g 发表于 2016-9-8 14:50:04

呜呜<br>就是这样,现在很好用。比你强多了!

latour_g 发表于 2016-9-9 10:34:39

最后一个问题
是否有其他方法可以将UCS应用于我的视图

latour_g 发表于 2016-9-9 10:38:31

哦,我应该没事,我只是说我可能可以使用“setUCS”来创建我的viewtablerecord。
页: [1]
查看完整版本: 创建ViewTableRecord