马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
 - (defun c:xdtb_rotori (/ ss p1 p2 x t1 t2 mat scl)
- (if (setq ss
- (xdrx-ssget
- "\n*** 图元原地缩放((物体中心为基点)) ***\n选择要旋转的对象<退出>:"
- )
- )
- (progn
- (xdrx-begin)
- (setvar "lastpoint" '(0 0 0))
- (xdrx-sysvar-push '("osmode" 33))
- (if (and (xdrx-initget 1 "R")
- (setq p0 (getvar "lastpoint"))
- (setq
- p1 (getreal (xdrx-prompt "\n请输入旋转角度或[参照(R)]" t))
- )
- )
- (progn
- (cond
- ((= p1 "R")
- (setq pp (getvar "lastpoint"))
- (if (and (setq t1 (getpoint "\n指定参照第一点: <退出>"))
- (not (initget 1))
- (setq t2 (getpoint t1 "\n指定第二点:"))
- (setq d1 (getpoint "\n指定目标第一点:"))
- (not (initget 1))
- (setq d2 (getpoint d1 "\n指定第二点:"))
- )
- (setq scl (xdrx-vector-angle
- (xdrx-vector-normalize (mapcar '- t2 t1))
- (xdrx-vector-normalize (mapcar '- d2 d1))
- )
- )
- )
- )
- ((= (type p1) 'real) (setq scl (xdrx-math-degtor p1)))
- )
- )
- )
- (if scl
- (progn (mapcar '(lambda (x)
- (setq mat (xdrx-matrix-setrotation
- scl '(0 0 1.0)
- (trans (xd::geom:get9pt x 5) 1 0)
- )
- )
- (xdrx-entity-transform x mat)
- )
- (xdrx-pickset->ents ss)
- )
- (xdrx-prompt "\n共原位旋转了 " (sslength ss) " 个对象.")
- )
- )
- (xdrx-sysvar-pop)
- (xdrx-end)
- )
- )
- (princ)
- )
|