Guten morgen Lisp Experten
ich habe gerade ein Wochenende voller suchen suchen suchen und noch viel mehr try and error hinter mir. Ich versuche folgendes, das nicht so richtig will wie ich es möchte.
Momentane Situation:
In der Zeichnung befinden ca. 1000 Leitungen die alle als Block mit Attributen hinterlegt sind. Alle Blöcke liegen auf einem eigenen Layer. Diese Layer beinhalten die Namen der Leitungen. An vielen Stellen liegen viele Leitungen übereinander.
Was ich versuche:
Mit Lisp die Namen der Layer auslesen und die ausgelesen Layer gleich formatiert (unter einander aufgelistet) in einen Mtext einfügen und von Hand an eine bestimmte Stelle ablegen.
Was bisher geschah:
- Layernamen auslesen mit Hilfe von "Selection Set Layer List" hier gefunden: [URL=https://forums.autodesk.com/t5/autocad-forum/getting-a-layer-list-from-selected-objects/td-p/6018974][/URL]
(defun C:SSLL (/ ss n lay); = Selection Set Layer List
(setq laylist nil); to clear from any previous use
(if (ssget "_I")
(setq ss (ssget "_I")); then
(progn ; else
(prompt "\nFor a List of their Layers,")
(setq ss (ssget))
); progn
); if
(if ss
(repeat (setq n (sslength ss))
(setq lay (cdr (assoc 8 (entget (ssname ss (setq n (1- n)))))))
(if (not (member lay laylist)) (setq laylist (cons lay laylist)))
); and
); if
laylist
); defun
Das geht schon in die richtige Richtung. Nur die Formatierung der Ausgabe stört. diese bringt nämlich im Fenster oberhalb der Komandozeile: "Layer1" "Layer2" Layer3" "Layer4". Ich bekomme die Formatierung zu:
Layer1
Layer2
Layer3
Layer4
nicht hin. Ich habe mir die .lsp von bcount genommen und an der experimentiert, aber das Ergebnis war ... nicht so toll.
Als nächstes habe ich versucht die ausgelesene Variable über einen Befehl mit Hilfe von Lisp direkt in einen Mtext einzufügen. Jedoch dachte ich nicht daran, dass sich die Variable mit jedem auslesen ändert. Es ist ja auch eine Variable! Und hier hänge ich fest. Ist es nun besser den "SSLL"-Befehl zu bearbeiten bis das richtige Format herauskommt, oder ist es doch sinnvoller mit "SSLL" die Variable "Laylist" zu erstellen und einen zweiten Befehl für den Mtext zu verwenden, der die Variable "auflöst" (nur noch Text) und dazu auch formatiert?
Ein zweiter Ansatz, den ich bisher nicht verfolgt habe:
Wenn man die Attribute der Blöcke nimmt und zusammensetzt "Att1"Leer"Att2"Leer"Att3" erhält man genauso den Layernamen. Aber hier habe ich überhaupt keine Vorstellung wie man das hinbekommen soll. Der Inhalt des Mtextes Würde ja dann so aussehen müssen:
"Att1"Leer"Att2"Leer"Att3"
"Att1"Leer"Att2"Leer"Att3"
"Att1"Leer"Att2"Leer"Att3"
Nun meine Frage: hat jemand eine Idee, wie ich eine "schöne" Formatierung hinbekomme?
(Die eierlegende Wollmilchsau wäre natürlich alles mit einem Befehl zu erledigen.)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP