【问题标题】:Read Autocad Drawing with VB6用VB6阅读AutoCAD绘图
【发布时间】:2013-06-17 08:15:31
【问题描述】:

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

【问题讨论】:

标签: vb6 autocad


【解决方案1】:

首先,您需要从 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 类型。

从应用程序中,您可以获得Documents 集合,以及ActiveDocument

从文档中可以得到ModelSpacePaperSpace

从那些你可以得到Items,它的类型是AcadEntity

AcadEntity 是图形中出现的所有 Autocad 对象的基本类型。 所以所有的墙壁和窗户都会由一组AcadEntity对象组成。

AcadEntity 可以有派生类型,例如AcadLine(线)、AcadLWPolyline(带高程的二维折线)、AcadCircle 等等。

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

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

但是如果墙壁和窗户是用线条手工制作的,那么您将不得不稳定一些规则来搜索它们,例如将AcadLine对象与每个对象进行比较,以测试它们是否平行且距离小于墙的最大厚度。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-09
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 2017-05-04
    • 1970-01-01
    相关资源
    最近更新 更多