Ellipse durch "Polylinien-Ellipse" ersetzen
Noch eine Möglichkeit.
Die Elementdaten der Ellipsen aus der Datenbank auslesen.
Mit diesen Elementdaten neue Ellipsen, jedoch mit der
"Ellipsen-Erzeugungs-Variable pellipse = 1 erzeugen.
Löschen der Datenbank-Ellipse.
Da meine Lisp - Kenntnisse nicht die besten sind,
stellt "P.LISP" sicher nicht die Lisp - Eleganz dar.
Probleme stellen vor allem die Daten der Datenbank-Liste dar.
Zugriff erfolgt auf die einzelnen Werte, das sind die Koord.
der Ellipsen mittels (setq Koord. (nth x Liste)).
Tut sicher einfacher.
Was es mit der Genauigkeit auf sich hat, ist mir ebenfalls
nicht bekannt.
Da steht irgendwo, dass Elementdaten lediglich 16 bit
Genauigkeit darstellen ...
(ACAD 2000)
;;; Ersatz Ellipse durch P-Ellipse
;;; im Aug 00
;;; Hans Krissler
;;; 07153990172-0001@t-online.de
(defun C:p () ; P.LISP
(command "pellipse" 1) ; Voreistellung Ellipse als Polylinie zeichnen
(setq as (ssget "X" (list (cons 0 "ellipse"))))
; as = Auswahlsatz alle Ellipsen
(setq i (sslength as)) ; i = Anzahl Ellipsen-Einträge
(setq k 0)
(while (< k i) ; Schleife für alle Einträge
(setq eName (ssname as k)
eData (entget eName) ; Objektdaten abrufen
eMitte (cdr (assoc 10 eData)) ; Zentrum
eAchse (cdr (assoc 11 eData)) ; Achsen a und b
eRatio (cdr (assoc 40 eData)) ; Verhältnis b/a
)
(setq x0 (nth 0 eMitte)) ; Zentrums-Koord.
(setq y0 (nth 1 eMitte))
(setq xa (nth 0 eAchse)) ; Abstands-Koord. der Achse von Zentrum
(setq ya (nth 1 eAchse))
(setq ax (+ x0 xa)) ; Achsenpunkt-Koord.
(setq ay (+ y0 ya))
(setq aAchse (list ax ay)) ; Achsenpunkt als (2D-)Liste
(setq a (sqrt
(+ (* xa xa) (* ya ya))
)
) ; Achse a
(command "_ellipse" "z" eMitte aAchse (* a eRatio))
; Ellipse mit Pellipse übermalen
(entdel eName) ; Ellipse löschen
(setq k (+ 1 k)) ; Schleifenzähler erhöhen
)
(command "pellipse" 0) ; pellipse durch ellipse zurücksetzen
)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP