Hallo Leute,
um das Verwenden von Template-Dateien zu vermeiden, habe ich mit Hilfe einiger Experten ein Lisp programmiert, das die Bemaßungsstile einer "Vorlagenzeichnung" ausliest, die Einstellungen in einer Datei speichert (DimStyle.cfg) und ein weiteres Programm, das die gespeicherten Einstellungen in einer neuen Datei wieder herstellt.
Leider gibt es Probleme mit Unterbemaßungsstilen (z.B. Radiatenbemaßung, Winkelbemaßung usw). Beim Wiederherstellen, werden diese Bemaßungsstile zum Teil als eigenständige Stile (mit Zusatz $2 oder ähnliches) und zum Teil wie gewünscht als Unterstile wieder hergestellt.
Der Code wäre folgender:
;SPEICHERN VON BEMASSUNGSSTILEN
(defun C:dimSave (/ allstyles item stylelst style)
(setq allstyles (vla-get-dimstyles (vla-get-activedocument (vlax-get-acad-object)))) ;alle Bemaßungsstilobjekte auflisten
(vlax-for item allstyles
(if (and (/= (vla-get-name item) "ISO-25")
(/= (vla-get-name item) "Annotative")
)
(setq stylelst (cons (vla-get-name item) stylelst)) ;Liste alle Bemaßungsstilenamen ohne die Standard-Vorgaben
(setq stylelst (reverse stylelst))
)
)
(setq *file* (open "DimStyles.cfg" "w"))
(foreach item stylelst
(if (and (setq style (tblobjname "Dimstyle" item))
(setq style (entget style '("AcadAnnotative"))))
(progn
(write-line (vl-prin1-to-string (vl-remove-if
'(lambda (a) (member (car a) '(-1 5 330 340 341 342 343))) style)) *file*) ;entfernt Gruppencodes
)
)
)
(princ "\nAlle Bemaßungsstile außer die Vorgaben 'ISO-25' und 'Annotative' wurden gesichert...")
(if (/= *file* nil)(close *file*))
(princ)
)
;WIEDERHERSTELLEN VON BEMASSUNGSSTILEN
(defun C:dimStart (/ style name)
(princ "\nBemaßungsstile werden eingerichtet...")
(setq *file* (open "DimStyles.cfg" "r"))
(setq style (read-line *file*))
(while (/= style nil)
(setq name (cdr (assoc 2 (read style))))
(if (not (tblsearch "Dimstyle" name))
(entmake (read style))
)
(setq style (read-line *file*))
)
(if (/= *file* nil)(close *file*))
(princ)
)
Hat jemand einen Tipp für mich, woran das liegen kann?
Danke und Grüße
Daniel
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP