明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2122|回复: 7

[已解答] gu_xl版主及懂VB的朋友请进

[复制链接]
发表于 2015-12-30 17:44:39 | 显示全部楼层 |阅读模式
本帖最后由 masterlong 于 2015-12-30 17:48 编辑

下面是根据G版的一段代码改造的
Set fs = CreateObject("Scripting.FileSystemObject")
Set ws = CreateObject("WScript.Shell")
Path = fs.GetParentFolderName(WScript.ScriptFullName)
Set fs = Nothing : Set ws = Nothing
On Error Resume Next
Set objCAD = GetObject(, "AutoCAD.Application")
If Err Then
    Err.Clear
    MsgBox "未发现已打开的AutoCAD,请开启AutoCAD后,打开文件夹【D:\某程序\】执行手动安装"
Else
  Set ThisDrawing = objCAD.activedocument
  Path = replace (Path , "\" ,"\\")
  ThisDrawing.SendCommand ("(load ""D:\\某程序\\模拟安装.lsp"")" & vbCr)
End If

这段代码保存为“双击我自动加载.vbs”
主要用于我的一个程序的安装
安装包自动解压至指定目录后自动在CAD中进行加载
由于某些原因
不想使用秋枫大侠的安装程序

现在的问题是
我使用的是xp+CAD2004
上述代码没有问题
但我在xp+CAD2012中测试时
提示没有找到CAD
请问上述代码如何修改
才能适用于xp、win7 & CAD2004~2012
望各位大侠出手
不尽感激

下面是模拟的程序安装包



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2015-12-30 23:03:35 | 显示全部楼层
  1.     On Error Resume Next
  2.     Set objcad = GetObject(, "AutoCAD.Application")
  3.     If Err Then
  4.         Err.Clear
  5.         'MsgBox "未发现已打开的AutoCAD,请开启AutoCAD后,打开文件夹【D:\某程序\】执行手动安装"
  6.         Set objcad = CreateObject("AutoCAD.Application")
  7.         objcad.Visible = True
  8.         Set ThisDrawing = objcad.activedocument
  9.         Path = Replace(Path, "\", "\\")
  10.         ThisDrawing.SendCommand ("(load ""D:\\某程序\\模拟安装.lsp"")" & vbCr)
  11.         
  12.     Else
  13.         Set ThisDrawing = objcad.activedocument
  14.         Path = Replace(Path, "\", "\\")
  15.         ThisDrawing.SendCommand ("(load ""D:\\某程序\\模拟安装.lsp"")" & vbCr)
  16.     End If


评分

参与人数 1明经币 +1 收起 理由
masterlong + 1 感谢大侠出手,运行成功

查看全部评分

发表于 2015-12-31 11:03:32 | 显示全部楼层
提示没找到ACAD的话,应该是getobject这句出问题了。我这里win7X64+Excel2007+ACAD2012,Excel VBA中引用AutoCAD 2012 type library,以下代码能够获得ACAD
Sub aa()
   Set objCAD = GetObject(, "AutoCAD.Application")
End Sub
所以从代码上来看,后期绑定,应该没问题,楼主失败的运行环境是什么?仅打开一个ACAD程序再试下?
发表于 2016-1-2 09:59:39 | 显示全部楼层
Set fs = CreateObject("Scripting.FileSystemObject")
Set ws = CreateObject("WScript.Shell")
Path = fs.GetParentFolderName(WScript.ScriptFullName)
Set fs = Nothing : Set ws = Nothing
On Error Resume Next
Set objCAD = GetObject(, "AutoCAD.Application")
If Err Then
    Err.Clear
    MsgBox "未发现已打开的AutoCAD,请开启AutoCAD后,执行手动安装"
Else
  Set ThisDrawing = objCAD.activedocument
  Path = Replace (Path , "\" ,"\\")   'VBS程序所在目录
  if Right(Path ,2) <> "\\" Then Path =Path & "\\"   '完善路径
  Path = Path & "模拟安装.lsp"   'lsp程序详细路径
  ThisDrawing.SendCommand ("(vl-catch-all-apply 'load (list """ & Path & """))(princ)" & vbCr)   '向CAD发送语句
End If


主要lsp程序和VBS程序放在同一文件夹中,
修改语句:
Path = Path & "模拟安装.lsp"   'lsp程序详细路径
均可自动加载

测试cad04、07、10、16+win7 32位

评分

参与人数 1明经币 +1 收起 理由
masterlong + 1 感谢大侠出手,代码运行成功

查看全部评分

发表于 2016-1-2 10:03:30 | 显示全部楼层
会不会是你的cad12没有安装好?
发表于 2016-1-2 10:04:04 | 显示全部楼层
会不会是你的cad12没有安装好?
发表于 2024-2-23 16:43:58 | 显示全部楼层
不懂不懂不懂不懂不懂不懂不懂
发表于 2024-5-8 21:16:27 | 显示全部楼层
你好!麻烦帮忙看看我这个问题,谢谢
http://bbs.mjtd.com/thread-190110-1-1.html

  ThisDrawing.SendCommand ("(load ""E:\\LZXCAD\\LZXLoad.lsp"")" & vbCr)
  ThisDrawing.SendCommand ("LZXLoadApp" & vbCr)
这样不行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 17:39 , Processed in 0.194093 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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