明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1318|回复: 2

[转帖]从 Visual Basic 连接至 AutoCAD

[复制链接]
发表于 2008-4-7 09:16:00 | 显示全部楼层 |阅读模式

用好多大侠都在问从 Visual Basic 连接至 AutoCAD 的问题。

在此转帖autocad的帮助文件,各位大侠只要经常使用AutoCAD的帮助文件,会有很多益处。

要更新代码样例以在 VB 中使用,必须先引用 AutoCAD 类型库。要在 VB 中完成此操作,请从“工程”菜单中选择“引用”选项,启动“引用”对话框。在“引用”对话框中,选择 AutoCAD 类型库,然后单击“确定”。

下一步,将代码样例中所有的 ThisDrawing 引用替换为引用活动文档的用户指定的变量。要完成这项操作,请为 AutoCAD 应用程序 (acadApp) 和当前的文档 (acadDoc) 定义变量。然后,将应用程序变量设置为当前的 AutoCAD 应用程序。

如果 AutoCAD 正在运行,指定 AutoCAD 版本号时,VB GetObject 函数将检索 AutoCAD Application 对象。如果 AutoCAD 没有运行,发生的错误(本例中)会被捕获然后清除。CreateObject 函数接着会试图创建一个 AutoCAD Application 对象。如果创建成功,会启动 AutoCAD;如果失败,则会显示一个消息框,说明发生的错误。

同时运行多个 AutoCAD 任务时,GetObject 函数会返回 Windows 运行对象表中的第一个 AutoCAD 实例。关于验证 GetObject 返回任务的详细信息,请参见 Microsoft Visual Basic 文档中关于对象运行表 (ROT) 和 GetObject 函数的部分。

要显示 AutoCAD 图形窗口,需要将 AutoCAD 应用程序的 Visible 特性设置为 TRUE。

如果 GetObject 创建了一个新的 AutoCAD 实例(即调用 GetObject 时 AutoCAD 没有运行),没有将 Visible 设置为 TRUE 会导致 AutoCAD 应用程序不可见,甚至 AutoCAD 不显示在 Windows 任务栏上。

注意  使用依赖于版本的 ProgID。如果 CreateObject 或 GetObject 函数使用的是独立于版本的 ProgID,则将函数更改为使用依赖于版本的 ProgID。例如,如果使用的是 CreateObject,请将 CreateObject ("AutoCAD.Application") 替换为 CreateObject ("AutoCAD.Application.16")。此外,如果 GetInterfaceObject 方法使用的是独立于版本的 ProgID,则必须将该方法更改成使用依赖于版本的 ProgID。

本例使用 Err 的 Clear 和 Description 特性。如果用户编码环境不支持这些特性,则需要适当修改样例:

Sub Ch2_ConnectToAcad()
    Dim acadApp As AcadApplication
    On Error Resume Next
	
    Set acadApp = GetObject(, "AutoCAD.Application.16")
    If Err Then
        Err.Clear
        Set acadApp = CreateObject("AutoCAD.Application.16")
        If Err Then
            MsgBox Err.Description
            Exit Sub
        End If
    End If
    MsgBox "Now running " + acadApp.Name + _
           " version " + acadApp.Version
End Sub

接着,将文档变量设置为 AutoCAD 应用程序中的 Document 对象。Document 对象由 Application 对象的 ActiveDocument 特性返回。

Dim acadDoc as AcadDocument
Set acadDoc = acadApp.ActiveDocument

从现在开始,使用 acadDoc 变量引用当前的 AutoCAD 图形。

发表于 2008-4-7 12:30:00 | 显示全部楼层
一般来说,你将acadDoc变量改名为ThisDrawing变量,就跟VBA一样了。我一般这样写,所以可以先在VBA中调试,再直接转换到VB中去。
发表于 2008-4-17 22:27:00 | 显示全部楼层

如果关闭了当前的文档窗口,没有关闭autocad软件,菜单栏只剩下“文件”、“视图”、“窗口”、“帮助”四个选项时,如果再运行连接cad的话,会在

Set acadDoc = acadApp.ActiveDocument这出错,这个该怎么处理??

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 08:25 , Processed in 0.139140 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表