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

标签 c# autocad

我正在尝试将 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/

相关文章:

autocad - DXF 文件 - 无法在 Autodesk Viewer 中打开

c# - 从后面的代码中设置的 cssClass

c# - Assembly.GetType 显式接口(interface)实现上的 TypeLoadException

c# - 连接到 SSL 加密网站的安全性如何?

java - 将 DGN 转换为 PDF

autocad - 在 Lisp 退出时执行代码

c# - 从不同的应用程序域(复合 UI)获取对 UserControl 的引用

c# backgroundworker 无法使用我希望它执行的代码

c# - AutoCAD .NET 选择集过滤器 : What types of entities can be add to the filter to be selected?

autocad - 如何为折线编写 DXF 代码?