carrot1983 发表于 2020-10-11 09:02:28

如何使用DrawJig时,按任意键后自动触发,不用再加“空格或回车”

本帖最后由 carrot1983 于 2020-10-11 09:07 编辑

Kean 有一篇文章关于在使用jig时,按下shift或ctrl键。
还有一篇文章讲使用创建多段线,Jig中使用关键字。
飞狐版主有收集:

http://bbs.mjtd.com/forum.php?mo ... 6typeid%3D31&page=1


现在的问题是:

如何实现在DrawJig时,按任意键后,就自动触发,不用再加“空格或回车”。

像Lisp中的grread函数一样。按键后随即触发。


(defun C:TEST (/ DATA GRR GRRPT KEY LOOP OBJECTS PT SS)
;; by carrot1983 2020.10.11
(setq SS (ssget))
(setq PT (getpoint "\n指定点:"))
(setq OBJECTS (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex SS)))))
(setq LOOP t)
(while LOOP
    (setq GRR (grread t 15 2))
    (setq KEY (car GRR))
    (setq DATA (cadr GRR))
    (cond ((= KEY 5)
   (setq GRRPT DATA)
   (foreach O OBJECTS
       (vla-move O (vlax-3d-point PT) (vlax-3d-point GRRPT))
   )
    ) ;_移动
    ((or (= KEY 3) (= DATA 13))
   (setq LOOP NIL)
    ) ;_3左击 13回车 表示确认
    ((member KEY '(12 25))
   (redraw)
   (setq LOOP NIL)
    ) ;_右键退出
    ;;按任意键
    ((= KEY 2)
   (print (strcat "按键:" (chr DATA)))
    )
    )
    (setq PT GRRPT) ;_新基点
)
(redraw)
)


edata 发表于 2020-10-12 10:34:50

试试能不能hook捕获键盘消息。

print1985 发表于 2020-12-18 23:20:19

我是用的键盘钩子
页: [1]
查看完整版本: 如何使用DrawJig时,按任意键后自动触发,不用再加“空格或回车”