找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1612|回复: 10

[求助] 关于葛老的镜像命令改造LISP 新手有疑问

[复制链接]

已领礼包: 685个

财富等级: 财运亨通

发表于 2013-6-26 19:17:09 | 显示全部楼层 |阅读模式

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

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

×

关于葛老的镜像命令改造LISP 新手有疑问

  1. ;;;=========================={ 镜像命令改造 wowan1314 }=================================
  2. ;;;功能:如果想删除源对象,点下即可,(省的输入Y才能删除)
  3. (defun c:YY-MIRROR ( / SS PT)
  4. (SETQ SS (SSGET ":L"))
  5. (command "MIRROR" SS "" PAUSE PAUSE)
  6. (SETQ PT (GETPOINT "\n选点删除源对象<右键保留>:"))
  7. (IF PT (COMMAND "Y") (COMMAND ""))
  8. (PRINC)
  9. )
(IF PT (COMMAND "Y") (COMMAND ""))   能不能详解这句判断是什么意思??
例:如果什么什么    就什么什么
什么什么是什么意思????

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

如果 PT 不为 nil,执行(COMMAND "Y"),否则执行(COMMAND "")
nil就是尚未被赋值的意思

点评

这样理解可以吗?? 比如这样写 (if (pt=T) ;如果PT =真 (COMMAND "Y") ;就执行这段 (COMMAND "") ;否则执行这段 ) 高手就是因为省略了T就看不懂了。。。新手伤不起啊  详情 回复 发表于 2013-6-27 10:44
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-6-27 10:44:56 | 显示全部楼层
laibinwu 发表于 2013-6-26 19:23
如果 PT 不为 nil,执行(COMMAND "Y"),否则执行(COMMAND "")
nil就是尚未被赋值的意思

这样理解可以吗??
比如这样写
(if (pt=T)                ;如果PT =真
(COMMAND "Y")       ;就执行这段
(COMMAND "")         ;否则执行这段
)

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-6-27 11:05:27 | 显示全部楼层
本帖最后由 newer 于 2013-6-27 11:06 编辑
ysq101 发表于 2013-6-27 10:44
这样理解可以吗??
比如这样写
(if (pt=T)                ;如果PT =真

LISP是表求值语言,对变量,或一个表都有值,这个值要不是NIL,要不就是非NIL,不是NIL的值逻辑判断时候等价于T的。

其实所有语言都一样,0是NULL,非0都为TRUE

所以:如果pt 为T的话

  1. (if (= pt t)
  2.   ...
  3. )


  1. (if pt
  2.   ...
  3. )


是一样的,你记住一点就是了,逻辑判断 是NIL和非NIL

用 if pt 的好处是,只要有值,都为真,不一定非要T,让你更灵活了。

点评

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

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-6-27 11:10:53 | 显示全部楼层
ysq101 发表于 2013-6-27 10:44
这样理解可以吗??
比如这样写
(if (pt=T)                ;如果PT =真

按Alisp的语法,p=T应该是(= pt T),但这里的pt是正常输入的点,T是一个逻辑判断符号,不可能是相等的,所以这种说法是不对的,正确说法应该是(/= pt nil)(即pt非无值),Lisp的nil是很强大的。

点评

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

使用道具 举报

发表于 2013-6-27 11:22:18 | 显示全部楼层
没有(pt=T) 这种写法。应该是这样写的(= pt T)

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

使用道具 举报

发表于 2013-6-27 11:26:11 | 显示全部楼层
你看下if函数的含义,如果判断表达式不等于nil就执行前一句,否则后一句。

还是之前的那句话:如果 PT 不为 nil,执行(COMMAND "Y"),否则执行(COMMAND "")

点评

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

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-6-27 13:11:50 | 显示全部楼层
ll_j 发表于 2013-6-27 11:10
按Alisp的语法,p=T应该是(= pt T),但这里的pt是正常输入的点,T是一个逻辑判断符号,不可能是相等的, ...

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

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-6-27 13:18:48 | 显示全部楼层
laibinwu 发表于 2013-6-27 11:26
你看下if函数的含义,如果判断表达式不等于nil就执行前一句,否则后一句。

还是之前的那句话:如果 PT  ...

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

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-6-27 13:20:48 | 显示全部楼层
newer 发表于 2013-6-27 11:05
LISP是表求值语言,对变量,或一个表都有值,这个值要不是NIL,要不就是非NIL,不是NIL的值逻辑判断时候 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 12:31 , Processed in 0.407582 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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