C# 如何使用.net在Autocad中的特定布局中插入图元?
我正在尝试将块引用(在我的例子中是图例)插入到其他布局中的特定布局中 这是我使用的代码:C# 如何使用.net在Autocad中的特定布局中插入图元?,c#,autocad,C#,Autocad,我正在尝试将块引用(在我的例子中是图例)插入到其他布局中的特定布局中 这是我使用的代码: BlockTable blockTable = transaction.GetObject(database.BlockTableId, OpenMode.ForWrite) as BlockTable; BlockTableRecord blkTbRecPaper = transaction.GetObject(blockTable[BlockTableRecord.PaperSpace], OpenMo
BlockTable blockTable = transaction.GetObject(database.BlockTableId, OpenMode.ForWrite) as BlockTable;
BlockTableRecord blkTbRecPaper = transaction.GetObject(blockTable[BlockTableRecord.PaperSpace], OpenMode.ForWrite) as BlockTableRecord;
blkTbRecPaper.AppendEntity(blockReference);
我的问题是,它只在最后选定的布局是我正在寻找的布局时起作用。是否有办法直接指定所需布局,而不是将块引用添加到图纸空间的blockTableREcord中?您需要打开布局字典才能获得图形上的所有布局。然后可以打开相应的BlockTableRecord并插入新的块参照
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();
}
请访问了解更好的示例,谢谢@Augusto。下面是我如何添加blockReference:
BlockTableRecord blkTabRec=transaction.GetObject(layout.BlockTableRecordId,OpenMode.ForWrite)作为BlockTableRecord;'legendEntries[0]。加载(事务,blkTabRec)代码>我的加载方法使图例条目(实体)添加到图层和事务的blockTable记录中。