找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 600|回复: 7

[求助] vba执行lisp函数返回值

[复制链接]

已领礼包: 557个

财富等级: 财运亨通

发表于 2017-4-24 17:22:30 | 显示全部楼层 |阅读模式

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

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

×
我写了一个lisp函数供vba调用,lisp函数我想返回两个变量,一个是坐标,一个是选择集。代码如下:
(defun vbaset2lspset (str delim x y / aa n i tf)
  (setq aa (parse9 str delim) )
  (setq n (length aa))
  (setq i 0)
  (setq ss (ssadd))
  (repeat n
    (setq h (nth i aa))
    (setq tf (handent h))
    (ssadd tf ss)
    (setq i (+ i 1))
  )
  (setq p (list x y 0.00))
  (COMMAND "_move" ss "" p pause "")
  (princ)
)

我想把红色代码提出来放到自己定义的命令里,但是不知道怎么获得坐标变量p和选择集变量ss。请问哪位可以给解决一下。谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 19个

财富等级: 恭喜发财

发表于 2017-4-24 18:01:44 | 显示全部楼层
你这个函数获得的选择集和坐标保存到全局变量, 你的命令调用全局变量就行了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 557个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 6542个

财富等级: 富甲天下

发表于 2017-4-24 19:37:54 | 显示全部楼层
谢谢提供学习学习了!!!!!!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2017-4-24 19:53:14 | 显示全部楼层

(defun vbaset2lspset (str delim x y / aa n i tf)
上面定义函数,不在 / 后面标明的变量,比如这里你标明了 aa n i tf ,函数里面其他的变量都是全局变量,函数执行完后,还有值。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 557个

财富等级: 财运亨通

 楼主| 发表于 2017-4-24 20:58:23 | 显示全部楼层
但是我在别的lisp命令里获得不到变量值,如引用ss,查询ss为空
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2017-4-24 21:05:09 | 显示全部楼层

你是隔开很长时间才在查询的SS的值? 全局变量名你可以起个不容易被覆盖的,比如*my_ss* , 你查询不到,说明可能中间SS被别的函数覆盖了。

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

使用道具 举报

已领礼包: 557个

财富等级: 财运亨通

 楼主| 发表于 2017-4-25 07:48:24 | 显示全部楼层
我就是定义一个命令,获得选择集ss后调用move命令移动。
(defun c:dq ()
  (command "VBARUN" "dq")
  (print (sslength ss))
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 06:31 , Processed in 0.389977 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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