明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6537|回复: 27

[已解答] 方向键移动实体

[复制链接]
发表于 2014-6-28 14:46 | 显示全部楼层 |阅读模式
  用方向键上下左右来控制被选中的实体 按一次移动一定的距离 距离可以设置,不设置的情况下 默认一次移动距离为4毫米  

由于工作大量需求   还请各位大大   G版等大人物帮下忙

                                                                                       再次谢谢各位了

本帖子中包含更多资源

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

x

点评

发dwg测试图  发表于 2014-6-28 22:20
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-12-12 21:55 | 显示全部楼层
ll_j 发表于 2014-6-30 09:40
多年不搞这个了,周末,家里没有资源,今天到办公室来测试,发一个试试。
传统菜单文件,使用命令menuload ...

向上键不行
发表于 2020-8-22 16:19 | 显示全部楼层
edata 发表于 2014-6-28 22:07
记得prompt可覆盖命令行提示,我找了很久才找到,记忆力不行了。...................................

E大你还年轻吧
发表于 2019-12-12 15:02 | 显示全部楼层

满了能自动排下一版吗?
发表于 2014-6-28 20:38 | 显示全部楼层
想起了低版2.6以下版自带的小键盘功能
发表于 2014-6-28 20:56 | 显示全部楼层
可以用wsad键控制。。
发表于 2014-6-28 21:31 | 显示全部楼层
;连续复制不用输入距离和方向
(defun c:lxc(/ ss spt ept len1 ang1)
(setvar "osmode" 679)                        ; 打开端点,中点,中心,象限点,交点及垂点捕捉
  (setq spt (getpoint "\n选择基点:"))
  (setq ept (getpoint spt "\n复制的终点(方向):"))
  (setq len1 (getdist "\n复制的距离<默认为起点终点的距离>:"))
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)
  (setq ang1 (angle spt ept))
  (if len1
      (setq ept (polar spt ang1 len1))
  )
  (princ "\n选择要复制的对象")
  (setq ss (ssget))
  (while ss
    (progn
      (command "copy" ss "" spt ept)
        (setq ss (ssget))
    )
  )   
(setvar "osmode" os)
  (prin1)
)
;连续拉伸不用输入距离和方向
(defun c:lxs(/ ss spt ept len1 ang1)
(setvar "osmode" 679)                        ; 打开端点,中点,中心,象限点,交点及垂点捕捉
  (setq spt (getpoint "\n选择基点:"))
  (setq ept (getpoint spt "\n移动的终点(方向):"))
  (setq len1 (getdist "\n拉伸的距离<默认为起点终点的距离>:"))
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)
  (setq ang1 (angle spt ept))
  (if  len1
      (setq ept (polar spt ang1 len1))
  )
  (princ "\n选择要拉伸的对象")
  (setq ss (ssget":s"))
  (while ss
    (progn
      (command "stretch" ss "" spt ept)
        (setq ss (ssget":s"))
    )
  )   
(setvar "osmode" os)
  (prin1)
)
;;连续移动不用回车

(defun c:lxm(/ ss spt ept len1 ang1)
(setvar "osmode" 679)                        ; 打开端点,中点,中心,象限点,交点及垂点捕捉
  (setq spt (getpoint "\n选择基点:"))
  (setq ept (getpoint spt "\n移动的终点(方向):"))
  (setq len1 (getdist "\n移动的距离<默认为起点终点的距离>:"))
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)
  (setq ang1 (angle spt ept))
  (if  len1
      (setq ept (polar spt ang1 len1))
  )
  (princ "\n选择要移动的对象")
  (setq ss (ssget":s"))
  (while ss
    (progn
      (command "move" ss "" spt ept)
        (setq ss (ssget":s"))
    )
  )   
(setvar "osmode" os)
  (prin1)
)

;连续移动不用输入距离和方向
(defun c:lxm0(/ ss spt ept len1 ang1)
(setvar "osmode" 679)                        ; 打开端点,中点,中心,象限点,交点及垂点捕捉
  (setq spt (getpoint "\n选择基点:"))
  (setq ept (getpoint spt "\n移动的终点(方向):"))
  (setq len1 (getdist "\n移动的距离<默认为起点终点的距离>:"))
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)
  (setq ang1 (angle spt ept))
  (if  len1
      (setq ept (polar spt ang1 len1))
  )
  (princ "\n选择要移动的对象")
  (setq ss (ssget))
  (while ss
    (progn
      (command "move" ss "" spt ept)
        (setq ss (ssget))
    )
  )   
