如何使用.net在Autocad中插入特定布局中的实体

本文关键字:布局 实体 插入 net Autocad 何使用 | 更新日期: 2023-09-27 18:08:48

我正试图插入一个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中?

如何使用.net在Autocad中插入特定布局中的实体

您需要打开布局字典才能获得绘图上的所有布局。然后你可以打开各自的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();
}

查看更好的示例:http://adndevblog.typepad.com/autocad/2012/05/listing-the-layout-names.html