ChiN丶 发表于 2019-3-6 15:16:16

请问我这段代码为什么只能响应左键,点右键和回车就会报参数错误?

(defun c:te( / ss)
       
        (setq loop T)
        (while loop
          (setq code (grread T 8))
          (if(= (car code) 25)
                  (progn
                        (princ "\n 右键响应成功!!!")
                  )
          )
          
          (if(= (car code) 3)
                (progn
                        (princ "\n 左键响应成功!!!")
                        (setq ss (ssadd (ssget ":D" '((0 . "text"))) ss)) ;;添加图元到数据集
                )
          )
          
          (if(equal code '(2 13))
                (progn
                        (princ "\n 跳出循环!!!")
                        (setq loop nil)
                  )
          )
        )
)

补充一下,左键右键回车三个键只能响应最开始点的那个键,再点其他的键就会报参数错误,比如点完左键再点右键或回车就报错了;不加获取图元的那行代码就没问题,加上就不行了。

start4444 发表于 2019-3-6 18:39:34

用cond 好点,获取图元那里写错了,ssadd 对象是图元名不是选集
(defun c:tt5( / ss)
(setq loop T)
(while loop
(setq code (grread T 8))
(cond
((= (car code) 3)   (princ "\n 左键响应成功!!!") (setq ss(ssget "X" '((0 . "text")))) )               
((or (= (car code) 25) (= (car code) 11))    (princ "\n 右键响应成功!!!"))
((equal code '(2 13)) (setq loop nil))
)
)
)

ChiN丶 发表于 2019-3-6 19:24:26

start4444 发表于 2019-3-6 18:39
用cond 好点,获取图元那里写错了,ssadd 对象是图元名不是选集
(defun c:tt5( / ss)
(setq loop T)


嗯哪谢谢刚开始学还不熟练:D
页: [1]
查看完整版本: 请问我这段代码为什么只能响应左键,点右键和回车就会报参数错误?