Lupo76 发表于 2017-1-26 14:05:02

Vb6并设置acadApp=GetObject(,“AutoCAD.Application”)

大家好,很多年前,我用VB6编写了一个应用程序,并编译了一个EXE文件
它运行得很好,在BricsCAD中仍然有效
然而,在AutoCAD 2016和Windows 7 64位中,它不起作用
我觉得问题出在64位窗口上
不幸的是我'我对VB6非常生疏,因为他们已经多年没有使用这种编程语言了。这是我写的代码:
            If UserForm7.Option1.Value = True Then
                'AutoCAD FULL
                MsgBox "AutoCAD"
                Set acadApp = GetObject(, "AutoCAD.Application")
             Else
                'BricsCAD
                MsgBox "BricsCAD"
                Set acadApp = GetObject(, "BricscadApp.AcadApplication")
            End If
            
            acadApp.Visible = True
            
            Dim acadDoc As Object
            Set acadDoc = acadApp.ActiveDocument
         
            ReturnPnt = acadDoc.Utility.getpoint(, "Point base: ")

有什么方法可以使其在AutoCAD Is Windows 7(64位)中工作吗??

Roy_043 发表于 2017-1-27 09:18:30

你能用这个代替吗
Set acadApp = ThisDrawing.Application

57gmc 发表于 2017-1-27 10:11:09

@罗伊,不,不会的;t工作
是的,Win7是64位的,但更重要的是,acad 2016是64位。它还使用VBA7(需要安装它才能响应代码)。如果在提示下键入VBAMAN,将出现一个错误对话框,其中包含下载vba安装的链接。您还需要升级Visual Studio。有免费版本,所以有#039;没有必要继续使用VB6。

Lupo76 发表于 2017-1-27 10:23:47

也许,我已经找到了一个解决方案,并且没有安装VBA
应用程序实际上是用VB6编写的,没有VBA
如果解I'我发现它工作正常,超过了上次测试I#039;我会回来拿回来的

57gmc 发表于 2017-1-27 10:37:46

可能acad cad在未安装vba的情况下响应COM调用。我没有#039;t试过了。但您可能仍然需要更新版本的VB。

n.yuan 发表于 2017-1-27 10:38:42

由于您运行独立的EXE以将AutoCAD作为进程外实例进行自动化,因此您的应用程序是否为32位EXE应用程序以及AutoCAD(2016)是否为64位应用程序都不重要。但是,您显示的代码按原样在VB6应用程序中使用,仅当AutoCAD(或BricsCAD)已在同一台计算机中运行(即,必须存在正在运行的AcadaApplication实例)时,它才起作用。否则,代码将在此行引发异常。Visible=True,并使您的EXE应用程序崩溃。

Lupo76 发表于 2017-1-27 12:46:54

我在第一条消息中输入的代码是正确的
我在其他电脑上做了一些测试,工作正常
但是,如果在PC中安装了AutoCAD和BricsCAD,则代码请求必须指定AutoCAD版本。例如Set acadApp = GetObject(, "AutoCAD.Application.20.1")
PS。无需安装VBA!

zzyong00 发表于 2017-10-20 11:13:27

尝试:以管理员身份运行

gps77 发表于 2017-11-9 15:29:56

大家好,这些链接最终帮助我解决了这个问题。确保设置CLSID和AutoCAD.Application。21(数字)到相应的AutoCAD版本(此版本适用于AutoCAD 2017)。在注册表中查找。它甚至可以在Windows 10上与visual basic 5和64位AutoCAD 2017配合使用https://stackoverflow.com/questions/40656440/vb6-program-interacting-with-autocad-is-not-longer-able-to-create-or-bind-to-thttps://stackoverflow.com/questions/9125424/late-binding-run-time-error-in-vb6-when-creating-an-object-from-a-net-assembly
Windows Registry Editor Version 5.00

@="AutoCAD Application 21"

@="{0D327DA6-B4DF-4842-B833-2CFF84F0948F}"

@="AutoCAD Application"

@="{0D327DA6-B4DF-4842-B833-2CFF84F0948F}"

@="AutoCAD.Application.21"


@="{0D327DA6-B4DF-4842-B833-2CFF84F0948F}"

@="AutoCAD Application"

@="{0D327DA6-B4DF-4842-B833-2CFF84F0948F}"

@="AutoCAD.Application.21"
页: [1]
查看完整版本: Vb6并设置acadApp=GetObject(,“AutoCAD.Application”)