如何使用 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 文件中获取标签名称的主要内容,如果未能解决你的问题,请参考以下文章