669423907 发表于 2014-10-26 10:16:23

请教一个问题:优化程序,如何让缩放和旋转同时进行?

哪位大师方便帮优化一下程序,让缩放和旋转同时进行,谢谢了
(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))

669423907 发表于 2014-10-26 11:21:49


看到 贴中 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:41

啥用?

669423907 发表于 2014-10-26 11:44:13

1993063 发表于 2014-10-26 11:30 static/image/common/back.gif
啥用?

用于轴测图或其它东西调整
页: [1]
查看完整版本: 请教一个问题:优化程序,如何让缩放和旋转同时进行?