用VB6阅读Autocad绘图

用VB6阅读Autocad绘图,vb6,autocad,Vb6,Autocad,我需要打开并读取Autocad文件的内容,该文件包含建筑物的信息—墙、窗等,并读取该信息并对其进行分类。由于这些Autocad文件各不相同,我需要有经验的人来建议我如何确定是否存在窗口(例如)。 此外,能够提取墙的内部、外部等信息将非常有用。首先,您需要从Autodesk下载ObjectArx软件包。 安装它并创建新的Autocad加载项 我知道有两种工作方式: 使用Arx或互操作。我只对互操作有经验,但Arx的工作方式与此完全相同。(我选择Interop是因为它使用与Autocad的VBA相同

我需要打开并读取Autocad文件的内容,该文件包含建筑物的信息—墙、窗等,并读取该信息并对其进行分类。由于这些Autocad文件各不相同,我需要有经验的人来建议我如何确定是否存在窗口(例如)。
此外,能够提取墙的内部、外部等信息将非常有用。

首先,您需要从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
对象逐个进行比较,以测试它们是否平行,并且距离是否小于墙的最大厚度

这些规则对于您的情况以及图纸的制作方式非常具体。

检查: