; von J.H. 28.04.2014 ; Änderungen bzw. Verbesserungen sind gern gesehen und sollten veröffentlicht werden - Danke! ; mit dem Viewer http://www.noliturbare.com/plot-print/print-ctbs-and-more die CTB in eine *.INI speichern ; und in der letzten Zeile der INI ENDE eintragen (princ "\nAm Ende der INI in die letzte Zeile bitte ENDE eintragen " ) (defun parse_nums (st / a k lst) (setq k 1) (setq a "") (setq lst nil) (repeat (strlen st) (if (= (substr st k 1) " ") (progn (setq lst (append lst (list a))) (setq a "") ) (setq a (strcat a (substr st k 1))) ) (setq k (+ k 1)) ) (setq lst (append lst (list a))) ) ;Mainprogramm (defun c:konvlayer (/ MD_ERR *ERROR* _pfad FILE DWGsicherung aL layername layerfarbe f dataline _layerfarbe FModus _RGB-farbe _linienstaerke plotmassstab2 1zu plotmassstab ant2 ) (vl-load-com) ;;;; Error Funktion (setq MD_ERR *ERROR* *ERROR* M:FEHLER ) ;_ end of setq ;;Marke für Zurück nach Abbruch setzen (vla-endundomark (vla-get-activedocument(vlax-get-acad-object))) (vla-startundomark(vla-get-activedocument(vlax-get-acad-object))) ;;;Die eigentliche Funktion: (defun M:FEHLER (S) (print (strcat "M:fehler " S)) (vl-cmdf "_UNDO" "_BACK") (setq *ERROR* MD_ERR) (alert "Der Befehl wurde abgebrochen!") (princ) ) ;_ end of defun ; INI-pfad (setq _pfad "I:/ACAD-Config/ACAD2012/TD/Support/adobe-pdf-2012.INI" ) (initget "Ja Nein") (setq ant (getkword (strcat "Pfad " _pfad " verwenden? /Nein:"))) (if (= ant "Nein") (progn (setq FILE (getfiled "Layer INI einlesen" (getvar "dwgprefix") "ini" 8 )) ) (progn (setq FILE _pfad ) ) ) ;Wblock DWG (substr Dateinam 1 (- (strlen Dateinam) 4)) (setq DWGsicherung (strcat (getvar "dwgprefix") (substr (getvar "dwgname" ) 1 (- (strlen (getvar "dwgname" )) 4)) "-Sicherung" )) ;(setq oldDFFS (getenv "DefaultFormatForSave")) ;(setenv "DefaultFormatForSave" "18");oder welche Version auch immer (command "_.-WBLOCK" DWGsicherung "J" "*" ) (princ) ;(setenv "DefaultFormatForSave" oldDFFS ) (princ) ;----------------------------------------- ;Aktuellen Layer-STatus Speichern (command "-layer" "ST" "S" "mit_Plotstiltabelle_CTB_plotten" "" "" "" ) ;Zuweisungsfunktion (if (/= FILE nil ); (progn (setq aL (tblnext "LAYER" t )) (while aL (setq layername (cdr (assoc 2 aL ))) (setq layerfarbe (cdr (assoc 62 aL ))) (setq f (open File "r" )) (setq dataline (read-line f)) (setq dataline (read-line f)) (while (/= dataline "ENDE") (setq dataline (parse_nums dataline)) (setq _layerfarbe (atoi (substr (nth 0 dataline ) 7 ) )) (setq FModus (nth 1 dataline )) (setq _RGB-farbe (nth 2 dataline )) (setq _linienstaerke (strcat (substr (nth 11 dataline ) 1 1 ) "." (substr (nth 11 dataline ) 3) )) (if (= layerfarbe _layerfarbe ) (progn (if (/= "(Object)" _RGB-farbe ) (progn (if (/= "Color 7" FModus) (progn (command "-layer" "Fa" "T" _RGB-farbe layername "ls" _linienstaerke layername "" ) ) (progn (command "-layer" "Fa" "7" layername "ls" _linienstaerke layername "" ) ) ) ) (princ) ) ) (princ) ) (setq dataline (read-line f )) ) (close f) (setq aL (tblnext "LAYER" )) ) ) (alert "Fehler" ) ) ;neuen Layer-STatus speichern (command "-layer" "ST" "S" "ohne_Plotstiltabelle_CTB_plotten" "" "" "" ) (princ "\n---------- fertig ----------\n") ;Hinweis auf Layerstatus (alert "Es wurden zwei Layerstatus - ohne_Plotstiltabelle_CTB_plotten - mit_Plotstiltabelle_CTB_plotten angelegt! Zum ändern Befehl: Layerstatus eingeben. " ) (princ) ;---------------- Scalierung ------------------- (vla-getcustomscale(vla-get-activelayout(vla-get-activedocument(vlax-get-acad-object))) '1zu 'plotmassstab );Maßstab ;(princ 1zu)(princ ":")(princ plotmassstab) (setq plotmassstab2 (/ 1zu plotmassstab )) (initget "Ja Nein N J ") (setq ant2 (getkword (strcat "Aktueller Plotmaßstab > " (rtos 1zu 2 2 ) " : " (rtos plotmassstab 2 2 ) " < verwenden? Ansonsten wird auf 1 : 1 scalieren! /Nein:"))) (if (= ant2 "Nein") (progn (command "varia" "alle" "" "0,0,0" plotmassstab2 ) (setvar "ltscale" (* (getvar "ltscale" ) plotmassstab2 )) ) (progn (princ "\nes wurde der Aktuelle Plotmaßstab beibehalten die Zeichnung wurde nicht scaliert." )(princ) ) ) (command "regen") (princ "\nEs wurden zwei Layerstatus ohne_Plotstiltabelle_CTB_plotten mit_Plotstiltabelle_CTB_plotten angelegt! zum ändern Befehl:Layerstatus eingeben " )(princ) );Ende Mainprogramm