求屏幕定距移动
本帖最后由 石井鱼 于 2018-1-9 09:51 编辑之前版主ZZXXQQ编过一个四个方向移动图元的程序,感觉非常好用
http://bbs.mjtd.com/forum.php?mo ... %D2%C6%B6%AF&page=1
现在求各位高手帮忙编个类似定距移动屏幕的程序,不胜感谢!
主要目的是设定一个距离(比如一个图框的尺寸),可以不用滚轮缩放平移,屏幕能上、下移该尺寸的距离(能上下左右更好)
因为工作中经常遇到相同位置的构件需要检查修改。
;; tt(屏幕定距移动)
(defun c:tt ()
(princ "\n键盘操作: w-上移/z-下移/a-左移/s-右移/鼠标左右键或空格退出")
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setq dx 59400
dy 42000
mode t
)
(while mode
(setq mo (grread t 15 0)
co (car mo)
)
(cond ((member co '(3 25)) (setq mode nil))
((= (cadr mo) 97) (command "pan" '(0 0) (list (- dx) 0)))
((= (cadr mo) 115) (command "pan" '(0 0) (list dx 0)))
((= (cadr mo) 122) (command "pan" '(0 0) (list 0 (- dy))))
((= (cadr mo) 119) (command "pan" '(0 0) (list 0 dy)))
((= (cadr mo) 32) (setq mode nil))
)
)
(setvar "osmode" os)
(princ)
) 貌似这个情况大家用的不多,简单讲就是屏幕移动一个固定的距离,还是期待热心的小伙伴出手相助 check System Variable
SCREENSIZE
VIEWCTR
VIEWSIZE
;; tt(屏幕定距移动)
(defun c:tt ()
(princ "\n键盘操作: w-上移/z-下移/a-左移/s-右移/鼠标左右键或空格退出")
(if (setq s1 (car (entsel "\n选择参照实体: ")))
(progn
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setq p1 (xyp-9pt s1 1)
p3 (xyp-9pt s1 3)
p9 (xyp-9pt s1 9)
dx (distance p1 p3)
dy (distance p9 p3)
mode t
)
(while mode
(setq mo (grread t 15 0)
co (car mo)
)
(cond ((member co '(3 25)) (setq mode nil))
((= (cadr mo) 97) (command "pan" '(0 0) (list (- dx) 0)))
((= (cadr mo) 115) (command "pan" '(0 0) (list dx 0)))
((= (cadr mo) 122) (command "pan" '(0 0) (list 0 (- dy))))
((= (cadr mo) 119) (command "pan" '(0 0) (list 0 dy)))
((= (cadr mo) 32) (setq mode nil))
)
)
(setvar "osmode" os)
)
)
(princ)
)
十分感谢院长的热心帮忙,基本达到目的了,还有个小小希望不知能否稍作修改,不用去选择实体,直接给个固定数值(dx dy),平时图框尺寸都是固定的,这样可以少个选择图框的步骤,更加便捷一些,再次感谢院长 谢谢院长深夜回帖,用您的工具箱多年,收益匪浅,再次感谢! 很强大的哦
深夜马克 遇到好东西就要留个脚印
页:
[1]
2