找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 658|回复: 8

[已解决] 关于取消?(已解决)

[复制链接]
发表于 2018-8-27 11:47:45 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 19622928 于 2018-8-28 14:24 编辑

各位大神,请教一下,在lisp中要求输入(如:getpoint等)的时候,如何阻止别人按Esc或者有什么办法识别输入的是Esc,然后不要取消函数,让程序继续下去!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 604个

财富等级: 财运亨通

发表于 2018-8-27 12:51:12 | 显示全部楼层
Command: (VL-CATCH-ALL-ERROR-P (VL-CATCH-ALL-APPLY 'getpoint nil)) nil
Command: (VL-CATCH-ALL-ERROR-P (VL-CATCH-ALL-APPLY 'getpoint nil)) *Cancel*
T

点评

谢谢黄先生指点!问题已经解决,我用的是识别错误信息,如果错误信息=取消,然后作后继处理,效果还不错  详情 回复 发表于 2018-8-28 14:20
他是不想响应ESC,和没按一样 我觉得程序没必要这样设定吧,按不按ESC是用户的事,他想按ESC,肯定有他的想法,你违背上帝的意志多不好。 你要做的是他按ESC后的程序反应  详情 回复 发表于 2018-8-27 14:52
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-8-27 14:52:33 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2018-8-27 12:51
Command: (VL-CATCH-ALL-ERROR-P (VL-CATCH-ALL-APPLY 'getpoint nil)) nil
Command: (VL-CATCH-ALL-ERROR ...

他是不想响应ESC,和没按一样
我觉得程序没必要这样设定吧,按不按ESC是用户的事,他想按ESC,肯定有他的想法,你违背上帝的意志多不好。
你要做的是他按ESC后的程序反应
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2018-8-27 15:01:56 | 显示全部楼层
newer 发表于 2018-8-27 14:52
他是不想响应ESC,和没按一样
我觉得程序没必要这样设定吧,按不按ESC是用户的事,他想按ESC,肯定有他 ...

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

使用道具 举报

 楼主| 发表于 2018-8-28 14:20:31 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2018-8-27 12:51
Command: (VL-CATCH-ALL-ERROR-P (VL-CATCH-ALL-APPLY 'getpoint nil)) nil
Command: (VL-CATCH-ALL-ERROR ...

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

使用道具 举报

已领礼包: 6056个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-8-28 18:46:02 | 显示全部楼层
下面是SSGET的判断回车,ESC的,道理一样

(setq ssAusw (vl-catch-all-apply 'ssget nil))
    (cond ;; ENTER was pressed, set doContinue to T,
          ;; to re-show the form
          ((not ssAusw)
           (setq ssAusw        nil
                 doContinue T
           )
          )
          ;; ESC was pressed, set doContinue to nil,
          ;; to cancel the loop and cancel the command
          ((vl-catch-all-error-p ssAusw)
           (setq ssAusw        nil
                 doContinue nil
           )
          )
          ;; check if selection set has objects
          ((zerop (setq intLen (sslength ssAusw)))
           (setq ssAusw        nil
                 doContinue T
           )
          )
          ;; Add objects to list, if they're still not in
          ;; and return to the form after that
          (T
           (repeat intLen
             (setq entObj (ssname ssAusw (setq intLen (1- intLen))))
             (setq vlaObj (vlax-ename->vla-object entObj))
             (setq strObj (strcat (vla-get-ObjectName vlaObj)
                                  " ("
                                  (vla-get-Handle vlaObj)
                                  ")"
                          )
             )
             (if (not (member strObj lstObjects))
               (setq lstObjects
                      (reverse (cons strObj (reverse lstObjects)))
               )
             )                                ; if
           )                                ; repeat
           (setq doContinue T)
          )
    )                                        ; cond
    ;; restore BLIPMODE
    (setvar "BLIPMODE" intBlip)
  )

点评

再次请教一下,(vl-catch-all-apply 'ssget nil) 这个里面的‘ssget 如何加参数呐,比如 (ssget '((0 . “LINE”) (62 . 5)))  详情 回复 发表于 2018-8-29 10:34
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-29 10:34:26 | 显示全部楼层
Lisphk 发表于 2018-8-28 18:46
下面是SSGET的判断回车,ESC的,道理一样

(setq ssAusw (vl-catch-all-apply 'ssget nil))

再次请教一下,(vl-catch-all-apply 'ssget nil) 这个里面的‘ssget 如何加参数呐,比如 (ssget  '((0 . “LINE”) (62 . 5)))

点评

vl-catch-all-apply 本质就是 apply 所以 (vl-catch-all-apply 'ssget '(((0 . "line"))))  详情 回复 发表于 2018-8-29 10:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-8-29 10:49:56 | 显示全部楼层
19622928 发表于 2018-8-29 10:34
再次请教一下,(vl-catch-all-apply 'ssget nil) 这个里面的‘ssget 如何加参数呐,比如 (ssget  '((0 .  ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 04:41 , Processed in 0.212132 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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