如何使用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)
)
试试能不能hook捕获键盘消息。 我是用的键盘钩子
页:
[1]