> mit zwei Segmenten/drei Punkten im Raum
Es ist uneherblich, wieviele Segmente die Polylinie hat. Man sollte eine Lösung suchen, die immer gilt, und sich nicht ein Programm schreiben, das bei zwei Segmenten funktioniert, dann eins für drei Segmente, noch eins für vier...
> also keine aufwendige Abfrage nach dem Objekt
dito. Ein Programm für den Fall, dass es das zuletzt gezeichnete Objekt war, noch eins für den Fall, dass es das vorletzte war... ??
Das Grundgerüst sieht jedenfalls so aus:
Code:
(defun get-polyline-points(entity / points)
(if(=(cdr(assoc 0(entget entity)))"POLYLINE")
(progn
(while(=(cdr(assoc 0(entget(setq entity(entnext entity)))))"VERTEX")
(setq points(cons(cdr(assoc 10(entget entity)))points))
)
(reverse points)
)
)
)
Es gibt dir bei allen Polylinien alten Stils (POLYLINE, nicht LWPOLYLINE) die Punkteliste zurück, also auch bei Pmeshs und geglätteten Polylinien. Dazu gehört auch die 3D-Polylinie.
Wenn du damit auf das zuletzt gezeichnete Element zugreifen willst, kannst du das über den Ausdruck (get-polyline-points(entlast)). Wenn du den Benutzer auswählen lassen willst, dann muss es (get-polyline-points(car(entsel)) heissen. Ein festverdrahtetes (entlast) in einer Funktion macht diese aber zu digitalem Sondermüll.
HTH, Axel
------------------
Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze
Meine Überzeugung...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP