请教一个问题:优化程序,如何让缩放和旋转同时进行?
哪位大师方便帮优化一下程序,让缩放和旋转同时进行,谢谢了(defun c:`Q()
(command ".UNDO" "BE")
(if (setq ss (ssget ":s" '((0 . "INSERT"))))(progn
(setq i 0)
(repeat (sslength ss)
(setq en (ssname ss i)
ent (entget en)
i (1+ i)
pc (cdr(assoc 10 ent)))
(setq gbwz (grread 3));光标位置
(if (member (car gbwz) '(3 5))
(progn (setq pt0 (cadr gbwz))));鼠标位置
(command "scale" ss "" pc "r" pc pt0 "\\")
(command "rotate" ss "" pc "r" pc pt0 PAUSE)
)))
(command ".UNDO" "E")
(princ))
看到 贴中 hao3ren 大师的回复
(defun c:`Q()
(vl-load-com)
(setq ss (ssget":s"))
(setq ssbox1 (zxbwk ss))
(setq zhongdian (mapcar '(lambda (a b) (/ (+ a b) 2)) (car ssbox1) (cadr ssbox1)))
(setq gbwz (grread 3));光标位置
(if (member (car gbwz) '(3 5))
(progn (setq pt0 (cadr gbwz))));鼠标位置
;(setq pt2(getpoint zhongdian "\n请选择缩放参考点"))
(command "scale" ss "" zhongdian "r" zhongdian pt0 "\\")
(command "rotate" ss "" zhongdian "r" zhongdian pt0 PAUSE)
)
(defun zxbwk (sse / ss i ssn ll rr box ptlist ssbox);hao3ren 2013-12-24 http://bbs.mjtd.com/thread-99959-2-1.html
(if (= 'ENAME (type sse))
(progn (setq ss (ssadd)) (ssadd sse ss))
(setq ss sse))
(if ss
(progn
(setq i -1)
(repeat (sslength ss)
(setq ssn (ssname ss (setq i (1+ i))))
(vla-GetBoundingBox (vlax-ename->vla-object ssn) 'll 'rr);得到对象的包围盒
(setq box (list (vlax-safearray->list ll) (vlax-safearray->list rr)))
(setq ptlist (append ptlist box))
)
(setq ssbox (mapcar '(lambda (x) (apply 'mapcar (cons x ptlist))) (list 'min 'max)))
)
)
) 啥用? 1993063 发表于 2014-10-26 11:30 static/image/common/back.gif
啥用?
用于轴测图或其它东西调整
页:
[1]