我正在尝试将 blockReference(在我的例子中是图例)插入到其他布局中的特定布局中。
这是我使用的代码:
BlockTable blockTable = transaction.GetObject(database.BlockTableId, OpenMode.ForWrite) as BlockTable;
BlockTableRecord blkTbRecPaper = transaction.GetObject(blockTable[BlockTableRecord.PaperSpace], OpenMode.ForWrite) as BlockTableRecord;
blkTbRecPaper.AppendEntity(blockReference);
我的问题是,它仅在最后选择的布局是我要查找的布局时才有效。有没有办法直接指定想要的布局,而不是将 blockReference 添加到图纸空间的 blockTableREcord 中?
最佳答案
您需要打开布局字典才能获取绘图上的所有布局。然后您可以打开相应的 BlockTableRecord 并插入新的 block 引用。
using (Transaction tr = db.TransactionManager.StartTransaction())
{
DBDictionary layoutDic
= tr.GetObject(
db.LayoutDictionaryId,
OpenMode.ForRead,
false
) as DBDictionary;
foreach (DBDictionaryEntry entry in layoutDic)
{
ObjectId layoutId = entry.Value;
Layout layout
= tr.GetObject(
layoutId,
OpenMode.ForRead
) as Layout;
ed.WriteMessage(
String.Format(
"{0}--> {1}",
Environment.NewLine,
layout.LayoutName
)
);
}
tr.Commit();
}
查看更好的示例:http://adndevblog.typepad.com/autocad/2012/05/listing-the-layout-names.html
关于c# - 如何使用.net在Autocad中的特定布局中插入实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32113068/