用VB6阅读Autocad绘图
我需要打开并读取Autocad文件的内容,该文件包含建筑物的信息—墙、窗等,并读取该信息并对其进行分类。由于这些Autocad文件各不相同,我需要有经验的人来建议我如何确定是否存在窗口(例如)。用VB6阅读Autocad绘图,vb6,autocad,Vb6,Autocad,我需要打开并读取Autocad文件的内容,该文件包含建筑物的信息—墙、窗等,并读取该信息并对其进行分类。由于这些Autocad文件各不相同,我需要有经验的人来建议我如何确定是否存在窗口(例如)。 此外,能够提取墙的内部、外部等信息将非常有用。首先,您需要从Autodesk下载ObjectArx软件包。 安装它并创建新的Autocad加载项 我知道有两种工作方式: 使用Arx或互操作。我只对互操作有经验,但Arx的工作方式与此完全相同。(我选择Interop是因为它使用与Autocad的VBA相同
此外,能够提取墙的内部、外部等信息将非常有用。首先,您需要从Autodesk下载ObjectArx软件包。 安装它并创建新的Autocad加载项 我知道有两种工作方式: 使用Arx或互操作。我只对互操作有经验,但Arx的工作方式与此完全相同。(我选择Interop是因为它使用与Autocad的VBA相同的ActiveX库。因此,可以使用Interop执行的任何操作都可以使用VBA执行) 查找向导以创建Autocad加载项的项目模板 然后参考
Autodesk.Autocad.Interop
库
在加载项中,可以从Autodesk.autocad.ApplicationServices.application获取autocad应用程序
要使用应用程序的互操作版本,请将Autodesk.AutoCAD.ApplicationServices.application.AcadApplication
作为AcadApplication
类型获取
从应用程序中,您可以获得文档
集合以及活动文档
从文档中,您可以获得ModelSpace
和PaperSpace
您可以从中获得项
s,其类型为AcadEntity
AcadEntity是图形中显示的所有Autocad对象的基本类型。
因此,所有的墙和窗都将由一组AcadEntity
对象构成
但是AcadEntity
可以具有派生类型,例如AcadLine
(直线)、AcadLWPolyline
(带高程的二维多段线)、AcadCircle
等等
现在,您必须知道窗和墙在图形中是如何制作的,才能找到它们。如果是积木,那就很容易了。
只需在模型空间或图纸空间(或任何autocad块,因为图纸空间和模型空间被视为块)中选择所有AcadEntity
对象,这些对象都是AcadBlockReference
每个AcadBlockReference
表示在图形中插入块并包含其参数
但是,如果墙和窗是用线手工制作的,则必须稳定一些规则来搜索它们,例如将AcadLine
对象逐个进行比较,以测试它们是否平行,并且距离是否小于墙的最大厚度
这些规则对于您的情况以及图纸的制作方式非常具体。检查: