VB6程序与AutoCAD交互,是不是能够再创造,或绑定到ACAD对象
堆栈,VB6程序与AutoCAD交互,是不是能够再创造,或绑定到ACAD对象
要开始,该网站是太棒了,你帮助我度过了很多过去的问题;谢谢。
展望未来,该方案已经存在,并且在使用中,因为2000年的AutoCAD软件的最新版本兼容高达ACAD 2017年
我有一个小团队中工作,突然冒出来,我的电脑正在与VB6/AutoCAD组合拼搏;其他开发商仍然没有问题的工作......
后期绑定用于获取或创建的对象;取决于Acad是否已经在运行......例如,
Set oAutoCad = GetObject(, "Autocad.Application")
If err.Number Then
err.Clear
Set oAutoCad = CreateObject("Autocad.Application")
If err.Number Then
MsgBox UCase$("Unable to launch AutoCAD Session")
End
Else
oAutoCad.Visible = True
End If
End If
有两种不同的可执行文件(使用相同的绑定技术)与ACAD一起工作来完成不同的任务。对于他们两个人来说,软件在CreateObject和GetObject上都失败,“运行时错误429 - ActiveX组件不能创建对象。但是,向该调用添加'.20'可以创建一个对象,但我仍然可以'牛逼绑定到现有的如..
Call CreateObject("Autocad.Application.20")
我相信我自己和球队之间的区别是,我最近有经过一番“访问注册表时出错”问题浮出水面重新安装VB6(后立即Windows更新......奇怪的),这是很大的区别。每个人都已经从7迁移到10 VB6安装我的第一个10台机器直接安装在Windows
我们大家。最初使用SP6和VB6,但这个问题已经引起了我的注意。显然,他们仍在更新服务包。所以,电脑最近已经更新为SP6D。我也尝试安装累积服务包。
我试图从运7,运8更改兼容性设置,XP的(所有的)......我不知道。
我以管理员身份运行
这是一个64位的机器。
已经安装了原始的VB6 MSDN库...出于某种原因,SP6将无法正确安装,直到它...因此,实际的VB6安装被挂起。这似乎并不影响很大,但必须在后台做什么(或不做)
任何帮助将不胜感激......我们也希望。
*******新信息******* 显然,添加'.20'只适用于其中一个exes,另一个需要和附加版本号(例如“Autocad .Application.20.1“)
为了让它更有趣,如果我用'20.1'开始项目,在创建对象时停止代码,等待autocad启动,将其设置为可见,打开绘制我需要连接到使用ACAD UI,然后让程序继续运行,则GetObject不会失败...
????
后似乎像搜索的一个永恒的,我在这里找到了答案......
Late binding run-time error in VB6 when creating an object from a .NET assembly
它的要点是这样的......
使用的CreateObject/GetObject的类ID(CLSID)您调用存储在注册表...无论是HKEY_CLASSES_ROOT配置单元下和HKEY_LOCAL_MACHINE配置单元下(类) - (AutoCAD.Application)(.X)
似乎CreateObject调用使用HKEY_CLASSES_ROOT,而GetObject可能使用HKEY_LOCAL_MACHINE ...我不知道,但它可以解释为什么CreateObject调用正在工作,而不是GetObject。我的HKEY_LOCAL_MACHINE配置单元在某种程度上缺少'AutoCAD.Application'键;可能是由于卸载或某种更新......我不确定。
我所知道的是通过比较配置单元之间的值并将“CurVer”值和“CLSID”值添加到新创建的“AutoCAD.Application”键中,该程序现在可以创建并绑定指定一个版本(例如..
CreateObject("AutoCAD.Application")
GetObject(, "AutoCAD.Application")
的,而不是...
CreateObject("AutoCAD.Application.20.1")
GetObject(, "AutoCAD.Application.20")
甚至更糟
运行时错误429:的ActiveX组件无法创建对象
再次感谢Stack。