找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4429|回复: 21

[原创] 给自己写的LISP函数变成透明命令的方法

[复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-5-2 23:02:51 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 Lispboy 于 2013-5-2 23:04 编辑

我们知道在一个LISP写的函数或者命令执行时候,是不允许透明执行另外的LISP写的函数的,这是因为LISP不允许重入的原因。
但是,我们可以通过VLAX方法,把自己定义的LISP函数加入到ACAD的命令列表中,这样这个LISP函数就可以在COMMAND或者VL-CMDF调用,也可以变成透明执行的命令。

例子:

[pcode=lisp,true]
(defun c:t1()
    (princ "\nHellow,I Here!!")
    (ssget)
   (princ)
)
(defun c:t2()
    (princ "\nThis is only a test!!")
    (princ)
)
(Vlax-Add-Cmd "tt" 'c:t2 "tt" ACRX_CMD_TRANSPARENT)
[/pcode]

这样,在执行LISP函数c:t1的时候,就可以透明的使用 ‘tt (执行LISP函数c:t2) 命令了。

评分

参与人数 1D豆 +5 收起 理由
crazylsp + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

已领礼包: 2688个

财富等级: 家财万贯

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

使用道具 举报

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

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

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

使用道具 举报

发表于 2013-6-5 16:32:07 | 显示全部楼层
lz,那在使用cad本身命令时能使用lisp函数写成的命令吗

点评

LISP都可以重入了,CAD自己的命令更没问题了。  详情 回复 发表于 2013-6-5 16:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

 楼主| 发表于 2013-6-5 16:49:02 | 显示全部楼层
phoevana 发表于 2013-6-5 16:32
lz,那在使用cad本身命令时能使用lisp函数写成的命令吗

LISP都可以重入了,CAD自己的命令更没问题了。

点评

试了一下,果真可以,lz威武,这么好的东西值得拥有,呵呵  详情 回复 发表于 2013-6-8 08:10
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3394个

财富等级: 富可敌国

发表于 2013-6-5 18:42:02 | 显示全部楼层
本帖最后由 liuyun242 于 2013-6-5 18:52 编辑

好像t1跟t2没关系的,只是t2跟tt有关
  1. (defun c:t1()
  2.     (princ "\nHellow,I Here!!")
  3.     (ssget)
  4.    (princ)
  5.    (Vlax-Add-Cmd "tt" 'c:t2 "tt" ACRX_CMD_TRANSPARENT)
  6.   (command "tt")
  7. )
  8. (defun c:t2()
  9.     (princ "\nThis is only a test!!")
  10.     (princ)
  11. )

点评

是啊,因为LISP的函数(c:t2)注册后的命令名是 tt ,执行tt就是执行 t2的内容了,只不过tt注册到内部命令堆栈里面了,可以透明使用。 也可以直接用 (command "tt")执行。原来的(c:t2)是不能在command 里面执行的。  详情 回复 发表于 2013-6-5 18:53
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

 楼主| 发表于 2013-6-5 18:53:31 | 显示全部楼层
liuyun242 发表于 2013-6-5 18:42
好像t1跟t2没关系的,只是t2跟tt有关

是啊,因为LISP的函数(c:t2)注册后的命令名是 tt ,执行tt就是执行 t2的内容了,只不过tt注册到内部命令堆栈里面了,可以透明使用。

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

使用道具 举报

发表于 2013-6-8 08:10:09 | 显示全部楼层
Lispboy 发表于 2013-6-5 16:49
LISP都可以重入了,CAD自己的命令更没问题了。

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

使用道具 举报

已领礼包: 187个

财富等级: 日进斗金

发表于 2013-6-9 15:58:31 | 显示全部楼层
试了一下,命令倒是加入CAD命令集了,但是不能透明使用!我用的是CAD2006 SP1
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

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

使用道具 举报

已领礼包: 2239个

财富等级: 金玉满堂

发表于 2013-7-21 01:52:33 | 显示全部楼层
又能学到东西了。虽然还没完全懂怎么,但至少能有一个方向学怎么透明命令,以前总是想调用命令,但总不成功。谢谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 33个

财富等级: 招财进宝

发表于 2013-7-25 01:12:34 | 显示全部楼层
Lispboy 发表于 2013-6-5 18:53
是啊,因为LISP的函数(c:t2)注册后的命令名是 tt ,执行tt就是执行 t2的内容了,只不过tt注册到内部命令 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 20:28 , Processed in 0.534896 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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