DAVID
CAB
Thanks
What I want is rotate selection set of objects then filter the text and rotate in opposite direction
This is revised
;;----------------=={ Rotate plan }==-------------------------;;
;; ;;
;; rotate all selected objected with apilaty of excuding ;;
;; even Text Or Blocks ;;
;;------------------------------------------------------------;;
;; Author: Hasan Mohamed Asos, 2010 ;;
;; ;;
;; Copyright © 2010 by Hasan, All Rights Reserved. ;;
;; Contact: HasanCAD @ TheSwamp.org, ;;
;; Asos2000 @ CADTutor.net ;;
;;------------------------------------------------------------;;
;; Arguments: ;;
;; ;;
;;------------------------------------------------------------;;
;; Returns: ;;
;; ;;
;;------------------------------------------------------------;;
(defun c:PlanRotate (/ Slctd
Slcnpt1 Slcnpt2 SlcnSetAll SlcnSetSlctd bspt RtnAngle Cntr
SlcnSetSlctd SlcnSetSlctd2 SlcnSetSlctd3
)
(vl-load-com)
;; © Hasan Asos 2010
(progn
(setq AcObj (vlax-get-Acad-Object))
(setq ActDoc (vla-get-ActiveDocument AcObj))
(vla-EndUndoMark ActDoc)
(vla-StartUndoMark ActDoc)
)
(progn
(initget 0 "Text Blocks")
(if (> 5 (strlen (getkword "\nObjects to be executed [Text/Blocks]")))
(setq Slctd "*TEXT")
(setq Slctd "INSERT")
)
)
(if
(and
(setq Slcnpt1 (trans (getpoint "\nSpecify first corner point: ") 1 0))
(setq Slcnpt2 (trans (getcorner Slcnpt1 "\nSpecify second corner point: ") 1 0))
(setq SlcnSetAll (ssget "c" Slcnpt1 Slcnpt2))
(setq SlcnSetSlctd (ssget "c" Slcnpt1 Slcnpt2 (List (cons 0 Slctd))))
(setq bspt (trans (getpoint "\nSpecify Base Point for Rotation: ") 1 0))
(setq RtnAngle (getangle bspt "\nSpecify Rotation angle: "))
(setq Cntr -1)
)
(progn
(command "_.ROTATE" SlcnSetAll "" bspt (* (/ RtnAngle pi) 180.0))
)
(princ "\n No objects selected")
)
(while (setq SlcnSetSlctd2 (ssname SlcnSetSlctd (setq Cntr (1+ Cntr))))
(setq SlcnSetSlctd3 (entget SlcnSetSlctd2))
(entmod (subst (cons 50 (- (cdr (assoc 50 SlcnSetSlctd3)) RtnAngle)) (assoc 50 SlcnSetSlctd3) SlcnSetSlctd3))
)
(vla-EndUndoMark ActDoc)
(princ)
)