如何使用 C# 在 Autocad 文件中获取标签名称

Posted

技术标签:

【中文标题】如何使用 C# 在 Autocad 文件中获取标签名称【英文标题】:How to get label name in Autocad file using C# 【发布时间】:2011-10-27 07:50:54 【问题描述】:

我认为这样做很简单,但我不知道如何开始?我想使用 c# 在 AutoCAD 文件中获取图层名称或标签名称。我搜索论坛,但我真的发现任何有价值的东西。我找到了 ObjectARX 和 AutoLisp,但我没有找到任何关于这些 API 的教程。所以,我想举个关于到达 autocad 文件的简单例子。

【问题讨论】:

开放设计联盟还有用于读取 AutoCAD 文件的 .NET API opendesign.com/the_oda_platform/tdn 【参考方案1】:

如果您从official site 下载了 ObjectARX SDK,它包含许多示例项目以帮助您入门。您需要具备一些 AutoCAD 知识才能了解 API 公开的 .dwg 数据库的结构。准备好在项目上投入大量时间。

如果您只是在 .dwg 文件中寻找简单的一次性数据转储,请咨询您当地的绘图员,因为 AutoCAD UI 中有一个命令可以执行此操作,称为数据提取向导。

*** 上的另一个答案推荐 this book chapter 作为了解 AutoCAD 数据库连接功能的一种方式。

【讨论】:

【参考方案2】:

简单如下:

[CommandMethod("LayerIterator")]
public static void LayerIterator_Method()

    Database database = HostApplicationServices.WorkingDatabase;
    using (Transaction transaction = database.TransactionManager.StartTransaction())
    
        SymbolTable symTable = (SymbolTable)transaction.GetObject(database.LayerTableId, OpenMode.ForRead);
        foreach (ObjectId id in symTable)
        
            LayerTableRecord symbol = (LayerTableRecord)transaction.GetObject(id, OpenMode.ForRead);

            //TODO: Access to the symbol
            MgdAcApplication.DocumentManager.MdiActiveDocument.Editor.WriteMessage(string.Format("\nName: 0", symbol.Name));
        

        transaction.Commit();
    

详情可发邮件至http://spiderinnet1.typepad.com/blog/2012/06/autocad-net-iterate-through-layer-table.html

【讨论】:

以上是关于如何使用 C# 在 Autocad 文件中获取标签名称的主要内容,如果未能解决你的问题,请参考以下文章

C#语言对AutoCAD二次开发

求助。。。C#打开dwg文件问题

如何在c#中从pdf文档中获取标签

如何使用 Autodesk Forge API 将上传的 AutoCAD 文件中的元数据提取到 Web 应用程序中?

基于C#实现DXF文件读取显示

尝试使用 C# 上的 AutoCAD 类镜像图形