找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2055|回复: 13

[VBA程序]:怎样通过VB来加载lisp程序

[复制链接]
发表于 2002-10-28 18:52:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
我用VB和lisp编程,现在想在vb中控制autocad加载lisp程序,可以使用sendkeys函数向autocad发送字符(load "a.lsp")来加载a.lsp。但这样acad的命令行会出现(load "a.lsp"),有没有办法让acad不出现提示呢?或者有没有其他的加载方法?(不使用修改acad.lsp及acadr**.lsp的方式)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-10-29 12:01:12 | 显示全部楼层
在括号后加一个空格即可。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-29 15:38:55 | 显示全部楼层
SendKeys "{(}load" & Chr(34) & "a.lsp" & Chr(34) & "{)} "

是这样吗?不管用。会出现这东东,我的意思是想不让它出现。
Command: (load"a.lsp")

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

使用道具 举报

发表于 2002-10-30 08:42:27 | 显示全部楼层
可以用AutoCAD文档对象的.SendCommand方法,假如CurDoc为当前文档,则为:
CurDoc..SendCommand "(load" & Chr(34) & "a.lsp" & Chr(34) & ")_"
其中"_"代表空格。


不过,我建议不要用VB,不如用VBA来得方便,我曾经也想用VB作一个控制台,但后来放弃了。
如不借以,我们可以交流一些体会,我的EMAIL:LIJIAO@CENSTAR.COM
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-30 11:12:00 | 显示全部楼层
噢,我再试试
vb当然不会有vba那么方便,不过如果是为自己用的方便而编程的话可以用vba,不过我是给单位编的商用软件,用vba不太合适,你说呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-10-30 11:49:57 | 显示全部楼层
没想到遇到了高手,真是三生有幸。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-30 11:55:40 | 显示全部楼层
哪里哪里,没看我问的问题多幼稚,要学的东西太多了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-30 12:15:31 | 显示全部楼层
还是不行,怎么回事呢?运行后能调出acad窗口,但是没有其他的反应。SendCommand是不是在vba下才能用啊?以下是调试代码

另一个问题,我在vb中引用了acad.tlb类型库,在acaddoc后键入小数点后应该出现可用的方法及属性,但是并没出现,是什么原因?

Private Sub Command1_Click()
    Dim acadapp As Object      '建立Application对象
    Dim acaddoc As Object      '建立Document对象
    Dim mospace As Object      '建立Model Space 对象
    On Error Resume Next
    Set acadapp = GetObject(, "autocad.application")   '若AutoCad已启动 , 则直接得到
    If Err Then
        Err.Clear
        Set acadapp = CreateObject("autocad.application")   '若AutoCad未启动,则运行它
        If Err Then
            MsgBox Err.Description, , "错误"
            Exit Sub
        End If
    End If

    AppActivate "AutoCAD"

acadapp.SendCommand "(load" & Chr(34) & "a.lsp" & Chr(34) & ") "
acaddoc.SendCommand "_Circle" & vbCr & "2,2,0" & vbCr & "4" & vbCr

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

使用道具 举报

 楼主| 发表于 2002-10-30 12:49:54 | 显示全部楼层
在acad2002的vba中可以用sendcommand,但是还是有(load "a.lsp")的提示,加空格只是起回车的作用,好像不行耶
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-10-31 09:12:41 | 显示全部楼层
1、在定义变量时,应该这样定义:
   Dim CADApp As AutoCAD.AcadApplication
      Dim CADdoc As AcadDocument
      Dim CADmod As AcadModelSpace
2、CADApp无SendCommand方法,CADdoc才有。
3、你需要熟悉一下AUTOCAD的对象模型,以及他的属性、事件和方法等。
4、因我的上网时间有限制(8:00~10:00),不能及时回答你,很抱歉,但我可以随时接收EMAIL。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-31 10:03:31 | 显示全部楼层
我改成这样,不过运行后一点反应都没有,你行行好,给我贴个可用的代码嘛,好不好

Dim CADApp As AutoCAD.AcadApplication
Dim CADdoc As AcadDocument
Dim CADmod As AcadModelSpace
    Set CADApp = GetObject(, "autocad.application")   '若AutoCad已启动 , 则直接得到
  Set CADdoc = CADApp.Documents
    Set CADmod = CADdoc.ModelSpace

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

使用道具 举报

发表于 2002-11-14 12:25:35 | 显示全部楼层
VB不太懂这有个例子
Sub Example_SendCommand()
   ' This example sends a command to the AutoCAD commandline
   ' of a particular drawing for evaluation
   
   ' We will create a Circle in the active drawing and will
   ' zoom to display the entire circle
   ThisDrawing.SendCommand "_Circle" & vbCr & "2,2,0" & vbCr & "4" & vbCr
   ThisDrawing.SendCommand "_zoom" & vbCr & "a" & vbCr
   
   ' Refresh view
   ThisDrawing.Regen acAllViewports
   
   MsgBox "A circle command has been sent to the command line of the current drawing."
End Sub
希望对你有用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-11-14 12:58:15 | 显示全部楼层
谢谢你的回帖,sendcommand 的使用我已经会了,它不能达到 “不在acad命令行出现信息提示” 的效果。可能只能用其他方法了。如果你知道,还请你告诉我。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-9-16 08:08:47 | 显示全部楼层
我也想知道后来楼主怎样解决呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 08:46 , Processed in 0.191462 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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