(defun c:ltfscale () (command "_undo" "b") (setq luprecmem (getvar "luprec")) (setvar "luprec" 8) (setq ltf_neu (getreal (strcat "neuer LT-Faktor <" (rtos (getvar "ltscale")) "> " ) ) ) (_ltfscale ltf_neu) (setvar "luprec" luprecmem) (command "_undo" "e") (princ) ) (defun _ltfscale (ltf_neu / n) (setq temp_pfad "c:/temp/") (setq ltf_calc (/ (getvar "ltscale") ltf_neu)) (setq tempdatlist (list)) (setq def (tblnext "LTYPE" t)) (setq mem_luprec (getvar "luprec")) (setvar "luprec" 8) (while def (setq name (strcase (cdr (assoc 2 def)))) (setq neuname "") (setq n 1) (repeat (strlen name) (if (/= (substr name n 1) "|") (setq neuname (strcat neuname (substr name n 1))) (setq neuname (strcat neuname "_")) ) (setq n (1+ n)) ) (if (not (equal name neuname)) (progn (setq ent_name (tblobjname "LTYPE" name)) (setq ent_data (entget ent_name)) (setq ent_data (subst (cons 2 neuname) (assoc 2 ent_data) ent_data) ) (entmod ent_data) (setq name neuname) ) ) (if (tblobjname "LTYPE" name) (if (and (not (wcmatch name "*CONTINUOUS")) (not (wcmatch name "*AUSGEZOGEN")) ) (progn (setq ent_name (tblobjname "LTYPE" name)) (setq ent_data (entget ent_name)) (print (strcat (cdr (assoc 2 ent_data)) " wird neu definiert") ) (mk_ltdat) ) ) (print "XREF abhängige Linientypen können nicht konvertiert werden" ) ) (setq def (tblnext "LTYPE")) ) (if tempdatlist (progn (setq datei (open (strcat temp_pfad "temp.lin") "w")) (foreach zeile tempdatlist (write-line zeile datei) ) (close datei) (setq name_list (list)) (setq stellen 0) (setq datei (open (strcat temp_pfad "temp.lin") "r")) (while (setq zeile (read-line datei)) (if (= (substr zeile 1 1) "*") (progn (setq n 2) (while (and (/= (substr zeile n 1) ",") (<= n (strlen zeile))) (setq n (1+ n)) ) (setq name (substr zeile 2 (- n 2))) (setq stellen (max stellen (strlen name))) (setq name_list (cons name name_list)) ) ) ) (close datei) (setvar "cmdecho" 0) (setvar "filedia" 0) (foreach name (acad_strlsort name_list) (command "-linientyp" "l" name (strcat temp_pfad "temp.lin") ) (while (> (getvar "cmdactive") 0) (command "")) (setq leerstellen "") (repeat (- stellen (strlen name)) (setq leerstellen (strcat " " leerstellen)) ) (princ (strcat leerstellen name " neugeladen")) ) (if (equal ltf_calc 1.0) (progn (command "shell" (strcat "copy " temp_pfad "temp.lin " (getvar "dwgprefix") "temp.lin" ) ) (print "Definitionsdatei kopiert") ) ) (command "shell" (strcat "del " temp_pfad "temp.lin")) ) ) (setvar "ltscale" ltf_neu) (setvar "luprec" mem_luprec) (setvar "filedia" 1) (setvar "cmdecho" 1) ) (defun mk_ltdat (/ n) (setq zeile1 (strcat "*" (cdr (assoc 2 ent_data)) "," (cdr (assoc 3 ent_data)) ) ) (setq zeile2 "A") (setq anzahl (cdr (assoc 73 ent_data))) (setq gesamtl (cdr (assoc 40 ent_data))) (setq dummy_list ent_data) (repeat anzahl (setq dummy_list (member (assoc 49 dummy_list) dummy_list)) (setq data_list (list (car dummy_list))) (setq n 1) (while (and (< n (length dummy_list)) (/= (car (nth n dummy_list)) 49) ) (setq data_list (cons (nth n dummy_list) data_list)) (setq n (1+ n)) ) (setq data_list (reverse data_list)) (setq laenge (cdr (assoc 49 data_list))) (setq komplex (cdr (assoc 74 data_list))) (cond ((= komplex 0) (setq zeile2 (strcat zeile2 "," (rtos (* laenge ltf_calc)))) ) ((= komplex 2) (if (null (assoc 340 data_list)) (setq data_list dummy_list) ) (setq txt (cdr (assoc 9 data_list))) (if (entget (cdr (assoc 340 data_list))) (setq txtstil (cdr (assoc 2 (entget (cdr (assoc 340 data_list))))) ) ) (setq zeile2 (strcat zeile2 "," (rtos (* laenge ltf_calc)))) (setq zeile2 (strcat zeile2 ",[\"" txt "\"," txtstil)) (if (setq skal (assoc 46 data_list)) (setq zeile2 (strcat zeile2 ",S=" (rtos (* (cdr skal) ltf_calc))) ) ) (if (setq dreh (assoc 50 data_list)) (setq zeile2 (strcat zeile2 ",R=" (rtos (* (/ (cdr dreh) pi) 180))) ) ) (if (setq x_pos (assoc 44 data_list)) (setq zeile2 (strcat zeile2 ",X=" (rtos (* (cdr x_pos) ltf_calc))) ) ) (if (setq y_pos (assoc 45 data_list)) (setq zeile2 (strcat zeile2 ",Y=" (rtos (* (cdr y_pos) ltf_calc))) ) ) (setq zeile2 (strcat zeile2 "]")) ) ((= komplex 4) (if (null (assoc 340 data_list)) (setq data_list dummy_list) ) (setq sym_nr (cdr (assoc 75 data_list))) (if (entget (cdr (assoc 340 data_list))) (setq txtstil (cdr (assoc 2 (entget (cdr (assoc 340 data_list))))) ) ) (if (entget (cdr (assoc 340 data_list))) (setq shx_datname (cdr (assoc 3 (entget (cdr (assoc 340 data_list)))) ) ) ) (if (/= txtstil "") (progn (setq shx_datname (cdr (assoc 3 (entget (tblobjname "STYLE" txtstil)) ) ) ) ) ) (setq pos 1) (while (and (< pos (strlen shx_datname)) (/= (substr shx_datname pos 1) ".") ) (setq pos (1+ pos)) ) (setq shp_datname (strcat (substr shx_datname 1 pos) "shp")) (if (findfile shp_datname) (progn (if (not (findfile shx_datname)) (progn (setvar "filedia" 0) (command "kmpilier" (findfile shp_name)) ) ) ) ) (if (findfile shx_datname) (progn (setq stildatname shx_datname) (if (null loaded_sym_list) (progn (mk_loaded_sym_list) ) ) (setq sym_name (cdr (assoc sym_nr (cdr (assoc stildatname loaded_sym_list)) ) ) ) (if (null sym_name) (progn (foreach data (cdr (assoc stildatname loaded_sym_list)) (if (equal (car data) sym_nr) (setq sym_name (cdr data)) ) ) ) ) ) ) (setq zeile2 (strcat zeile2 "," (rtos (* laenge ltf_calc)))) (if (and sym_name stildatname) (setq zeile2 (strcat zeile2 ",[" sym_name "," stildatname)) (setq zeile2 (strcat zeile2 ",[" ",")) ) (if (setq skal (assoc 46 data_list)) (setq zeile2 (strcat zeile2 ",S=" (rtos (* (cdr skal) ltf_calc))) ) ) (if (setq dreh (assoc 50 data_list)) (setq zeile2 (strcat zeile2 ",R=" (rtos (* (/ (cdr dreh) pi) 180))) ) ) (if (setq x_pos (assoc 44 data_list)) (setq zeile2 (strcat zeile2 ",X=" (rtos (* (cdr x_pos) ltf_calc))) ) ) (if (setq y_pos (assoc 45 data_list)) (setq zeile2 (strcat zeile2 ",Y=" (rtos (* (cdr y_pos) ltf_calc))) ) ) (setq zeile2 (strcat zeile2 "]")) ) ) (setq dummy_list (cdr dummy_list)) ) ;;; (print zeile1) ;;; (print zeile2) ;;; (print "--------------------") (if (> anzahl 0) (progn (setq zeile2_list (zerlege_art zeile2 "," "str")) (if (minusp (atof (nth 1 zeile2_list))) (progn (setq zeile2_list (append (list (nth 0 zeile2_list)) (cddr zeile2_list) (list (nth 1 zeile2_list)) ) ) (setq zeile2 "") (mapcar '(lambda (dummy) (setq zeile2 (strcat zeile2 "," dummy))) zeile2_list ) (setq zeile2 (substr zeile2 2)) ) ) (setq tempdatlist (cons zeile2 tempdatlist)) (setq tempdatlist (cons zeile1 tempdatlist)) ) ) ) (defun mk_loaded_sym_list (/ sym_nr dummy dummy1 dummy_list dummy_list1 dummy_list2 dummy_list3 log_list datei ok ) (setvar "cmdecho" 0) (print "suche geladene Symbole in Symboldateien") (print) (setq mem_logfilemode (getvar "logfilemode")) (setvar "logfilemode" 1) (setvar "cmdecho" 1) (command "symbol" "?" "*") (setvar "cmdecho" 0) (setvar "logfilemode" mem_logfilemode) (setq log_list (list)) (setq datei (open (getvar "logfilename") "r")) (while (setq zeile (read-line datei)) (setq log_list (cons zeile log_list)) ) (close datei) (if (= mem_logfilemode 0) (vl-file-delete (getvar "logfilename")) ) (setq mem_logfilemode nil) (setq dummy_list (list)) (setq ok t) (foreach log_ log_list (if (equal log_ "Zur Verfügung stehende Symbole:") (setq ok nil) ) (if ok (setq dummy_list (cons log_ dummy_list)) ) ) (setq loaded_sym_list (list)) (setq dummy_list1 (list)) (setq dummy_list2 (list)) (setq ok t) (foreach dummy dummy_list (cond ((and ok (wcmatch dummy "Datei:*")) (if dummy_list1 (progn (setq loaded_sym_list (cons (reverse dummy_list1) loaded_sym_list ) ) (setq dummy_list1 (list)) ) ) (setq dummy (zerlege_art dummy " " "str")) (setq dummy_list3 (list)) (foreach dummy1 dummy (if (not (equal dummy1 "")) (setq dummy_list3 (cons dummy1 dummy_list3)) ) ) (setq dummy (reverse dummy_list3)) (setq dummy_list1 (cons (nth 1 dummy) dummy_list1)) ) ((equal dummy "") (setq dummy dummy)) ((wcmatch dummy "Befehl*") (setq ok nil)) ((wcmatch dummy "*.*") (setq ok nil)) ((and ok (not (wcmatch dummy "Datei:*")) (not (equal dummy "")) (not (wcmatch dummy "Befehl*")) ) (setq dummy (cutspace dummy)) (setq dummy (zerlege_art dummy " " "str")) (foreach sym dummy (if (/= sym "") (setq dummy_list1 (cons sym dummy_list1)) ) ) ) ) ;end cond ) ;end foreach (setq loaded_sym_list (vl-remove 'nil (cons (reverse dummy_list1) loaded_sym_list) ) ) (setq n 0) (while (tblsearch "LTYPE" (setq temp_name (strcat "TEMP" (itoa n))) ) (setq n (1+ n)) ) (setvar "cmdecho" 0) (setq dummy_list (list)) (foreach dummy loaded_sym_list (setq dummy_list1 (list)) (setq symfile (nth 0 dummy)) (setq dummy_list1 (cons symfile dummy_list1)) (setq temp_pfad (nth 1 (assoc "Temporärpfad = " (cdr (assoc "GRUNDSÄTZLICHES" k_einstellung)) ) ) ) (foreach sym (cdr dummy) (setq zeile_temp (strcat "A,1,-1,[" sym "," symfile "],-1,1")) (setq datei (open (strcat temp_pfad "temp.lin") "w")) (write-line (strcat "*" (strcase temp_name) "," temp_name " -") datei ) (write-line zeile_temp datei) (close datei) (print sym) (command "-linientyp" "l" temp_name (strcat temp_pfad "temp.lin") "" ) (setq ent_name (tblobjname "LTYPE" temp_name)) (setq ent_data (entget ent_name)) (setq sym_nr (cdr (assoc 75 ent_data))) (setq dummy_list1 (cons (cons sym_nr sym) dummy_list1)) (command "_purge" "lt" temp_name "n") ) (setq dummy_list (cons (reverse dummy_list1) dummy_list)) ) (setq loaded_sym_list (reverse dummy_list)) ) (defun zerlege_art (zeile trenner art / liste pos laenge wert) ;Text in Liste mk_zerlegen (if (not (listp trenner)) (setq trenner (list trenner)) ) (if zeile (progn (setq liste (list)) (setq pos 0) (setq laenge 1) (repeat (strlen zeile) (if (member (substr zeile (+ pos laenge) 1) trenner) (progn (if (substr zeile (1+ pos) (1- laenge)) (progn (setq wert (substr zeile (1+ pos) (1- laenge))) (cond ((= art "real") (setq wert (atof wert)) ) ((= art "int") (setq wert (atoi wert)) ) ) (setq liste (cons wert liste)) ) ) (setq pos (+ pos laenge)) (setq laenge 1) ) (setq laenge (1+ laenge)) ) ) (setq wert (substr zeile (1+ pos))) (cond ((= art "real") (setq wert (atof wert)) ) ((= art "int") (setq wert (atoi wert)) ) ) (setq liste (cons wert liste)) (setq liste (reverse liste)) ) ) liste )