明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2247|回复: 8

[已解答] 优化程序 亲爱的ZZZ版 看过来

[复制链接]
发表于 2014-11-16 00:05 | 显示全部楼层 |阅读模式
10明经币
  这是以前ZZ版帮忙写的一个程序  一直以来都是很好用的
请ZZ版帮忙修改下
不要Q- E+ 了 改成直接输入数字  这个数字要有记忆功能  (我所说的记忆就是在不退出当前CAD ,再用这个程序还是上次输入的那个数字)
  1. (defun c:tt(/ GR SS ds str)  
  2.   (setvar 'cmdecho 0)
  3.   (setq ds 4.0)
  4.   (setq str "按W S A D 移动Q-,E+,空格回车左\右键退出:")
  5.   (if (setq ss(ssget)) (progn
  6.    (princ (strcat "\n" str "距离" (rtos ds 2)))
  7.    (while (and (/= (car (setq gr(grread t 15 0)))3)
  8.                (not(equal gr '(2 32)))
  9.                (not(equal gr '(2 13)))
  10.                (not(equal gr '(11 0)))
  11.                (not(equal gr '(25 0))))   
  12.     (cond
  13.      ((or (equal gr '(2 119))(equal gr '(2 87)))       ;wW
  14.       (vl-cmdf "_.move" ss "" '(0 0) (polar '(0 0) (* pi 0.5) ds))
  15.       (prompt (strcat "\r" str "向上移动"))
  16.      )
  17.      ((or (equal gr '(2 83))(equal gr '(2 115)))       ;Ss
  18.       (vl-cmdf "_.move" ss "" '(0 0) (polar '(0 0) (* pi 1.5) ds))
  19.       (prompt (strcat "\r" str "向下移动"))
  20.      )
  21.      ((or (equal gr '(2 65))(equal gr '(2 97)))        ;Aa
  22.       (vl-cmdf "_.move" ss "" '(0 0) (polar '(0 0) pi ds))
  23.       (prompt (strcat "\r" str "向左移动"))
  24.      )
  25.      ((or (equal gr '(2 68))(equal gr '(2 100)))       ;Dd
  26.       (vl-cmdf "_.move" ss "" '(0 0) (polar '(0 0) 0 ds))
  27.       (prompt (strcat "\r" str "向右移动"))
  28.      )      
  29.      ((or (equal gr '(2 81))(equal gr '(2 113)))       ;Qq
  30.       (setq ds (- ds 4) ds (if (< ds 0) 0 ds))
  31.       (prompt (strcat "\r" str "距离" (rtos ds 2)))
  32.      )      
  33.      ((or (equal gr '(2 69))(equal gr '(2 101)))       ;Ee
  34.       (setq ds (+ ds 4))
  35.       (prompt (strcat "\r" str "距离" (rtos ds 2)))
  36.      )      
  37.     )
  38.    )
  39.   ))
  40.   (setvar 'cmdecho 1)
  41.   (princ)
  42. )

最佳答案

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-11-16 00:05 | 显示全部楼层
  1. (defun c:tt (/ _getreal gr ss str)
  2.   (defun _getreal (msg default / ret)
  3.     (setq ret (getreal (strcat msg " <" (rtos default) ">:")))
  4.     (if        (null ret)
  5.       default
  6.       ret
  7.     )
  8.   )
  9.   (setvar 'cmdecho 0)
  10.   (if (null *grmovedis*)
  11.     (setq *grmovedis* 4.0)
  12.   )
  13.   (setq str "\n按W S A D 移动, Q 设置步长, 空格回车或左\右键退出:")
  14.   (princ (strcat "\n步长 = " (rtos *grmovedis* 2) ""))
  15.   (if (setq ss (ssget))
  16.     (progn (princ str)
  17.            (while (and (/= (car (setq gr (grread t 15 0))) 3)
  18.                        (not (equal gr '(2 32)))
  19.                        (not (equal gr '(2 13)))
  20.                        (not (equal gr '(11 0)))
  21.                        (not (equal gr '(25 0)))
  22.                   )
  23.              (cond ((or (equal gr '(2 119)) (equal gr '(2 87))) ;wW
  24.                     (vl-cmdf "_.move" ss "" '(0 0) (polar '(0 0) (* pi 0.5) *grmovedis*))
  25.                    )
  26.                    ((or (equal gr '(2 83)) (equal gr '(2 115))) ;Ss
  27.                     (vl-cmdf "_.move" ss "" '(0 0) (polar '(0 0) (* pi 1.5) *grmovedis*))
  28.                    )
  29.                    ((or (equal gr '(2 65)) (equal gr '(2 97))) ;Aa
  30.                     (vl-cmdf "_.move" ss "" '(0 0) (polar '(0 0) pi *grmovedis*))
  31.                    )
  32.                    ((or (equal gr '(2 68)) (equal gr '(2 100))) ;Dd
  33.                     (vl-cmdf "_.move" ss "" '(0 0) (polar '(0 0) 0 *grmovedis*))
  34.                    )
  35.                    ((or (equal gr '(2 81)) (equal gr '(2 113))) ;Qq
  36.                     (setq *grmovedis* (_getreal "\n输入每次移动的步长" *grmovedis*))
  37.                     (princ str)
  38.                    )
  39.              )
  40.            )
  41.     )
  42.   )
  43.   (setvar 'cmdecho 1)
  44.   (princ)
  45. )
回复

使用道具 举报

发表于 2014-11-16 08:40 | 显示全部楼层

  (setq ds 4.0)
改成
  (setq ds (if (numberp ds) ds 4.0))
即可
回复

使用道具 举报

 楼主| 发表于 2014-11-16 08:57 | 显示全部楼层
ZZXXQQ 发表于 2014-11-16 08:40

  (setq ds 4.0)
改成

zz版按照你说的改了 没效果啊 还是跟以前一样  麻烦Z版改下
回复

使用道具 举报

发表于 2014-11-16 09:37 | 显示全部楼层
写入注册表或者文本记忆
回复

使用道具 举报

 楼主| 发表于 2014-11-16 10:41 | 显示全部楼层
vectra 发表于 2014-11-16 10:22

谢谢大神
回复

使用道具 举报

发表于 2019-12-12 14:27 | 显示全部楼层
真服
回复

使用道具 举报

发表于 2020-9-11 21:32 | 显示全部楼层
顶一下,谢谢楼主及评论区的大神,请问这个是什么作用呀
回复

使用道具 举报

发表于 2022-1-29 17:19 | 显示全部楼层
不错,好方法
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 04:28 , Processed in 0.483612 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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