(setvar "osmode" os)
  (prin1)
)

;;连续删除不用少一次回车
(defun c:LXE (/ SS)
(setq ss(ssget":s"))
(princ "\n选择要删除的对象")
(command "ERASE" SS "")
(c:LXE)
)
发表于 2014-6-28 21:37 | 显示全部楼层
写个排版程序秒杀...EPAI就有....

点评

必须秒杀!  发表于 2014-6-28 22:20
发表于 2014-6-28 22:07 | 显示全部楼层
本帖最后由 edata 于 2014-6-28 22:23 编辑

记得prompt可覆盖命令行提示,我找了很久才找到,记忆力不行了。...................................
  1. (defun c:tt(/ GR OLD_CMD SS ds)  
  2.   (setq old_cmd(getvar 'cmdecho))
  3.   (setvar 'cmdecho 0)
  4.   (if (setq ss(ssget))
  5.     (progn
  6.       (setq ds(cond((getdist "输入移动间隔<5.0>:")) (5.0)))
  7.       (princ "\n按W S A D 移动,空格回车左\右键退出:\r")
  8.   (while (and (/= (car (setq gr(grread t 15 0)))3)
  9.        (not(equal gr '(2 32)))
  10.        (not(equal gr '(2 13)))
  11.        (not(equal gr '(11 0)))
  12.        (not(equal gr '(25 0)))
  13.        )   
  14.     (cond
  15.       ((or (equal gr '(2 119))(equal gr '(2 87)))      
  16.        (vl-cmdf "_.move" ss "" '(0 0) (polar '(0 0) (* pi 0.5) ds))
  17.        (prompt "\r按W S A D 移动,空格回车左\右键退出:向上移动" )
  18.        )
  19.       ((or (equal gr '(2 83))(equal gr '(2 115)))      
  20.        (vl-cmdf "_.move" ss "" '(0 0) (polar '(0 0) (* pi 1.5) ds))
  21.        (prompt "\r按W S A D 移动,空格回车左\右键退出:向下移动" )
  22.        )
  23.       ((or (equal gr '(2 65))(equal gr '(2 97)))
  24.        (vl-cmdf "_.move" ss "" '(0 0) (polar '(0 0) pi ds))
  25.        (prompt "\r按W S A D 移动,空格回车左\右键退出:向左移动")
  26.        )
  27.       ((or (equal gr '(2 68))(equal gr '(2 100)))      
  28.        (vl-cmdf "_.move" ss "" '(0 0) (polar '(0 0) 0 ds))
  29.        (prompt "\r按W S A D 移动,空格回车左\右键退出:向右移动")
  30.        )      
  31.     )
  32.     )
  33.       )
  34.     )
  35.   (if old_cmd (setvar 'cmdecho old_cmd))
  36.   (princ)
  37.   )

评分

参与人数 1明经币 +1 收起 理由
love1030312 + 1 神马都是浮云

查看全部评分

发表于 2014-6-29 08:48 | 显示全部楼层
;加入新功能
  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-7-2 08:52

评分

参与人数 2明经币 +2 收起 理由
zctao1966 + 1 很给力!
love1030312 + 1 有我们Z版在 神马都是浮云 此程序完美啊

查看全部评分

发表于 2014-6-29 10:17 来自手机 | 显示全部楼层
可以参考燕川布衣的cmd+num程序,未知命令反应器,能够实现楼主的要求,修改起来也很简单!
发表于 2014-6-29 12:11 | 显示全部楼层
谢谢!收藏了!
 楼主| 发表于 2014-6-30 08:18 | 显示全部楼层
edata 发表于 2014-6-28 22:07
记得prompt可覆盖命令行提示,我找了很久才找到,记忆力不行了。...................................

谢谢大大们   非常感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-28 20:33 , Processed in 0.366892 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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