RezepteMassenbearbeitung
Wie fülle ich in AutoCAD das Schriftfeld auf allen Layouts auf einmal aus?
Tippen Sie „Setze auf jedem Layout im Schriftfeld PROJECT auf Villa Meier, DRAWN auf RK, DATE auf heute, und nummeriere die Blätter 1 von N“. cadssistant listet die Layouts, findet auf jedem das Schriftfeld über seinen Blocknamen, liest das heutige Datum aus AutoCAD und schreibt PROJECT, DRAWN und DATE in einem Durchgang in jedes Schriftfeld, mit SHEET auf 1 von 3, 2 von 3 und 3 von 3 in Layoutreihenfolge. Sie öffnen kein Layout und wählen nichts aus. Die Antwort listet jedes Layout mit seiner Blattnummer. Zurücksetzen im Chat stellt die alten Werte wieder her. Von Hand ist das der erweiterte Attribut-Editor auf jedem Layout nacheinander, oder ATTOUT und ATTIN über eine Textdatei.
Geprüft am 2026-11-01 · eine der Aufgaben, an denen die Modelle von cadssistant gemessen werden
Setze auf jedem Layout im Schriftfeld PROJECT auf Villa Meier, DRAWN auf RK, DATE auf heute, und nummeriere die Blätter 1 von N
Was cadssistant tut
- Listet die Layouts der Zeichnung und findet auf jedem das Schriftfeld: die Blockreferenz auf diesem Layout mit den Attributen PROJECT, DRAWN, DATE und SHEET. Blöcke im Modellbereich bleiben unangetastet.
- Liest das heutige Datum über AutoCAD, sodass DATE das echte Datum ist und keine Vermutung.
- Schreibt die Werte in alle Schriftfelder auf einmal: dasselbe PROJECT, DRAWN und DATE auf jedem, und SHEET als 1 von 3, 2 von 3, 3 von 3 in der Reihenfolge, in der die Layouts aufgeführt sind.
- Antwortet mit jedem Layout und seiner Blattnummer, damit eine falsche Reihenfolge sofort auffällt.
Dieselbe Aufgabe in AutoLISP
(progn
(vl-load-com)
(setq lts (vla-get-Layouts (vla-get-ActiveDocument (vlax-get-acad-object)))
lays (vl-sort (layoutlist)
'(lambda (a b) (< (vla-get-TabOrder (vla-item lts a)) (vla-get-TabOrder (vla-item lts b)))))
sheets nil)
(foreach lay lays
(if (setq ss (ssget "_X" (list '(0 . "INSERT") '(2 . "TBLOCK") (cons 410 lay))))
(setq sheets (cons (ssname ss 0) sheets))))
(setq sheets (reverse sheets) n 0
today (menucmd "M=$(edtime,$(getvar,date),DD.MO.YYYY)"))
(foreach e sheets
(setq n (1+ n))
(foreach a (vlax-invoke (vlax-ename->vla-object e) 'GetAttributes)
(setq tag (vla-get-TagString a))
(cond ((= tag "PROJECT") (vla-put-TextString a "Villa Meier"))
((= tag "DRAWN") (vla-put-TextString a "RK"))
((= tag "DATE") (vla-put-TextString a today))
((= tag "SHEET") (vla-put-TextString a (strcat (itoa n) " of " (itoa (length sheets))))))))
n)Ersetzen Sie TBLOCK durch den Namen Ihres Schriftfelds. Nimmt die Layouts in Registerreihenfolge, überspringt die ohne TBLOCK und liefert, wie viele Blätter gefüllt wurden; SHEET schreibt es als „1 of 3“, für „1 von 3“ ändern Sie das " of " im strcat. Im Datumsformat ist MO der Monat, MM wären Minuten.
Gut zu wissen
- Die Blätter werden in der Reihenfolge nummeriert, in der die Zeichnung ihre Layouts auflistet, die von der Registerreihenfolge abweichen kann, wenn Register verschoben wurden. Die Antwort zeigt, welches Layout welche Nummer bekam; nennen Sie die gewünschte Reihenfolge, wenn sie nicht stimmt.
- Jedes Schriftfeld funktioniert: Die Attributnamen werden aus dem Block gelesen, nennen Sie sie also so, wie sie dort stehen (PROJ_NAME, CHECKED, REV und so weiter).
Mehr aus „Massenbearbeitung“
- Wie verschiebe ich in AutoCAD alle Objekte eines Typs auf einen anderen Layer?
- Wie ändere ich in AutoCAD die Höhe aller Texte einer Zeichnung auf einmal?
- Wie ersetze ich in AutoCAD einen Block in der ganzen Zeichnung durch einen anderen?
- Wie lösche ich in AutoCAD alles auf einem Layer und bereinige den Layer?
Befehl: CADSSISTANT
Läuft in AutoCAD 2024 und neuer unter Windows. Kostenlos testen, ohne Karte, ohne API-Schlüssel.
cadssistant holen