AutoCAD - 能否分析 .dwg 文件?

5
我想分析dwg文件,这可行吗?
我试图编写一个程序,可以分析.dwg文件的内容。例如,该程序可以判断建筑模型中的门是否能够打开。
我找到了这篇文章,它解释了如何读取autoCAD文件。我也看过一些可以打开和查看.dwg文件的程序,但没有可以分析内容的程序。
我想知道是否有类似的工具,可以分析.dwg文件的内容,并且是否有SDK可以帮助我进行分析?

您可以编写在AutoCAD内运行的软件(需要AutoCAD-AutoLisp等),也可以编写不需要AutoCAD运行的软件(Autodesk RealDWG许可证,C++/C#)。唯一的其他选择是第三方软件库。然而,这个问题过于宽泛和/或要求离线资源。 - crashmstr
你有这座建筑的二维或三维模型吗? - Augusto Goncalves
@AugustoGoncalves 2D 模型 - No Idea For Name
2
基本上不行。DWG实体中的对象“门”的特征并不明显。您需要一些算法来从其特征中识别形状,即“教”软件门是什么。如果它可以打开是定义的一部分(例如,存在一个光线标识着门),那么您就不能再问门是否可以打开:不能打开的门首先就不会被识别为门。如果您有一个标准,例如,您说门必须是标记为DOOR的GROUP(而不是以门形排列的一堆基本LINE实体),则可以这样做。 - LSerni
@NoIdeaForName 如果是2D的话,我的回答如下...但如果你有3D模型(带有实体),使用Intersects可能会更容易。 - Augusto Goncalves
4个回答

6

你可以这样做,但并不容易。

AutoCAD .DWG文件基本上只是几何图形(线条和弧线)。你可能有一些组织良好的文件块,比如说“门”块,但它并非百分之百可信:例如,你可能有“Door1”和“Out Patio Door”作为块名称。

对于这两种情况,主要问题在于理解几何形状并进行某种解释。假设您能够这样做,那么您有一些路径选择:

  • 在AutoCAD上运行进程内插件:这可以通过C++、.NET(C#、VB.NET)、LISP或VBA实现。有大量资源,如DevCenterblogblog
  • 作为库使用以访问对象,如RealDWG或其他开源库。这可能有些棘手,需要编程(如上所述)。
  • 使用Web服务,如AutoCAD I/O,上传.DWG和.DLL(.NET)代码,分析您的图纸。
为了解释几何(使用上述任何一种方法),BRep API是分析几何的最佳方式,如交点和其他关系。在博客中,您会发现一些相关示例,但我不认为有关于这个领域的东西。请查看此处此处
最后,总结一下,使用.NET,您需要Autodesk.AutoCAD.DatabaseServices命名空间,其中包括Line、Arc、BlockReference和相应的IntersectWith方法来进行一些基本分析。
现在,如果您有一个AutoCAD Architecture .DWG图纸,由于一些基本对象已经作为API的一部分提供,例如墙和门,所以这可能会更容易。我不确定是否是这种情况,但如果是,请查看this link

1
现有的SDK可以让您检查dwg文件中的AutoCAD实体和数据。 将AutoCAD实体(线、弧、块等)识别为您感兴趣的内容(门、窗、柜子等)需要您将这些实体标识为此类内容。您可以使用嵌入在AutoCAD实体中的属性或隐藏数据来完成这项工作。属性是AutoCAD中的内置功能。隐藏嵌入数据需要自定义编程。

1

RealDWG的价格虚高。但是你可以使用Teigha。它的成本较低,但功能强大。此外,你还可以阅读DWG规范


0

您可以使用开源 LibreDWG 库来运行许多AutoCAD本地命令,例如 DATAEXTRACTION,它能够解析文件并提取内容。

Mixpeek 是一个免费的选项,可以实现这一点:

pip install mixpeek

from mixpeek import Mixpeek  
  
mix = Mixpeek(  
    api_key="my-api-key"  
)  
  
mix.index("design_spec.dwg")

这个 /index 端点将提取您的DWG文件的内容,然后您可以搜索术语进行分析。

mix.search("retainer", include_context=True)

[  
    {  
        "file_id": "6377c98b3c4f239f17663d79",  
        "filename": "design_spec.dwg",  
        "context": [  
            {  
                "texts": [  
                    {  
                        "type": "text",  
                        "value": "DV-34-"  
                    },  
                    {  
                        "type": "hit",  
                        "value": "RETAINER"  
                    },  
                    {  
                        "type": "text",  
                        "value": "."  
                    }  
                ]  
            }  
        ],  
        "importance": "100%",  
        "static_file_url": "s3://design_spec_1.dwg"  
    }  
]

更多文档请参考:https://docs.mixpeek.com/,以及一篇文章:https://medium.com/@mixpeek/search-the-contents-of-dwg-files-with-python-1fd2fc0772af


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接