找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 697|回复: 2

[LISP函数]:一触即发的选项

[复制链接]
发表于 2003-11-24 09:32:07 | 显示全部楼层 |阅读模式

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

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

×
;;一触即发的选项[pro-提示 lst-关键字列表 def-缺省关键字]
(defun yad-getkword(pro lst def / kw val)
  (setq lst (apply 'append (mapcar '(lambda(e) (list (ascii (strcase e)) (ascii (strcase e T)))) lst))
        def (ascii def)
  )
  (prompt pro)
  (while (not (and (setq kw (grread nil) val (car kw) kw (cadr kw))
                   (member val '(2 11 25))
                   (if (or (= val 25) (and (= val 11) (= kw 0)) (member kw '(13 32)))
                     (setq kw def)
                     (member kw lst)
                   )
              )
         )
  )
  (strcase (vl-list->string (list kw)))
)
;;例1:(yad-getkword "\n输入选项[A 直线/B 圆弧/C 圆]:<A>" '("A" "B" "C") "a")
;;例2:(yad-getkword "\n输入选项[A 直线/B 圆弧/C 圆]:<退出>" '("a" "b" "c") "X")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-11-24 21:34:29 | 显示全部楼层

  1. ;;;[say-提示 key-关键字列表 def-缺省关键字 control-为T时不能空退出(没def时)]
  2. (defun getkword:(say key def control / a b c how is return)
  3. (if(listp key)(setq key(mapcar 'strcase key))(setq key(list(strcase key))))
  4. (prompt say)
  5. (setq how t return nil)
  6. (while(and how(setq is(grread)))
  7.    (setq a(car is) b(cadr is))
  8.    (cond((and(= a 2)(member(setq c(strcase(chr b)))key))(setq return c how nil))
  9.         ((member is '((2 13)(2 32)(11 0)))
  10.           (if def(setq return(strcase def) how nil)         ;;有缺省就可以退出了
  11.                  (if control(princ(strcat"\n不能为空,重新输入!"say))  ;;没缺省,看能不能退出
  12.                             (setq how nil)
  13.                  )
  14.           )
  15.         )
  16.         (t (princ(strcat"\n重输!"say)))   ;;这行可以不要
  17.   ))return
  18. )

  19. ;;;example:
  20. ;;;(getkword: "\nA??,B!!,C$$[A]: " '("a""b""c") "A" nil)        ;;有缺省时,control随便
  21. ;;;(getkword: "\nA??:" "a" "A" nil)                             ;;单个
  22. ;;;(getkword: "\nA??,B!!,C$$(回车退出):" '("a""b""c") nil nil)  ;;回车返回nil
  23. ;;;(getkword: "\nA??,B!!,C$$: " '("a""b""c") nil t)             ;;回车要求重输
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 59个

财富等级: 招财进宝

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-26 19:14 , Processed in 0.308561 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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