明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4370|回复: 17

新手发个 动态按键旋转 1 15 45 90 180度

    [复制链接]
发表于 2012-12-1 16:20:57 | 显示全部楼层 |阅读模式
本帖最后由 weiqi 于 2012-12-2 21:44 编辑

已修改~新手发个 按键旋转   
《1键- 1度》《2键-1度》《Q键 15度》《W键 -15度》《E键 45度》
《A键 90度》《E键 -90度》 《D键 180度》

大小写通过了~
空格 回车退出 (不报错 已修改)
  1. ;;; ----------------------------------------------------------------------------
  2. ;;; ----------------------  = = = =  主 函 数  = = = =  ------------------------
  3. ;;; ----------------------------------------------------------------------------
  4. ;;;                            ( 通过键盘旋转目标 )                             
  5. ;;; ----------------------------------------------------------------------------
  6. (DEFUN C:xz (/ cmd loop SSet KeyList n step BasePoint0 BasePoint1 BasePoint2)
  7. (SETQ cmd (GETVAR "CMDECHO"))
  8. (SETVAR "CMDECHO" 0)
  9. (SETQ loop 1)
  10. (WHILE loop
  11.   (PROMPT "\n 选择对象 : ")
  12.   (SETQ SSet (SSGET))
  13.   (COND
  14.    ((NULL SSet)(ALERT "没有选中对象!"))
  15.    (T (SETQ loop nil))
  16.   )
  17. )
  18. (setq p1 (getpoint "指定基点: "))
  19. (PRINC "\n Press key:")
  20. (PRINC "\n\t 《1键- 1度》《2键-1度》《Q键 15度》《W键 -15度》《E键 45度》   ")
  21. (PRINC "\n\t 《A键 90度》《E键 -90度》 《D键 180度》")
  22. (TERPRI)
  23. (SETQ KeyList '(32  49 50 65 68 81 83 87 119 101 113 32 115 97 100))
  24. (WHILE (/= (SETQ n (CADR (GRREAD))) 13)
  25.   (if (MEMBER n KeyList)
  26.    (COND
  27. ((= n 49)(COMMAND "ROTATE" SSet "" p1 1)(PRINC "\r< +1度 >"))
  28.   ((= n 50)(COMMAND "ROTATE" SSet "" p1 -1)(PRINC "\r< -1度 >"))

  29.     ((= n 113)(COMMAND "ROTATE" SSet "" p1 15)(PRINC "\r< q 15度 >"))
  30.     ((= n 81)(COMMAND "ROTATE" SSet "" p1 15)(PRINC "\r< Q 15度 >"))

  31.     ((= n 119)(COMMAND "ROTATE" SSet "" p1 -15)(PRINC "\r< w -15度 >"))
  32.     ((= n 87)(COMMAND "ROTATE" SSet "" p1 -15)(PRINC "\r< W -15度 >"))

  33.     ((= n 101)(COMMAND "ROTATE" SSet "" p1 45)(PRINC "\r< e 45度 >"))
  34.     ((= n 69)(COMMAND "ROTATE" SSet "" p1 45)(PRINC "\r< E  45度 >"))

  35.     ((= n 115)(COMMAND "ROTATE" SSet "" p1 -90)(PRINC "\r< s -90度 >"))
  36.     ((= n 83)(COMMAND "ROTATE" SSet "" p1 -90)(PRINC "\r< S -90度 >"))

  37.     ((= n 97) (COMMAND "ROTATE" SSet "" p1 90)(PRINC "\r< a  90度>"))
  38.     ((= n 65) (COMMAND "ROTATE" SSet "" p1 90)(PRINC "\r< A  90度>"))

  39.     ((= n 100)(COMMAND "ROTATE" SSet "" p1 180)(PRINC "\r< d 180度>"))
  40.     ((= n 68)(COMMAND "ROTATE" SSet "" p1 180)(PRINC "\r< D 180度>"))

  41.     ((= n 32)(nil))

  42.    )
  43.   )
  44. );WHILE
  45. (SETVAR "CMDECHO" cmd)
  46. (PRINC)
  47. )
  48. (PRINC "按键旋转1 2 q w e a s d 命令XZ ")







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 4明经币 +4 收起 理由
张和平 + 1 赞一个!
jicqj + 1 很给力!
crazylsp + 1 神马都是浮云
革天明 + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-12-9 13:27:58 | 显示全部楼层
这个工作中能用到,下载了!
发表于 2022-12-9 13:29:12 | 显示全部楼层
这个工作中能用到,精彩!
发表于 2023-2-23 11:11:26 | 显示全部楼层
很有意思 学习了
发表于 2012-12-1 17:40:59 | 显示全部楼层
试用了下,得按ESC 才退出,应该是没考虑输入除w、s、a、d外其它字符的处理(甚至是上述字符的大写都不行);如果最后一次输入w、s、a、d的话,还是能够通过回车退出的,自己再改下吧。
 楼主| 发表于 2012-12-1 18:51:35 | 显示全部楼层
高手 能否 出手一下,实在 基础不行噢。。。
发表于 2012-12-1 19:14:54 | 显示全部楼层
  1. ;;; ----------------------------------------------------------------------------
  2. ;;; ----------------------  = = = =  主 函 数  = = = =  ------------------------
  3. ;;; ----------------------------------------------------------------------------
  4. ;;;                            ( 通过键盘旋转目标 )                             
  5. ;;; ----------------------------------------------------------------------------
  6. (DEFUN C:xz (/ cmd loop SSet KeyList n step BasePoint0 BasePoint1 BasePoint2)
  7. (SETQ cmd (GETVAR "CMDECHO"))
  8. (SETVAR "CMDECHO" 0)
  9. (SETQ loop 1)
  10. (WHILE loop
  11.   (PROMPT "\n 选择对象 : ")
  12.   (SETQ SSet (SSGET))
  13.   (COND
  14.    ((NULL SSet)(ALERT "没有选中对象!"))
  15.    (T (SETQ loop nil))
  16.   )
  17. )
  18. (setq p1 (getpoint "指定基点: "))
  19. (PRINC "\n Press key:")
  20. (PRINC "\n\t w --- UP")
  21. (PRINC "\n\t s --- DOWN")
  22. (PRINC "\n\t a --- LEFT")
  23. (PRINC "\n\t d --- RIGHT")
  24. (PRINC "\n 请按方向键 W S A D")
  25. (TERPRI)
  26. (SETQ KeyList '(119 115 97 100))
  27. (WHILE (/= (SETQ n (CADR (GRREAD))) 13)
  28.   (if (MEMBER n KeyList)
  29.    (COND
  30.     ((= n 119)(COMMAND "ROTATE" SSet "" p1 15)(PRINC "\r< 上 15度 >"))
  31.     ((= n 115)(COMMAND "ROTATE" SSet "" p1 180)(PRINC "\r< 下 180度 >"))
  32.     ((= n 97) (COMMAND "ROTATE" SSet "" p1 90)(PRINC "\r< 左  90度>"))
  33.     ((= n 100)(COMMAND "ROTATE" SSet "" p1 -90)(PRINC "\r< 右 -90度>"))
  34.    )
  35.   )
  36. );WHILE
  37. (SETVAR "CMDECHO" cmd)
  38. (PRINC)
  39. )
  40. (PRINC "按键旋转 w a s d 命令XZ ")

点评

ZZXXQQ版主您好,在插入块的时候也可以动态旋转到自己想要的角度再确定插入吗?谢谢  发表于 2018-8-13 08:21
这个应该合理一些  发表于 2013-7-19 11:05
 楼主| 发表于 2012-12-1 19:27:28 | 显示全部楼层
ZZXXQQ 发表于 2012-12-1 19:14

Z版 貌似 还是 退出不了哦。

点评

回车退出  发表于 2012-12-1 19:43
 楼主| 发表于 2012-12-1 20:54:15 | 显示全部楼层
已经修改了代码 大小写 已经都能 通用,但是 空格回车的时候 会报错~
((= n 32)(exit)) 这么写应该不对~~

另外问下 鼠标右键的 键码是多少呢? 望高手出手相助~~~
发表于 2012-12-2 10:18:33 | 显示全部楼层
这个要做记号的
发表于 2012-12-3 17:12:26 | 显示全部楼层
小改一下,除了定义的那几个键,按其它任意键都会退出。
  1. ;;; ----------------------------------------------------------------------------
  2. ;;; ----------------------  = = = =  主 函 数  = = = =  ------------------------
  3. ;;; ----------------------------------------------------------------------------
  4. ;;;                            ( 通过键盘旋转目标 )                             
  5. ;;; ----------------------------------------------------------------------------
  6. (DEFUN C:xz (/ cmd loop SSet KeyList n step BasePoint0 BasePoint1 BasePoint2)
  7. (SETQ cmd (GETVAR "CMDECHO"))
  8. (SETVAR "CMDECHO" 0)
  9. (SETQ loop 1)
  10. (WHILE loop
  11.   (PROMPT "\n 选择对象 : ")
  12.   (SETQ SSet (SSGET))
  13.   (COND
  14.    ((NULL SSet)(ALERT "没有选中对象!"))
  15.    (T (SETQ loop nil))
  16.   )
  17. )
  18. (setq p1 (getpoint "指定基点: "))
  19. (PRINC "\n Press key:")
  20. (PRINC "\n\t 《1键- 1度》《2键-1度》《Q键 15度》《W键 -15度》《E键 45度》   ")
  21. (PRINC "\n\t 《A键 90度》《E键 -90度》 《D键 180度》")
  22. (TERPRI)
  23. (SETQ KeyList '(32  49 50 65 68 81 83 87 119 101 113 32 115 97 100))
  24. (WHILE (and(/= (SETQ n (CADR (GRREAD))) 13)
  25.   (MEMBER n KeyList))
  26.    (COND
  27. ((= n 49)(COMMAND "ROTATE" SSet "" p1 1)(PRINC "\r< +1度 >"))
  28.   ((= n 50)(COMMAND "ROTATE" SSet "" p1 -1)(PRINC "\r< -1度 >"))
  29.     ((= n 113)(COMMAND "ROTATE" SSet "" p1 15)(PRINC "\r< q 15度 >"))
  30.     ((= n 81)(COMMAND "ROTATE" SSet "" p1 15)(PRINC "\r< Q 15度 >"))
  31.     ((= n 119)(COMMAND "ROTATE" SSet "" p1 -15)(PRINC "\r< w -15度 >"))
  32.     ((= n 87)(COMMAND "ROTATE" SSet "" p1 -15)(PRINC "\r< W -15度 >"))
  33.     ((= n 101)(COMMAND "ROTATE" SSet "" p1 45)(PRINC "\r< e 45度 >"))
  34.     ((= n 69)(COMMAND "ROTATE" SSet "" p1 45)(PRINC "\r< E  45度 >"))
  35.     ((= n 115)(COMMAND "ROTATE" SSet "" p1 -90)(PRINC "\r< s -90度 >"))
  36.     ((= n 83)(COMMAND "ROTATE" SSet "" p1 -90)(PRINC "\r< S -90度 >"))
  37.     ((= n 97) (COMMAND "ROTATE" SSet "" p1 90)(PRINC "\r< a  90度>"))
  38.     ((= n 65) (COMMAND "ROTATE" SSet "" p1 90)(PRINC "\r< A  90度>"))
  39.     ((= n 100)(COMMAND "ROTATE" SSet "" p1 180)(PRINC "\r< d 180度>"))
  40.     ((= n 68)(COMMAND "ROTATE" SSet "" p1 180)(PRINC "\r< D 180度>"))
  41.     ((= n 32)(nil))
  42.   )
  43. );WHILE
  44. (SETVAR "CMDECHO" cmd)
  45. (PRINC)
  46. )
  47. (PRINC "按键旋转1 2 q w e a s d 命令XZ ")

点评

谢了哈,虽然我还不是很懂,但是我从您的代码找出来了 区别是 (WHILE (and(/= (SETQ n (CADR (GRREAD))) 13) (MEMBER n KeyList)) 我这里的区别哈哈,我去查字典。。  发表于 2012-12-3 18:44
发表于 2013-10-18 15:07:47 | 显示全部楼层
学习了        
发表于 2015-12-16 12:25:14 | 显示全部楼层
确实强大。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-23 11:12 , Processed in 0.208492 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表