找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1669|回复: 10

[每日一码] WHILE退不出了

[复制链接]
发表于 2014-10-20 09:13:10 | 显示全部楼层 |阅读模式

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

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

×
  1. (defun C:sk()
  2.   (princ "\n[标注带(1T)]:")
  3.   (setvar "cmdecho" 0)
  4.   (while T
  5.   (command "dim1" "ali" pause pause pause "<>(1T)")
  6.   );while
  7.   (princ)
  8. )

;while怎么样退出去,现在只能按ESC键才能退出去。、
忘大神支招

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2014-10-20 10:26:02 来自手机 | 显示全部楼层
(while (and (setq p1(getpoint "\nfirst point: "))
          (setq p2 (getpoint p1 (getpoint "\nsecond point: "))
        )
(command. …
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-20 10:35:09 | 显示全部楼层
first point:
second point: ; 错误: 参数类型错误: stringp: (1523.66 255.948 0.0)
(defun C:sk()
  (princ "\n[标注带(1T)]:")
  (setvar "cmdecho" 0)
(while (and (setq p1(getpoint "\nfirst point: "))
          (setq p2 (getpoint p1 (getpoint "\nsecond point: "))
        )
(command "dim1" "ali" p1 p2 pause "<>(1T)")
            );and
  );while
  );defum
在点第二点的时候出错了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-20 10:35:55 | 显示全部楼层
Free-Lancer 发表于 2014-10-20 10:26
(while (and (setq p1(getpoint "\nfirst point: "))
          (setq p2 (getpoint p1 (getpoint "\nseco ...

first point:
second point: ; 错误: 参数类型错误: stringp: (1523.66 255.948 0.0)

点评

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

使用道具 举报

发表于 2014-10-20 10:40:55 来自手机 | 显示全部楼层
给两点就没有pause了

点评

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

使用道具 举报

 楼主| 发表于 2014-10-20 11:21:30 | 显示全部楼层
Free-Lancer 发表于 2014-10-20 10:40
给两点就没有pause了

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

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2014-10-20 12:44:39 | 显示全部楼层
程序退不出的原因是while的条件T,T和nil是一对特殊的逻辑符合,分别表达真和假,T总返回T。
while循环是在满足条件时进行的,使用T作为条件,就只能总是循环。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-10-20 13:20:27 | 显示全部楼层


08 测试通过
  1. (defun c:tt (/ p1 p2)
  2.   (setvar "cmdecho" 0)
  3.   (while (and (setq p1 (getpoint "\nfirst Point<Exit>: "))
  4.               (setq p2 (getpoint p1 "\nSecond Point<Exit>: "))
  5.          )
  6.     (command ".dim1" "ali" p1 p2 pause "<>(1T)")
  7.   )
  8.   (princ)
  9. )


点评

(setq p2 (getpoint p1 (getpoint "\nsecond point: ")) 我弄成这样了,一直错。 也明白了,T为什么不能退出,谢谢各位 现在可以了,感谢各位让我每天进步一点  详情 回复 发表于 2014-10-20 13:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-20 13:36:49 | 显示全部楼层

(setq p2 (getpoint p1 (getpoint "\nsecond point: "))
我弄成这样了,一直错。
也明白了,T为什么不能退出,谢谢各位
现在可以了,感谢各位让我每天进步一点{:soso_e100:}

点评

去看看这个函数,命令要是一直激活,一直PAUSE,通过系统变量控制循环退出。 http://bbs.xdcad.net/forum.php?mod=viewthread&tid=668843  详情 回复 发表于 2014-10-20 22:52
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-10-20 22:52:07 | 显示全部楼层
amwkto2011 发表于 2014-10-20 13:36
(setq p2 (getpoint p1 (getpoint "\nsecond point: "))
我弄成这样了,一直错。
也明白了,T为什么不 ...

去看看这个函数,命令要是一直激活,一直PAUSE,通过系统变量控制循环退出。

http://bbs.xdcad.net/forum.php?mod=viewthread&tid=668843

点评

老大我去看了,这个 (defun XD:OC:dstop1 () (setvar "cmdecho" 1) (command "dim1" "ali") (while (/= 0 (getvar "cmdactive")) (command pause) ) (setvar "cmdecho" 0) ) 不知道  详情 回复 发表于 2014-10-21 09:25
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-21 09:25:02 | 显示全部楼层
XDSoft 发表于 2014-10-20 22:52
去看看这个函数,命令要是一直激活,一直PAUSE,通过系统变量控制循环退出。

http://bbs.xdcad.net/fo ...

老大我去看了,这个
(defun XD::DOC:dstop1 ()
  (setvar "cmdecho" 1)
  (command "dim1" "ali")
  (while (/= 0 (getvar "cmdactive"))
    (command pause)
  )
  (setvar "cmdecho" 0)
)

不知道怎么用它,能否给个例子
(defun c:tt()
  (while t
  (command "dim1" "ali" pause pause pause "<>(1t)")
  )
  )

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 18:21 , Processed in 0.220238 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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