本帖最后由 作者 于 2008-1-26 10:55:02 编辑
;| 还需添加视口打开状态和锁定状态的判断: vla-get-ViewportOn vla-get-DisplayLocked 未考虑 UCS 的因素 |; (defun c:tt (/ lt:ss-map tag vp p1 p2 n ang dis) (defun lt:ss-map (ss fun / n) (repeat (setq n (fix (sslength ss))) (apply fun (list (ssname ss (setq n (1- n))))) ) ) (if (/= (getvar "tilemode") 0) (progn (princ "\n** 命令不允许在模型选项卡中使用 ** ") (exit) ) ) (if (/= (getvar "cvport") 1) (progn (command "_.pspace") (setq tag T) ) ) (if (and (setq vp (ssget '((0 . "viewport")))) (setq p1 (getpoint "\n指定移屏的起点: ")) (setq p2 (getpoint p1 "\n指定移屏的终点: ")) ) (progn (setq ang (angle p1 p2) dis (distance p1 p2) ) (command "_.mspace") (lt:ss-map vp '(lambda (x / ctr sc) (setvar "cvport" (cdr (assoc 69 (entget x)))) (setq ctr (getvar "viewctr") sc (vla-get-CustomScale (vlax-ename->vla-object x)) ) (command "_.-pan" ctr (polar ctr ang (/ dis sc))) ) ) ) ) (if (not tag) (command "_.pspace")) (princ) ) |