namezg 发表于 2010-12-2 17:31:42

如何判断在entsel后,是按了空格,回车,右键,左键空拾取,左键非空拾取

如何判断在entsel后,是按了空格,回车,右键,左键空拾取,左键非空拾取

namezg 发表于 2010-12-2 18:39:39

本帖最后由 namezg 于 2010-12-2 21:24 编辑

(initget " ")
(setq ent (entsel))
(cond
    ((= ent " ")执行代码)                                       ;空格
    ((= 52 (getvar "errno"))执行代码)                   ;回车或右键
    ((= 7 (getvar "errno"))执行代码)                     ;左键单击空选
    (T 执行代码)                                                   ;左键单击非空选
)
上面的代码正确吗,如果正确回车和右键无法区分,不用grread用什么方法能区分?

用grread区分,下面的代码对吗?
(setq el (grread T 4 2))
(cond
    ;((= (car el) 2) 代码)                               ;任意键盘键
    ((equal el '(2 6)) 代码)                           ;键盘键F3
    ((member el '((2 80) (2 112))) 代码)       ;键盘键P或p
    ;((member el '((2 13) (2 32))) 代码)      ;键盘键空格或回车
    ((equal el '((2 13))) 代码)                        ;键盘键空格
    ((equal el '((2 32))) 代码)                        ;键盘键回车
    ;((= (car el) 3)) 代码)                              ;左键拾取
    ((and (= (car el) 3) (= el nil)) 代码)          ;左键拾取为空
    ((and (= (car el) 3) (/= el nil)) 代码)         ;左键拾取为非空
    ((= (car el) 11) 代码)                               ;右键


chg 发表于 2010-12-2 18:56:39

(setvar "errno" 0)
(setq rtxt (entsel "\n选择源文本:"))
(setq err (getvar "errno"))
(while (/= err 52)
    (cond
      ((= err 7)
       (setvar "errno" 0)
       (setq
         rtxt (entsel
                "没有选中.\n选择源文本:"
                )
         )
       (setq err (getvar "errno"))
       )
      ((and (/= (cdr (assoc 0 (entget (car rtxt)))) "TEXT")
            (/= (cdr (assoc 0 (entget (car rtxt)))) "MTEXT")
            )
       (setvar "errno" 0)
       (setq rtxt
            (entsel
                "所选对象不是文本. \n选择源文本:"
                )
             )
       (setq err (getvar "errno"))
       )
这是我程序中的一段代码,你看看是否有帮助,我觉得右键和回车是同样的作用,我没有区分,也区分不出,这就要请教别人了。

tender138 发表于 2024-8-25 21:17:19


这个不错,也做个记号

Andyhon 发表于 2010-12-2 18:31:37

Return Values

A list whose first element is the entity name of the chosen object
and whose second element is the coordinates
(in terms of the current UCS) of the point used to pick the object.

您不妨参考 GrRead 函数以订制所需

chg 发表于 2010-12-2 18:38:29

我是用ERRNO这个变量来控制的,右键,空格,回车直接就结束命令了。而左键空拾取,errno为52,如果左键非空拾取,那命令继续,不用判断。

AMTONNY 发表于 2011-4-10 19:54:17

做个记号,后面要学习

jack093 发表于 2012-8-9 12:58:21

学习,经常为这个问题发愁

skg123 发表于 2012-10-21 22:58:04

学习 了,刚好可以解决我的一个难题

陨落 发表于 2012-10-22 00:07:04

留个记号
以后再看

hnfsf 发表于 2012-10-23 01:42:17

这个不错,也做个记号
页: [1] 2
查看完整版本: 如何判断在entsel后,是按了空格,回车,右键,左键空拾取,左键非空拾取