用好多大侠都在问从 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 图形。 |