我需要打开并阅读Autocad文件的内容,其中包含建筑物墙壁,窗户等信息,并读取和分类该信息。由于这些Autocad文件各不相同,我需要有经验的人告诉我如何确定是否有窗口。 此外,能够为内部,外部等提取信息非常有用......
答案 0 :(得分:2)
首先,您需要从Autodesk下载ObjectArx包。 安装它并创建一个新的Autocad Addin。
我知道有两种工作方式:
使用Arx或Interop。我只有互操作经验,但Arx的工作方式完全相同。 (我选择了Interop,因为它使用与Autocad的VBA相同的ActiveX库。所以你可以使用VBA对Interop做任何事情)
找一些向导为Autocad加载项创建项目模板。
然后引用Autodesk.Autocad.Interop
库。
在插件中,您可以从Autodesk.AutoCAD.ApplicationServices.Application
获取autocad应用程序。
要使用应用程序的Interop版本,请将Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication
设为AcadApplication
类型。
从应用程序中,您可以获得Documents
集合以及ActiveDocument
。
从文档中,您可以获得ModelSpace
和PaperSpace
。
从那些Item
获取AcadEntity
类型,AcadEntity
。
AcadEntity是图形中显示的所有Autocad对象的基本类型。
因此,所有的墙和窗户都将由一组AcadEntity
个物体组成。
但AcadLine
可以有衍生类型,例如AcadLWPolyline
(行),AcadCircle
(带有高程的折线2d),AcadEntity
等等。
现在你必须知道如何在图纸中制作窗户和墙壁才能找到它们。如果它们是块,那将非常容易。
只需在模型空间或起始空间(或任何autocad Block,因为起始空间和模型空间被视为块)中选择AcadBlockReference
的所有AcadBlockReference
个对象。
每个AcadLine
表示在图形中插入一个块并包含它的参数。
但是如果墙壁和窗户是用线条手工制作的,那么你将不得不稳定一些规则来搜索它们,例如比较各自的{{1}}个对象,以测试它们是否平行并且距离较低比墙壁可以有的最大厚度。
这些规则将非常适合您的情况以及如何制作图纸。