也许这个。。。
- (defun c:Test (/ *error* rtd _P p1 p2 e pts a lst ang)
- ;;--- Tharwat 23. April. 2013 ---;;
- (defun *error* (x) (princ "\n *Cancel*"))
- (defun rtd (a) (/ (* a 180.0) pi))
- (defun _P (ent)
- (mapcar 'cdr
- (vl-remove-if-not
- '(lambda (i) (eq (car i) 10))
- (entget ent)
- )
- )
- )
- (if (and (setq p1 (getpoint "\n Specify first corner :"))
- (setq p2 (getcorner "\n Specify next corner :" p1))
- )
- (progn
- (command "_.rectang" "_none" p1 "_none" p2)
- (setq e (entlast))
- (setq pts (_P e))
- (setq a (angle (car pts) (cadr pts)))
- (command "_.rotate"
- e
- ""
- (mapcar '(lambda (j k) (/ (+ j k) 2.))
- (car pts)
- (caddr pts)
- )
- pause
- )
- (setq lst (_P (entlast)))
- (setq ang (- (angle (car lst) (cadr lst)) a))
- )
- )
- (if ang
- (princ
- (strcat "\n The rotation angle is : " (rtos (rtd ang) 2 1))
- )
- )
- (princ)
- )
- (vl-load-com)
|