明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2426|回复: 7

CAD中用LISP程序调用VBA的问题

[复制链接]
发表于 2012-9-25 22:14:05 | 显示全部楼层 |阅读模式
我试图用LISP程序通过快捷键在CAD中调用VBA程序
LISP程序为:
(defun c: Draw2Line()
    (setvar "cmdecho" 0)
    (command "-vbarun" "DrawLine.dvb!Draw2Line")
    (setvar "cmdecho" 1)  
(princ)
)
其中快捷键为Draw2Line
VBA程序为:
Sub Draw2Line()
   Dim FromPnt As Variant
   Dim MidPnt As Variant
   Dim ToPnt As Variant
   Dim line1 As AcadLine
   Dim line2 As AcadLine
   
   ThisDrawing.Utility.Prompt vbCr & "绘制两段线段程序" & vbCrLf
   FromPnt = ThisDrawing.Utility.GetPoint(, vbCr & "指定起点:")
   MidPnt = ThisDrawing.Utility.GetPoint(FromPnt, vbCr & "指定下一点:")
   Set line1 = ThisDrawing.ModelSpace.AddLine(FromPnt, MidPnt)
   line1.color = acRed
   ToPnt = ThisDrawing.Utility.GetPoint(MidPnt, vbCr & "指定终点:")
   Set line2 = ThisDrawing.ModelSpace.AddLine(MidPnt, ToPnt)
   line2.color = acYellow
      
End Sub
可问题是当我加载以上LISP程序时,命令行就报错,说是语法错误,我不知道是哪里错了   哪位大侠能指点迷津???我不胜感激!!!!!
另外我还用另外的两个LISP程序也不行,望指出错误,谢谢!!
LISP2:
(vl-load-com)
(vl-vbaload(findfile "DrawLine.dvb"))
(defun c: Draw2Line()
   (vl-vbarun "Draw2Line")
   (princ)
)   
LISP3:
(vl-load-com)
(defun AutoVBALoad(cmdname project macro)
   (eval
      (list 'defun
              (read(strcat "C: " cmdname))
              nil
              (list  'vl-vbarun
                  (stract    project   "!"
                      (if macro macro cmdname)
                  )
              )
              (princ)
      )
   )
)   
(AutoVBALoad "Draw2Line" "DrawLine.dvb" "Draw2Line")
发表于 2012-9-25 23:55:56 | 显示全部楼层
本帖最后由 sscylh 于 2012-9-26 13:53 编辑

试一下在 (command "-vbarun" "DrawLine.dvb!模块1.Draw2Line"),在文件名里面输入他的绝对地址?
发表于 2012-9-27 12:03:41 | 显示全部楼层
喜欢中....哈哈哈?~!















发表于 2012-9-27 21:45:53 | 显示全部楼层
按LISP语法,"defun c:"后面不能有空格
 楼主| 发表于 2012-9-28 23:47:08 | 显示全部楼层
sscylh 发表于 2012-9-25 23:55
试一下在 (command "-vbarun" "DrawLine.dvb!模块1.Draw2Line"),在文件名里面输入他的绝对地址?

不是的,这个程序是在THISDRAWING里面的,是绝对地址了。
发表于 2012-9-29 11:05:26 | 显示全部楼层
DrawLine.dvb在哪里?加上路径。
 楼主| 发表于 2012-9-29 19:54:19 | 显示全部楼层
woaishuijia 发表于 2012-9-27 21:45
按LISP语法,"defun c:"后面不能有空格

你说的对,去掉空格之后就行了,那后面的两个调用程序的问题在哪里,你知道吗,告诉我呗,谢谢!
 楼主| 发表于 2012-9-29 19:55:24 | 显示全部楼层
第一个问题都已经解决了,至于2和3问,有木有大侠能知道的,请赐教!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 16:03 , Processed in 0.157268 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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