vb连接cad为什么老是报错“ActiveX控件不能创建对象”,cad工程已经引用了啊

[复制链接]
查看11 | 回复10 | 2021-1-27 05:51:23 | 显示全部楼层 |阅读模式
想用vb连接cad自动画图,已经在工程中引用了cad对象,为什么还是报错“ActiveX控件不能创建对象”
这是我的代码
PrivateSubCommand1_Click()
DimcadAsAcadApplication
Setcad=GetObject(,"AutoCAD.Application")
IfErrThen
Err.Clear
Setcad=CreateObject("AutoCAD.Application")
EndIf
cad.Visible=True
EndSub
我觉得没有错啊,一开始以为是cad版本的问题然后试了试具体版本号的代码(我的cad是2014)
PrivateSubCommand1_Click()
DimcadAsAcadApplication
Setcad=GetObject(,"AutoCAD.Application.19")
IfErrThen
Err.Clear
Setcad=CreateObject("AutoCAD.Application.19")
EndIf
cad.Visible=True
EndSub
还是不能解决,抓狂!求大神帮忙,分数已经快没了,真心感谢1
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:51:23 | 显示全部楼层
你装的是不是“绿色版”的CAD?
你在VB的引用里面能不能看到CAD?

回复

使用道具 举报

千问 | 2021-1-27 05:51:23 | 显示全部楼层
引用1楼chewinggum的回复:你装的是不是“绿色版”的CAD?
你在VB的引用里面能不能看到CAD?

应该不是吧。
他已经“引用”了,肯定能“看到”啊。
要不然,在DimcadAsAcadApplication就提示“类型没有定义”(大概是这样的错误提示吧)之类的了。

回复

使用道具 举报

千问 | 2021-1-27 05:51:23 | 显示全部楼层
我在想,会不会是CAD软件本身的问题啊。
它的“COM接口”兼容性(或“适应性”)不好,某些环境中不能正常运作。


回复

使用道具 举报

千问 | 2021-1-27 05:51:23 | 显示全部楼层
DimcadAsnewAcadApplication
走起
回复

使用道具 举报

千问 | 2021-1-27 05:51:23 | 显示全部楼层
引用4楼chewinggum的回复:DimcadAsnewAcadApplication
走起

小心一点按钮,然后提示“OLE自动化错误”之类的(大概是这个意思的……)。


回复

使用道具 举报

千问 | 2021-1-27 05:51:23 | 显示全部楼层
不要以为用了New、代码中不用写CreateObject了,那么“Create”的过程就真的跳过了……
事实上只是“它帮你做了”而已。

回复

使用道具 举报

千问 | 2021-1-27 05:51:23 | 显示全部楼层
引用3楼Chen8013的回复:我在想,会不会是CAD软件本身的问题啊。
它的“COM接口”兼容性(或“适应性”)不好,某些环境中不能正常运作。


但是有个奇怪的问题,当我把SetMyCad=GetObject(,"AutoCad.application.19")去掉,直接在cad未打开的情况下用createobject,可以连接cad
然后再cad已打开的情况下用getobject,就可以get到cad。。。。,气炸了。。。。
回复

使用道具 举报

千问 | 2021-1-27 05:51:23 | 显示全部楼层
引用5楼Chen8013的回复:Quote: 引用4楼chewinggum的回复:
DimcadAsnewAcadApplication
走起

小心一点按钮,然后提示“OLE自动化错误”之类的(大概是这个意思的……)。


但是我再代码最前面加上onerrorresumenext,然后去掉if的判断语句,就可以运行代码,但是我不想用onerroeresumenext,
怕后面的程序有错误,找不出来,其实用onerror和iferr都是为了判断cad是否打开,为什么就是iferr语句每次都会出现无法创建
对象的错误呢,哎
回复

使用道具 举报

千问 | 2021-1-27 05:51:23 | 显示全部楼层
在64位Windows下:
64位exe和dll在目录c:\windows\system32目录下;
32位exe和dll在目录c:\windows\syswow64目录下;
所以要注意:
在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
且注册要用c:\windows\syswow64\regsvr32xxxxxxx.ocx或dll
64位Windows平台注意点之文件系统重定向http://www.cnblogs.com/jiake/p/4981555.html
64位Windows平台注意点之注册表重定向http://www.cnblogs.com/jiake/p/4956218.html

回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行