使用VB6读取Autocad绘图

时间:2013-06-17 08:15:32

标签: vb6 autocad

我需要打开并阅读Autocad文件的内容,其中包含建筑物墙壁,窗户等信息,并读取和分类该信息。由于这些Autocad文件各不相同,我需要有经验的人告诉我如何确定是否有窗口。 此外,能够为内部,外部等提取信息非常有用......

1 个答案:

答案 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

从文档中,您可以获得ModelSpacePaperSpace

从那些Item获取AcadEntity类型,AcadEntity

AcadEntity是图形中显示的所有Autocad对象的基本类型。 因此,所有的墙和窗户都将由一组AcadEntity个物体组成。

AcadLine可以有衍生类型,例如AcadLWPolyline(行),AcadCircle(带有高程的折线2d),AcadEntity等等。

现在你必须知道如何在图纸中制作窗户和墙壁才能找到它们。如果它们是块,那将非常容易。 只需在模型空间或起始空间(或任何autocad Block,因为起始空间和模型空间被视为块)中选择AcadBlockReference的所有AcadBlockReference个对象。

每个AcadLine表示在图形中插入一个块并包含它的参数。

但是如果墙壁和窗户是用线条手工制作的,那么你将不得不稳定一些规则来搜索它们,例如比较各自的{{1}}个对象,以测试它们是否平行并且距离较低比墙壁可以有的最大厚度。

这些规则将非常适合您的情况以及如何制作图纸。