Zitat:
Original erstellt von c@s:
hallo
mit einem buttonmacro möchte ich gerne gewählte objekte
um ihr eigenes zentrum um 90° nach links drehen.
wie kann das aussehen kriegs nicht hin.danke für euer interesse
gruss jochen
Hallo,
nachfolgende Lisp benutze ich um eingefügte Elemente um die "Standardwinkel" 45°, 90°,180°,270°, auf einen der Orthogonalwerte des aktuellen BKS, Drehen mit Bezugspunkten oder drehen mit Bezugspunkten und Kopie des Originals.
Die eingebaute Option "Fang" ermöglicht voreingestellte Fangoptionen zu aktivieren zu ändern oder auszuschalten, kann bei Bedarf natürlich auch ganz weggelassen werden.
"Auswahl" spricht für sich....
Die Lisproutinen haben bei mir keinen Anspruch auf "saubere Porgrammierung" aber sie funktionieren.
Verbesserungsvorschläge nehme ich natürlich gerne an.
;Drehung auf einen der Orthogonalen Winkel des aktuellen BKS
(defun c:dr0 ()
(setq pio (getvar "pickstyle"))
(setvar "pickstyle" 0)
(defun *error* (msg)
(setvar "cmdecho" 1)
(setvar "osmode" 0)
(setvar "orthomode" 0)
(princ msg)
(princ)
)
(setq OS (getvar "osmode"))
(AUSWAHL)
(FANGEN)
(princ "\nBitte den ersten Drehpunkt wählen: ")
(setq pt1 (getpoint))
(princ "\nBitte den Referenzpunkt-1 wählen: ")
(setq pt2 (getpoint))
(setvar "osmode" 0)
(setvar "orthomode" 1)
(command "._rotate" ausw "" pt1 "_reference" pt1 pt2 pause)
(print)
(setvar "pickstyle" pio) ; Variablen werden zurückgesetzt
(setvar "osmode" OS)
(setvar "cmdecho" 1)
)
;Drehung um 90°
(defun c:dr90 ()
(defun *error* (msg)
(setvar "cmdecho" 1)
(setvar "osmode" 0)
(setvar "orthomode" 0)
(princ msg)
(princ)
)
(setq OS (getvar "osmode"))
(AUSWAHL)
(FANGEN)
(princ "\nBitte den Drehpunkt wählen: ")
(setq pt1 (getpoint))
(setvar "osmode" 0)
(command "._rotate" ausw "" pt1 "90")
(setvar "osmode" OS)
(setvar "cmdecho" 1)
)
;Drehung um 45°
(defun c:dr45 ()
(defun *error* (msg)
(setvar "cmdecho" 1)
(setvar "osmode" 0)
(setvar "orthomode" 0)
(princ msg)
(princ)
)
(setq OS (getvar "osmode"))
(AUSWAHL)
(FANGEN)
(princ "\nBitte den Drehpunkt wählen: ")
(setq pt1 (getpoint))
(setvar "osmode" 0)
(command "._rotate" ausw "" pt1 "45")
(setvar "osmode" OS)
(setvar "cmdecho" 1)
)
;Drehung um 180°
(defun c:dr18 ()
(defun *error* (msg)
(setvar "cmdecho" 1)
(setvar "osmode" 0)
(setvar "orthomode" 0)
(princ msg)
(princ)
)
(setq OS (getvar "osmode"))
(AUSWAHL)
(FANGEN)
(princ "\nBitte den Drehpunkt wählen: ")
(setq pt1 (getpoint))
(setvar "osmode" 0)
(command "._rotate" ausw "" pt1 "180")
(setvar "osmode" OS)
(setvar "cmdecho" 1)
)
;Drehung um 270°
(defun c:dr27 ()
(defun *error* (msg)
(setvar "cmdecho" 1)
(setvar "osmode" 0)
(setvar "orthomode" 0)
(princ msg)
(princ)
)
(setq OS (getvar "osmode"))
(AUSWAHL)
(FANGEN)
(princ "\nBitte den Drehpunkt wählen: ")
(setq pt1 (getpoint))
(setvar "osmode" 0)
(command "._rotate" ausw "" pt1 "270")
(setvar "osmode" OS)
(setvar "cmdecho" 1)
)
;Drehung mit festen Bezugspunkten
(defun c:dr1 ()
(defun *error* (msg)
(setvar "cmdecho" 1)
(setvar "osmode" 0)
(setvar "orthomode" 0)
(princ msg)
(princ)
)
(setq OS (getvar "osmode"))
(setvar "cmdecho" 1)
(setvar "osmode" 0)
(setq ausw (ssget))
(setvar "osmode" 33)
(princ "\nBitte den ersten Drehpunkt wählen: ")
(setq pt1 (getpoint))
(princ "\nBitte den Referenzpunkt-1 wählen: ")
(setq pt2 (getpoint))
(princ "\nBitte den Referenzpunkt-2 wählen: ")
(setq pt3 (getpoint))
(setvar "osmode" 0)
(command "._rotate" ausw "" pt1 "_reference" pt1 pt2 pt3)
(setvar "osmode" OS)
(setvar "cmdecho" 1)
)
;Drehung mit festen Bezugspunken und Kopie
(defun c:drk1 ()
(defun *error* (msg)
(setvar "cmdecho" 1)
(setvar "osmode" 0)
(setvar "orthomode" 0)
(princ msg)
(princ)
)
(setq OS (getvar "osmode"))
(setvar "cmdecho" 1)
(setvar "osmode" 0)
(setq ausw (ssget))
(setvar "osmode" 33)
(princ "\nBitte den Drehpunkt wählen: ")
(setq pt1 (getpoint))
(princ "\nBitte den Referenzpunkt-1 wählen: ")
(setq pt2 (getpoint))
(princ "\nBitte den Referenzpunkt-2 wählen: ")
(setq pt3 (getpoint))
(setvar "osmode" 0)
(command "_copy" ausw "" "0,0,0" "0,0,0")
(command "._rotate" "_p" "" pt1 "_reference" pt1 pt2 pt3)
(setvar "osmode" OS)
(setvar "cmdecho" 1)
)
; Definition der voreingestellten Fangwete
(defun FANGEN ()
(defun *error* (msg)
(setvar "cmdecho" 1)
(setvar "osmode" 0)
(setvar "orthomode" 0)
(setvar "blipmode" 1)
(princ msg)
(princ)
)
(if (not *OF)(setq *OF "_end,_mid,_int")
)
(setvar "cmdecho" 0)
(setq OS (getvar "OSMODE"))
(setvar "blipmode" 1)
(princ "\nDie augenblickliche Voreinstellung für die Fang-Option")
(princ "lautet <")
(princ *OF)
(setq FA (getstring (strcat ">: " )))
(if (= FA "")(setq FA *OF)
(if (= Fa "st")
(progn (setq *OF st)
(setq FA (strcase "_end,_mid,_int" T)))
(setq *OF FA)
)
)
(command "-ofang" FA)
(setvar "cmdecho" 1)
(graphscr)
)
;Auswahl der zu bearbeitenden Elemente
(defun AUSWAHL ()
(princ "\nBitte die zu bearbeitenden Elemente auswählen" )
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setq ausw(ssget))
)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP