找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: god

[VBA函数]:为什么这段vb代码对acad2002有效,对acad2004却无效呢?

[复制链接]
发表于 2003-6-26 08:30:23 | 显示全部楼层
最初由 god 发布
[B]对,是在一台机子上同时装有ACAD2002,ACAD2004,2002没反应,2004有,挺奇怪的吧? [/B]

如果用户最后启动的是2002,调用的就是2002;如果用户最后启动的是2004,调用的就是2004。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-6-26 12:05:55 | 显示全部楼层
自己的一点见解.
AcadApp = GetObject(, "AutoCAD.Application") 是调用ACAD,没有指定2002,2004.
如果指定调用2002的话,用前期绑定,引用类库为好.


lijiao  的解释是否正确,GOD请你试试,结果贴上来,谢谢.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-26 16:42:59 | 显示全部楼层
lijiao说得没错。

据我的经验
如果用Dim AcadApp As AutoCAD.AcadApplication '建立Application对象 就需要前期绑定,
如果用 Dim AcadApp As Object '//应用程序对象声明  '建立Application对象 就不需要前期绑定,即使绑定也没关系。

如用前期绑定,绑定了2000的类型库,就只能调用2002 ,不能调用2004。绑定了2004的类型库,就只能调用2004 ,不能调用2002。

而且2004也不支持以下vb对acad的vlisp用法
  Set vla = CreateObject("VL.Application.1")
    Set vld = vla.ActiveDocument
    Set vl_read = vld.Functions.Item("read")
    Set vl_eval = vld.Functions.Item("eval")
   
    Set vl_hello = vl_read.funcall("(defun hello ()  (load  ""a.lsp"")) ")
    Set vl_hello = vl_eval.funcall(vl_hello)
    Set vl_hello = vld.Functions.Item("hello")
    vl_hello.funcall

如果谁解决了这个问题,请告诉我一声
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-7-6 13:44:32 | 显示全部楼层
urdiafa 说得对,你调用2002用Set AcadApp = GetObject(, "AutoCAD.Application.15") ,调用2004用Set AcadApp = GetObject(, "AutoCAD.Application.16") ,同时安装2002和2004时要先判别是什么版本。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-7-11 17:45:58 | 显示全部楼层
在使用autocad時,用(startapp (findfile "*.exe"))來調用vb程式,在此判斷使用版本,就可正確使用Set AcadApp = GetObject(, "AutoCAD.Application.*") ,我嘗試用 GetActiveWindow API
但抓不到AUTOCAD CAPTION,不知道有沒有更好的辦法
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-7-25 12:57:09 | 显示全部楼层
从注册表找到cad 的注册项,再选择调用的cad版本
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-7-28 15:41:45 | 显示全部楼层
vlisp--->得知正在使用cad注冊項----->告知---->vb
但如何告知vb?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 18:45 , Processed in 0.182364 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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