(defun C:INSERTROTATE(/ AWS ANG INDEX OBJ OBJLIST)
(vl-load-com)
(if(and(or(setq AWS (ssget "_I" '((0 . "INSERT"))))
(and(setq NOMUTT(getvar "NOMUTT"))
(setvar "NOMUTT" 1)
(princ "\nZu drehende Blockreferenzen wählen: ")
(or(vl-catch-all-error-p
(setq AWS(vl-catch-all-apply
'ssget (list '((0 . "INSERT")))
)
)
)
'T
)
(setvar "NOMUTT" NOMUTT)
(or(=(type AWS)'PICKSET)
(prompt "\nAbbruch durch Anwender...")
)
(>(sslength AWS)0)
)
(prompt "\nKeine Blockreferenzengewählt")
)
(or(setq ANG(getreal "\nrelativer Drehwinkel <90.0>: "))
(setq ANG 90.0)
)
)
(progn
(setq INDEX -1)
(repeat(sslength AWS)
(if(setq OBJ(ssname AWS (setq INDEX(1+ INDEX))))
(setq OBJLIST (cons OBJ OBJLIST))
)
)
(vla-endundomark (vla-get-activedocument(vlax-get-acad-object)))
(vla-startundomark(vla-get-activedocument(vlax-get-acad-object)))
(if(setq OBJLIST(vl-remove-if 'null (mapcar
'(lambda(X / VOBJ OLDANG)
(if(and(setq VOBJ (vlax-ename->vla-object X))
(not(vl-catch-all-error-p(setq OLDANG(vl-catch-all-apply 'vla-get-rotation(list VOBJ)))))
(not(vl-catch-all-error-p(vl-catch-all-apply 'vla-put-rotation(list VOBJ (+ OLDANG (*(/ ANG 180.0)PI))))))
)
X
)
)
OBJLIST
)
)
)
(progn
(setq AWS (ssadd))
(foreach OBJ OBJLIST (ssadd OBJ AWS))
(sssetfirst AWS AWS)
)
)
(vla-endundomark (vla-get-activedocument(vlax-get-acad-object)))
(princ)
)
)
)
------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
- Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP