Code:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq
x_distance 10
y_distance 2
text_height 1
text_style "??????????"
text_align "ml"
)(defun c:tabelle (/ txt txt_lst x y)
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(command "_style" "txt_style" text_style text_height "1.0" "" "" "" ;|""| ; )
;;; ACAD BUG ? ;;;
(setq data_file (getfiled "Dateiauswahl:" "" "CSV" 0))
(setq start_pt (getpoint
"\nBestimmen sie die linke obere Ecke der Tabelle."
)
)
(setq y (cadr start_pt))
(setq fp (open data_file "r"))
;; read data
(while (setq txt (read-line fp))
(setq txt_lst (parse txt))
(setq x (car start_pt))
(print_lst txt_lst)
(setq y (- y y_distance))
)
(close fp)
)
(defun parse (txt / n count word lst in_quart)
(setq n (strlen txt)
count 1
word ""
in_quart nil
lst nil
)
(while (<= count n)
(setq char (substr txt count 1))
(if (= char "\"")
(if in_quart
(setq in_quart nil)
(setq in_quart T)
)
)
;;;Trennzeichen
(if (and (= char ",") (= in_quart nil))
(progn
(setq lst (append lst (list word)))
(setq word "")
)
(progn
(if (/= char "\"")
(setq word (strcat word char))
)
(if (= count n)
(setq lst (append lst (list word)))
)
)
)
(setq count (1+ count))
)
(setq lst lst)
)
(defun print_lst (lst / txt txt_pt)
(foreach txt lst
(setq txt_pt (list x y))
(command "_.text" "_s" "txt_style" "_j" text_align txt_pt "0" txt)
(setq x (+ x x_distance))
)
(princ)
)
(princ)