我山寨presscad的 - (defun c:rp()
- (setvar "cmdecho" 0)
- (setq ss (entsel "\n请指定旋转用之参考边:")
- en (entget (car ss))
- p1(cdr (assoc 10 en))
- p2(cdr (assoc 11 en))
- c(trans (cadr ss)1 0))
- (redraw (car ss) 3) ;选择高亮
- (if (>(distance c p1)(distance c p2))
- (progn
- (setq p1(cdr (assoc 11 en))
- p2(cdr (assoc 10 en)))
- )
- )
- (princ "\n请选取欲旋转的图元")
- (setq ss1 (ssget))
- (setq p3 (trans (getpoint "请指定旋转方向:") 1 0))
- (setq ang1 (angle p1 p2)
- ang2 (angle p1 p3)
- ang (/ ang1 (/ pi 2)))
- (repeat 3
- (if (> ang 1)
- (setq ang (- ang 1.0)))
- )
- (setq RA1(*(/ (* ang (/ pi 2))pi)180))
- (if (> pi ang1)
- (progn (if ( > ang2 ang1) (progn (if ( < ang2 (+ ang1 PI))(setq RA (- 90. RA1 ))(setq RA (* -1 RA1 ))))(setq RA (* -1. RA1))))
- (progn (if ( < ang2 ang1) (progn (if ( > ang2 (- ang1 pi))(setq RA (* -1. RA1 ))(setq RA (- 90. RA1))))(setq RA (- 90. RA1))))
- )
- ;(princ(sslength SS1))
- ;(princ RA)
- (command ".ROTATE" ss1 "" (trans p1 0 1) RA)
- (princ "\n旋转角度=") (princ RA)
- (princ )
- )
|