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

发布于 2024-11-30 01:41:53 字数 158 浏览 0 评论 0原文

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

I think it is simple to do this but i dont know how to start? I want to get layer name or label name in the autocad file using c#. I search the forums but i really find anything valuable. I found the ObjectARX and AutoLisp, but i dont find any tutorial about theese API's. So, i want to simple example about the reach autocad file.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

网白 2024-12-07 01:41:53

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

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

stackoverflow上的另一个答案推荐本书章节作为一种方式了解AutoCAD数据库连接功能。

If you downloaded the ObjectARX SDK from the official site it contains many sample projects to get you started. You will need to have some AutoCAD knowledge to understand the structure of the .dwg database as exposed by the API. Be prepared to invest significant time in the project.

If you just are looking for a simple one time dump of the data in a .dwg file ask your local drafter as there is a command in the AutoCAD UI for doing this known as the Data Extraction Wizard.

Another answer on stackoverflow recommend this book chapter as a way to understand the AutoCAD database connection features.

染年凉城似染瑾 2024-12-07 01:41:53

很简单,如下:

[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

It's simple as follows:

[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();
    }
}

Details can be found from http://spiderinnet1.typepad.com/blog/2012/06/autocad-net-iterate-through-layer-table.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文