hkzwsy 发表于 2004-1-9 22:36:00

[求助]在AutoLISP程序中能用键盘上4个方向键吗?(UP Right Down Left)

BDYCAD 发表于 2004-1-10 08:31:00

好象不行. 我還沒有看過有提取這四個鍵特性的涵數呀.

HQ_2003 发表于 2004-1-10 09:21:00

转贴一个类似功能的函数
;;; ----------------------------------------------------------------------------
;;; ----------------------= = = =主 函 数= = = =------------------------
;;; ----------------------------------------------------------------------------
;;;                            ( 通过键盘移动目标 )                           
;;; ----------------------------------------------------------------------------
(DEFUN C:MoveEnts (/ cmd loop SSet KeyList n step BasePoint0 BasePoint1 BasePoint2)
(SETQ cmd (GETVAR "CMDECHO"))
(SETVAR "CMDECHO" 0)
(SETQ loop 1)
(WHILE loop
    (PROMPT "\n 选择对象 : ")
    (SETQ SSet (SSGET))
    (COND
      ((NULL SSet)(ALERT "没有选中对象!"))
      (T (SETQ loop nil))
    )
)
(PRINC "\n Press key:")
(PRINC "\n\t w --- UP")
(PRINC "\n\t s --- DOWN")
(PRINC "\n\t a --- LEFT")
(PRINC "\n\t d --- RIGHT")
(PRINC "\n 请按方向键 W S A D")
(TERPRI)
(SETQ KeyList '(119 115 97 100))
(SETQ n (CADR (GRREAD)))

(WHILE (/= n 13)
    (WHILE (NOT (MEMBER n KeyList))
      (SETQ n (CADR (GRREAD)))
    )
    (SETQ step 10)
    (SETQ BasePoint0(LIST 0 0))
    (SETQ BasePoint1 (LIST 0 step))
    (SETQ BasePoint2 (LIST step 0))
    (COND
      ((EQUAL n 119)(COMMAND "MOVE" SSet "" BasePoint0 BasePoint1)(PRINC "\r< 上 >"))
      ((EQUAL n 115)(COMMAND "MOVE" SSet "" BasePoint1 BasePoint0)(PRINC "\r< 下 >"))
      ((EQUAL n 97) (COMMAND "MOVE" SSet "" BasePoint2 BasePoint0)(PRINC "\r< 左 >"))
      ((EQUAL n 100)(COMMAND "MOVE" SSet "" BasePoint0 BasePoint2)(PRINC "\r< 右 >"))
    )
    (SETQ n (CADR (GRREAD)))
);WHILE

(SETVAR "CMDECHO" cmd)
(PRINC)
)

(PRINC "\n Type \"MOVEENTS\" to run this routine.")

cwzfirst 发表于 2014-9-22 16:36:58

HQ_2003 发表于 2004-1-10 09:21 static/image/common/back.gif
转贴一个类似功能的函数

大神这个程序除了,ESC之外,如何退出呢?
页: [1]
查看完整版本: [求助]在AutoLISP程序中能用键盘上4个方向键吗?(UP Right Down Left)