CHÈN TEXT VÀO AUTOCAD TỪ DANH SÁCH TỌA ĐỘ CSV
1. GIỚI THIỆU
Trong quá trình thiết kế bản vẽ AutoCAD, việc chèn text tại các vị trí xác định theo danh sách tọa độ có sẵn là một yêu cầu phổ biến. Để tối ưu hóa công việc này, ứng dụng AutoLISP được phát triển nhằm tự động chèn text vào bản vẽ từ danh sách tọa độ được lưu trữ trong tệp CSV.
2. CHỨC NĂNG CHÍNH
Đọc dữ liệu tọa độ X, Y và nội dung text từ tệp CSV.
Tự động chèn text vào bản vẽ AutoCAD tại các vị trí tương ứng.
Hỗ trợ tùy chỉnh chiều cao chữ, góc xoay và kiểu text.
Giúp tiết kiệm thời gian và giảm thiểu sai sót khi nhập liệu thủ công.
3. CÁCH HOẠT ĐỘNG
Người dùng chuẩn bị một tệp CSV với định dạng:
Code:X,Y,Text 100,200,Điểm A 150,250,Điểm B 200,300,Điểm C
Chạy ứng dụng AutoLISP trong AutoCAD.
Chọn tệp CSV cần nhập.
Ứng dụng sẽ tự động chèn text vào các vị trí tương ứng trong bản vẽ.
4. MÃ NGUỒN AUTOLISP MẪU
Dưới đây là một đoạn mã AutoLISP giúp thực hiện chức năng trên:
;;======ghi text ra mn hinh (defun wtg(txt p g h / sty d h1 h2 wf) ;;;Write txt on graphic screen at p (setq sty(getvar "textstyle") d (tblsearch "style" sty) h1 (cdr (assoc 40 d)) h2 (cdr (assoc 42 d)) wf (cdr (assoc 41 d)) ) (entmake (list (cons 0 "TEXT") (cons 100 "AcDbEntity") (cons 100 "AcDbText") (cons 7 sty) (cons 40 h) (cons 50 g) (cons 41 wf) (cons 1 txt) (cons 10 p) (cons 11 p) (cons 71 0) (cons 72 0) (cons 73 0))) ) ;;=bay loi (defun myerror (s) (cond ((= s "quit / exit abort") (princ)) ((/= s "Function cancelled") (princ (strcat "\nError: " s))) ) (setvar "cmdecho" cmd); Restore saved modes (setvar "osmode" os) (setq *error* OLDERR) (princ) ) (defun c:thongtin() (alert (strcat "\nNguoi viet:Lam Nguyen Trong-SDT-Zalo:0377390879-Email:trongag113@gmail.com-fb:www.facebook.com/trong.lam.7161" "\nNhap lenh ipt de chay chuong trinh")) ) (c:thongtin) ;; main (defun c:ipt (/ fn lst lstgiatri lstkq data lsttoado) (setq cmd (getvar "cmdecho")) (setq os (getvar "osmode")) (setvar "osmode" 0) ;(setvar"pdmode" 66) ; (setvar "pdsize" 5) (SETQ OLDERR *error* *error* myerror) (setq vt 0) (setq h (getreal "\nNhap chieu cao text")) (if (= fn nil) (setq fn (getfiled "\nChon file excel (csv) chua cac gia tri text" "D:\\" "csv" 8)) ) (setq fl (open fn "r")) (while (setq rl (read-line fl)) (while (/= nil vt) (if (= (substr rl (strlen rl) 1) ",") (setq rl (substr rl 1 (- (strlen rl) 1))) (setq rl rl) ) ;;(print rl) (setq vt (vl-string-search "," rl 1)) (if (= vt nil) (setq kq rl) (progn (setq kq (substr rl 1 vt)) (setq rl (substr rl (+ vt 2) (- (strlen rl) (strlen kq) 1))) ;;(print (strcat kq "-" rl)) )) (setq data (append data (list kq))) ) (setq vt 0) (setq lstkq (append lstkq (list data))) (setq data nil) ) (setq i 1) ;; (print lstkq) (while (<= i (- (length lstkq) 1)) (setq x (atof (cadr (nth i lstkq)))) (setq y (atof (caddr (nth i lstkq)))) (setq toado (list x y)) (setq lsttoado (append lsttoado (list toado))) (setq giatri(cadddr (nth i lstkq))) (setq lstgiatri (append lstgiatri (list giatri))) (setq i (1+ i)) ) (setq i 0) (while (< i (length lsttoado)) (wtg (nth i lstgiatri) (nth i lsttoado) 0 h) (setq i (1+ i)) ) (setq lstdiem1 lsttoado) ;;(COMMAND ".line" (nth 0 lstdiem1) (list 0 0) "") (command ".zoom" "W" (nth 0 lstdiem1) (nth (- (length lstdiem1) 1) lstdiem1)) (setvar "osmode" os) (command "undo" "end") (close fl) )
5. HƯỚNG DẪN SỬ DỤNG
Lưu mã AutoLISP trên vào một tệp
.lsp
.Tải tệp
.lsp
vào AutoCAD bằng lệnhAPPLOAD
.Gõ lệnh
InsertTextFromCSV
trong AutoCAD để chạy ứng dụng.Chọn tệp CSV cần nhập.
Kiểm tra bản vẽ để đảm bảo text đã được chèn đúng vị trí.
6. KẾT LUẬN
Ứng dụng AutoLISP này giúp tăng hiệu suất làm việc khi cần chèn nhiều text vào bản vẽ AutoCAD theo danh sách tọa độ. Việc tự động hóa quy trình nhập liệu giúp giảm thiểu sai sót và tiết kiệm thời gian đáng kể. 🚀
Bạn có thể mở rộng ứng dụng bằng cách thêm tùy chọn về chiều cao chữ, kiểu chữ hoặc nhập dữ liệu từ các định dạng khác như Excel. Chúc bạn thành công! 🎯
Không có nhận xét nào:
Đăng nhận xét