Lisp vẽ ống gió là thứ dân HVAC tìm nhiều nhất khi phải triển khai hệ thống điều hoà trên AutoCAD. Bài này đưa hẳn mã nguồn một bộ lisp vẽ ống gió gọn nhẹ, chép ra tệp là dùng được ngay trên AutoCAD 2026. Kèm theo là cách nạp tệp lisp, và phần nói về bộ công cụ NAM mà bài gốc nhắc tới.
Tóm tắt. Bài gồm ba phần. Phần đầu là mã nguồn đầy đủ của hai lệnh tự viết: OGIO vẽ ống gió thành hai nét song song theo tuyến tim bạn chỉ, và OGHI ghi nhãn kích thước ống kiểu 300x200. Phần hai là cách nạp một tệp lisp lên AutoCAD 2026, gồm cả chỗ hay vướng là cảnh báo bảo mật. Phần ba nói về bộ công cụ NAM dạng thanh nút trong bài gốc, và cách nạp một bộ như thế bằng lệnh CUILOAD.
Mã nguồn lisp vẽ ống gió, chép ra tệp là chạy
Trang này không phát tệp lisp. Toàn bộ mã nằm ngay trong bài, đọc được và sửa được. Bạn chép đoạn mã bên dưới vào Notepad, lưu thành tệp tên ONGGIO.lsp, rồi nạp vào AutoCAD bằng lệnh APPLOAD. Cách làm này an toàn hơn tải một tệp lạ về máy, vì bạn nhìn thấy chính xác đoạn mã mình sắp cho chạy.
Hai lệnh trong tệp, lệnh nào làm gì
Tệp chỉ có hai lệnh. Cố ý làm ít, để phần nào cũng chạy chắc.
| Lệnh | Việc nó làm | Hỏi bạn những gì |
|---|---|---|
OGIO | Vẽ ống gió trên mặt bằng thành hai nét song song, mỗi nét cách tim tuyến đúng một nửa bề rộng ống | Bề rộng ống, rồi tuyến tim: chọn đường có sẵn hoặc tự chỉ từng điểm |
OGHI | Ghi một nhãn kích thước ống dạng 300x200 tại điểm bạn chỉ | Bề rộng, bề cao, chiều cao chữ và điểm đặt nhãn |
Hai tên lệnh này đặt ngắn cho dễ gõ, và đã tra trước để không đè lên tên lệnh sẵn có của AutoCAD, cũng không trùng bí danh nào trong tệp acad.pgp.
Toàn bộ mã nguồn
Mở Notepad, dán toàn bộ đoạn dưới, lưu lại. Nhớ chọn kiểu lưu là All Files để Notepad khỏi tự thêm đuôi .txt vào sau tên tệp.
;;; ==========================================================
;;; ONGGIO.lsp - ve ong gio hai net song song tren mat bang
;;;
;;; OGIO : ve ong gio theo mot tuyen tim
;;; OGHI : ghi nhan kich thuoc ong, dang 300x200
;;;
;;; Viet cho AutoCAD 2026, dung duoc tu ban 2013 tro len.
;;; Chi dung ham AutoLISP/ActiveX chuan, khong can Express Tools.
;;; ==========================================================
(vl-load-com)
;; Nho lai so lieu lan chay truoc trong cung phien lam viec.
(if (not og_rong) (setq og_rong 300.0))
(if (not og_cao) (setq og_cao 200.0))
(if (not og_chu) (setq og_chu 0.0))
;;; ---------- tien ich dung chung ----------
;; Tao lop neu chua co. Tra ve ten lop.
(defun og_lop (ten mau)
(if (not (tblsearch "LAYER" ten))
(entmake (list '(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
(cons 2 ten)
'(70 . 0)
(cons 62 mau)
)
)
)
ten
)
;; Dat lai lop cho mot doi tuong ActiveX, bo qua neu that bai.
(defun og_datlop (ob ten)
(vl-catch-all-apply 'vlax-put (list ob 'Layer ten))
)
;; So thuc -> chuoi gon, bo duoi .0 thua.
(defun og_so (x)
(if (equal x (fix x) 1e-8)
(rtos x 2 0)
(rtos x 2 2)
)
)
;; Kieu doi tuong co nhan lam tim tuyen duoc khong.
(defun og_nhanduoc (kieu)
(member kieu '("LINE" "LWPOLYLINE" "POLYLINE" "ARC" "CIRCLE" "ELLIPSE" "SPLINE"))
)
;; Ket qua cua vla-Offset: co the la variant, safearray hoac mot doi tuong.
(defun og_ds (v)
(if (= (type v) 'VARIANT) (setq v (vlax-variant-value v)))
(if (= (type v) 'SAFEARRAY) (vlax-safearray->list v) (list v))
)
;; Sinh hai net song song cach tim tuyen moi ben w/2.
;; Tra ve danh sach hai doi tuong ActiveX, hoac nil neu that bai.
(defun og_hainet (etim w lop / d ob a b r)
(setq d (/ w 2.0)
ob (vlax-ename->vla-object etim)
a (vl-catch-all-apply 'vla-Offset (list ob d))
b (vl-catch-all-apply 'vla-Offset (list ob (- d)))
)
(if (or (vl-catch-all-error-p a) (vl-catch-all-error-p b))
(progn
(if (not (vl-catch-all-error-p a))
(foreach x (og_ds a) (vla-Delete x))
)
(if (not (vl-catch-all-error-p b))
(foreach x (og_ds b) (vla-Delete x))
)
nil
)
(progn
(setq r (append (og_ds a) (og_ds b)))
(foreach x r (og_datlop x lop))
r
)
)
)
;;; ---------- OGIO: ve ong gio ----------
(defun c:OGIO (/ *error* os cl ce w e ed kieu md tim pts p net tuve)
(defun *error* (m)
(if os (setvar "OSMODE" os))
(if cl (vl-catch-all-apply 'setvar (list "CLAYER" cl)))
(if ce (setvar "CMDECHO" ce))
(cond
((null m) nil)
((wcmatch (strcase m) "*CANCEL*,*QUIT*,*ABORT*")
(princ "\nOGIO: da dung. Bien he thong tra lai nhu cu."))
(T (princ (strcat "\nOGIO loi: " m
"\nOGIO: bien he thong tra lai nhu cu.")))
)
(princ)
)
;; cat bien he thong
(setq os (getvar "OSMODE")
cl (getvar "CLAYER")
ce (getvar "CMDECHO")
)
(setvar "CMDECHO" 0)
;; 1. be rong ong. initget 6 = khong nhan 0, khong nhan so am.
(initget 6)
(setq w (getdist (strcat "\nBe rong ong <" (og_so og_rong) ">: ")))
(if w (setq og_rong w) (setq w og_rong))
;; 2. lay tim tuyen: chon doi tuong co san hoac tu ve tuyen moi
(setq tim nil tuve nil)
(initget "Chon Ve")
(setq md (getkword "\nTim tuyen [Chon co san/Ve moi] : "))
(if (not md) (setq md "Ve"))
(if (= md "Ve")
(setq tuve T)
(while (not tim)
(setq e (entsel "\nChon doi tuong lam tim tuyen: "))
(cond
((null e)
(princ "\nKhong chon duoc doi tuong nao. Dung lenh, chua ve gi ca.")
(exit))
(T
(setq ed (entget (car e))
kieu (cdr (assoc 0 ed)))
(if (og_nhanduoc kieu)
(setq tim (car e))
(princ (strcat "\nDoi tuong kieu " kieu
" khong dung lam tim tuyen duoc."
" Hay chon LINE, PLINE, ARC, CIRCLE hoac SPLINE."))
)
)
)
)
)
;; 3. neu tu ve thi hoi cac diem roi dung mot LWPOLYLINE lam tim
(if tuve
(progn
(setq pts nil)
(if (setq p (getpoint "\nDiem dau tuyen: "))
(progn
(setq pts (list p))
(while (setq p (getpoint (car pts) "\nDiem tiep theo [Enter de xong]: "))
(setq pts (cons p pts))
)
(setq pts (reverse pts))
)
)
(if (< (length pts) 2)
(progn
(princ "\nCan it nhat hai diem moi thanh mot tuyen. Chua ve gi ca.")
(exit)
)
)
(og_lop "ONG-GIO-TIM" 8)
(setvar "CLAYER" "ONG-GIO-TIM")
(entmake
(append
(list '(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
(cons 90 (length pts))
'(70 . 0)
)
(mapcar '(lambda (q) (cons 10 (list (car q) (cadr q)))) pts)
)
)
(setq tim (entlast))
)
)
;; 4. sinh hai net thanh ong
(setvar "OSMODE" 0)
(og_lop "ONG-GIO" 4)
(setq net (og_hainet tim w "ONG-GIO"))
;; 5. tra lai bien he thong
(setvar "OSMODE" os)
(vl-catch-all-apply 'setvar (list "CLAYER" cl))
(setvar "CMDECHO" ce)
(if net
(princ (strcat "\nOGIO: xong. Be rong " (og_so w)
", hai net tren lop ONG-GIO"
(if tuve ", tim tuyen tren lop ONG-GIO-TIM" "")
"."))
(princ "\nOGIO: khong offset duoc tuyen nay. Tuyen co the qua ngan so voi be rong ong.")
)
(princ)
)
;;; ---------- OGHI: ghi nhan kich thuoc ong ----------
(defun c:OGHI (/ *error* os cl ce a b h p s lop)
(defun *error* (m)
(if os (setvar "OSMODE" os))
(if cl (vl-catch-all-apply 'setvar (list "CLAYER" cl)))
(if ce (setvar "CMDECHO" ce))
(cond
((null m) nil)
((wcmatch (strcase m) "*CANCEL*,*QUIT*,*ABORT*")
(princ "\nOGHI: da dung. Bien he thong tra lai nhu cu."))
(T (princ (strcat "\nOGHI loi: " m
"\nOGHI: bien he thong tra lai nhu cu.")))
)
(princ)
)
(setq os (getvar "OSMODE")
cl (getvar "CLAYER")
ce (getvar "CMDECHO")
)
(setvar "CMDECHO" 0)
(initget 6)
(setq a (getdist (strcat "\nBe rong ong <" (og_so og_rong) ">: ")))
(if a (setq og_rong a) (setq a og_rong))
(initget 6)
(setq b (getdist (strcat "\nBe cao ong <" (og_so og_cao) ">: ")))
(if b (setq og_cao b) (setq b og_cao))
(if (<= og_chu 0.0)
(setq og_chu (if (> (getvar "TEXTSIZE") 0.0) (getvar "TEXTSIZE") (/ og_rong 3.0)))
)
(initget 6)
(setq h (getdist (strcat "\nChieu cao chu <" (og_so og_chu) ">: ")))
(if h (setq og_chu h) (setq h og_chu))
(setq p (getpoint "\nDiem dat nhan: "))
(if (null p)
(progn
(princ "\nChua chon diem dat. Khong ghi nhan nao.")
(exit)
)
)
(setq s (strcat (og_so a) "x" (og_so b)))
(setq lop (og_lop "ONG-GIO-GHI" 2))
(setvar "OSMODE" 0)
(setvar "CLAYER" lop)
(entmake (list '(0 . "TEXT")
'(100 . "AcDbEntity")
(cons 8 lop)
'(100 . "AcDbText")
(cons 10 (list (car p) (cadr p) 0.0))
(cons 40 h)
(cons 1 s)
'(50 . 0.0)
'(72 . 1)
(cons 11 (list (car p) (cadr p) 0.0))
'(100 . "AcDbText")
'(73 . 2)
)
)
(setvar "OSMODE" os)
(vl-catch-all-apply 'setvar (list "CLAYER" cl))
(setvar "CMDECHO" ce)
(princ (strcat "\nOGHI: da ghi nhan " s " tren lop " lop "."))
(princ)
)
(princ "\nDa nap ONGGIO.lsp. Go OGIO de ve ong gio, OGHI de ghi kich thuoc ong.")
(princ)
Ba lớp mà lệnh tự tạo ra
Mã tự tạo lớp nếu bản vẽ chưa có, rồi trả lại lớp hiện hành như cũ. Bạn không phải đặt trước gì cả.
| Tên lớp | Màu | Chứa gì |
|---|---|---|
| ONG-GIO | 4, xanh lơ | Hai nét thành ống |
| ONG-GIO-TIM | 8, xám | Tuyến tim, chỉ sinh ra khi bạn tự vẽ tuyến |
| ONG-GIO-GHI | 2, vàng | Nhãn kích thước do lệnh OGHI ghi |
Tách lớp như vậy để lúc in bạn tắt bật được từng thứ. Tim tuyến thường không in ra, nhưng giữ lại rất tiện khi cần đặt miệng gió hay dời cả tuyến.
Dùng hai lệnh này ngoài bản vẽ
Vẽ một tuyến ống mới
Gõ OGIO, nhập bề rộng ống, ví dụ 800. Đến dòng hỏi tuyến tim thì bấm Enter để nhận mặc định là tự vẽ tuyến. Sau đó chỉ lần lượt các điểm gãy của tuyến, bấm Enter khi hết. Lệnh dựng tuyến tim rồi sinh hai nét thành ống cách đều tuyến ấy.

Hình 1. Một tuyến ống rộng 800 vẽ bằng lệnh OGIO trên AutoCAD 2026. Hai nét xanh lơ là thành ống, nét xám ở giữa là tim tuyến. Chỗ gãy được vát góc đúng, hai thành ống vẫn cách nhau 800 qua khỏi góc. Nhãn 800x400 màu vàng là kết quả của lệnh OGHI.
Góc gãy là chỗ dễ sai nhất khi tự tính toạ độ bằng tay. Mã ở đây không tính tay mà nhờ chính bộ máy dựng hình của AutoCAD lệch tuyến sang hai bên, nên chỗ gãy luôn vát đúng và hai thành ống giữ đủ bề rộng qua góc.
Lấy một đường có sẵn làm tim tuyến
Nhiều khi tuyến ống đã có sẵn trên bản vẽ, chẳng hạn một đường tim do kiến trúc gửi sang. Lúc đó gõ OGIO, nhập bề rộng, rồi gõ chữ C để chọn đường có sẵn. Lệnh nhận đoạn thẳng, đa tuyến, cung tròn, đường tròn, elip và spline. Đường gốc được giữ nguyên trên lớp của nó, không bị xoá và không bị đổi lớp.
Ghi nhãn kích thước ống
Gõ OGHI, nhập bề rộng và bề cao, chọn chiều cao chữ, rồi chỉ điểm đặt. Nhãn ghi ra dạng 300x200, canh giữa quanh điểm bạn chỉ. Lần chạy sau lệnh nhớ lại số cũ nên bạn chỉ cần bấm Enter nếu ống vẫn cùng kích thước.
Khi nhập sai thì lệnh xử sự thế nào
Bề rộng phải là số dương. Gõ 0 hoặc số âm thì AutoCAD trả lại đúng một dòng ngắn Value must be positive and nonzero rồi hỏi lại, chứ không vẽ bừa. Chọn nhầm một dòng chữ làm tim tuyến thì lệnh báo rõ kiểu đối tượng vừa chọn và nhắc lại danh sách kiểu nhận được. Bấm Esc giữa chừng cũng không để lại rác: phần bắt lỗi trả biến hệ thống về đúng giá trị trước khi gọi lệnh.
Nạp tệp lisp lên AutoCAD 2026
Nạp nhanh bằng APPLOAD
Gõ APPLOAD, trỏ tới tệp ONGGIO.lsp vừa lưu, bấm Load rồi Close. Dòng lệnh báo đã nạp là gõ được ngay OGIO. Cách này chỉ có tác dụng cho phiên đang mở. Muốn nạp lại mỗi lần khởi động thì bấm nút Contents trong mục Startup Suite của chính hộp thoại đó rồi thêm tệp vào. Bài cách load lisp trong CAD nói kỹ hơn về từng cách nạp.
Khai báo thư mục chứa tệp .lsp
Nếu bạn có cả một thư mục tệp lisp thì khai báo hẳn thư mục sẽ tiện hơn. Mở hộp thoại bằng lệnh OPTIONS, hoặc gõ tắt OP. Vào thẻ Files, mục đầu tiên trong cây là Support File Search Path. Bấm dấu cộng để mở nhánh, bấm Add, rồi bấm Browse và trỏ tới thư mục chứa các tệp .lsp. Bấm OK là xong.

Hình 2. Thẻ Files của hộp thoại Options trên AutoCAD 2026. Dòng đầu là Support File Search Path, chỗ khai báo thư mục chứa tệp lisp. Dòng thứ ba là Trusted Locations, chỗ dùng ở bước sau để tắt cảnh báo bảo mật.
Ý nghĩa của danh sách này đơn giản hơn vẻ ngoài. Đó là chỗ AutoCAD đi tìm khi một lệnh gọi tệp mà không kèm đường dẫn đầy đủ. Không khai báo thì AutoCAD chỉ tìm trong thư mục cài đặt và thư mục bản vẽ hiện hành.
Vượt cảnh báo bảo mật khi nạp mã chưa ký
Từ nhiều năm nay AutoCAD chặn mặc định mọi tệp mã lấy từ thư mục lạ. Biến điều khiển việc này tên là SECURELOAD, mặc định bằng 1, còn danh sách thư mục tin cậy TRUSTEDPATHS thì để rỗng.
| SECURELOAD | AutoCAD xử sự thế nào |
|---|---|
| 0 | Nạp mọi tệp mã, không hỏi han. Autodesk khuyên không dùng |
| 1 | Nạp thẳng nếu tệp nằm trong thư mục tin cậy, ngoài ra thì hiện cảnh báo |
| 2 | Chỉ nạp từ thư mục tin cậy, tệp ở chỗ khác bị bỏ qua im lặng |
Thư mục C:\Program Files và C:\Program Files (x86) cùng các thư mục con luôn được coi là tin cậy. Tệp lisp bạn lưu ra Desktop hay Downloads thì không, nên hộp thoại cảnh báo sẽ nhảy ra.

Hình 3. Hộp thoại cảnh báo trên AutoCAD 2026 khi nạp một tệp lisp vẽ ống nước để trong thư mục tạm. Nó cho biết tên tệp, nhà phát hành và thư mục chứa, kèm ba nút. Load Once nạp cho lần này thôi. Always Load nạp và nhớ luôn. Do Not Load từ chối.
Cách gọn nhất là thêm thư mục chứa tệp lisp vào Trusted Locations trong thẻ Files đã nói ở trên. Chọn một thư mục chỉ chứa tệp bạn tin, và tốt nhất là đặt thuộc tính chỉ đọc cho nó. Đừng hạ SECURELOAD về 0 chỉ để đỡ phiền, vì như thế là mở cửa cho mọi mã lạ đi kèm bản vẽ người khác gửi. Bộ lisp đổi màu đối tượng cũng nạp theo đúng cách này.
Có một kiểu hỏng khó đoán nằm ở giá trị 2. Khi SECURELOAD bằng 2, tệp ngoài thư mục tin cậy bị bỏ qua mà không báo gì cả. Người dùng tưởng tệp hỏng hoặc tải thiếu, trong khi thật ra AutoCAD chỉ lặng lẽ từ chối.
Mở bản vẽ thứ hai là mất lệnh
Tệp acad.lsp chỉ được nạp một lần lúc khởi động chương trình, chứ không nạp lại cho từng bản vẽ. Biến quyết định việc này là ACADLSPASDOC, mặc định bằng 0, và bản 2026 vẫn giữ nguyên mặc định đó.
Hệ quả là bản vẽ mở đầu tiên thì lệnh chạy ngon, còn tab thứ hai lại báo không biết lệnh. Có hai cách chữa. Đặt ACADLSPASDOC bằng 1 để nạp lại cho mỗi bản vẽ mới. Hoặc nạp lại bằng APPLOAD mỗi khi sang bản vẽ khác.
Bộ công cụ NAM trong bài gốc gồm những thanh nào
Bài gốc năm 2020 chụp lại màn hình một bộ công cụ HVAC do người Việt viết, quen gọi là bộ NAM. Ảnh chụp trên AutoCAD 2008 nên giao diện đã cũ, nhưng nội dung các thanh nút thì vẫn đọc được.

Hình 4. Ảnh gốc của bài cũ, chụp trên AutoCAD 2008 với giao diện Classic. Giao diện nền của AutoCAD nay đã khác hẳn, nhưng các thanh nút thả nổi vẫn hiện đúng kiểu này sau khi nạp tệp giao diện. Góc phải là một mặt bằng điều hoà đang vẽ dở, lớp hiện hành tên AC-DIM-DUCT.
| Tên thanh | Nhóm việc |
|---|---|
| NAM-DUCT-2D-1 | Vẽ đoạn ống, co, chuyển tiết diện, chạc ba trên mặt bằng |
| NAM-DUCT-2D-3 | Nhóm nút ống thứ hai, kèm vài nút ghi kích thước ống |
| NAM-BULON | Bu lông, mặt bích, gối đỡ và chi tiết bắt ống |
| NAM-COLOR | Đổi màu nhanh theo nhóm, và chứa nút Load nạp mã |
| NAM-LT | Đổi kiểu đường, thường dùng cho ống khuất và trục |
| NAM-REDRAW | Vẽ lại màn hình và vài lệnh dọn hình |
| Space | Chuyển qua lại giữa không gian mô hình và không gian in |
Chi tiết đáng nhớ nhất nằm ở thanh NAM-COLOR: có một nút tên Load. Bài gốc dặn phải bấm nút đó trước khi vẽ. Đó chính là cách bộ này nạp mã vào bản vẽ đang mở, đúng như chuyện ACADLSPASDOC vừa nói ở trên.
Nạp một bộ công cụ dạng thanh nút
Một bộ công cụ kiểu này luôn có hai phần tách rời. Phần giao diện là tệp .cuix đời nay, chứa hình nút và tên lệnh mà nút sẽ gọi. Phần mã là các tệp .lsp hoặc .vlx, chứa nội dung thật của lệnh. Nạp một phần thôi thì bộ công cụ không chạy.
Hình 5. Hai nửa của việc cài một bộ công cụ. Đa số ca hỏi cài rồi mà không chạy là do làm xong nửa trái rồi bỏ quên nửa phải.
Bài gốc bảo gõ MENULOAD. Tên đó có từ thời tệp menu còn đuôi .mnu. Tên được ghi trong tài liệu AutoCAD 2026 cho hộp thoại này là CUILOAD, và CUIUNLOAD cũng mở đúng hộp thoại ấy.

Hình 6. Hộp thoại Load/Unload Customizations chụp trên AutoCAD 2026 bản 25.1, giao diện tiếng Anh. Danh sách nhóm đang nạp sẵn của máy sạch gồm ACAD, APPMANAGER, CUSTOM, EXPRESS, FEATUREDAPPS và MODELDOC. Bộ công cụ bạn nạp thêm sẽ hiện thành một dòng mới trong danh sách này.
Trình tự trong hộp thoại rất ngắn. Bấm Browse, trỏ tới tệp giao diện trong thư mục vừa giải nén, bấm Load, rồi bấm Close. Nếu tên bộ công cụ xuất hiện trong khung Loaded Customization Groups thì nửa thứ nhất đã xong.
Muốn gỡ về sau thì cũng chính hộp thoại này. Chọn tên nhóm trong khung trên rồi bấm Unload. Đừng xoá tệp ngoài ổ đĩa mà quên gỡ trong đây, vì AutoCAD sẽ báo thiếu tệp mỗi lần khởi động.
Tệp .cui đời cũ và định dạng .cuix ngày nay
Bài gốc nói tới tệp acadNAM.cui. Đuôi .cui là định dạng của AutoCAD khoảng 2006 đến 2009. Từ đó tới nay Autodesk gộp ba định dạng cũ là .mnu, .mns và .cui thành một định dạng duy nhất đuôi .cuix.
Tệp cũ vẫn dùng được, chỉ là phải đổi qua một lượt. Gõ lệnh CUI để mở trình biên tập giao diện, sang thẻ Transfer, mở tệp .cui cũ ra. AutoCAD tự tạo một tệp .cuix cùng tên, còn tệp gốc thì giữ nguyên không sửa. Sau đó nạp tệp .cuix mới sinh bằng CUILOAD.
Video dưới đây là hướng dẫn cài bộ công cụ HVAC dạng thanh nút mà bài gốc đã dẫn.
Bấm nút mà không chạy thì soát theo thứ tự nào
Phần lớn câu hỏi dưới các bài công cụ HVAC đều quy về bốn tình huống. Soát theo đúng thứ tự dưới đây thì hiếm khi phải cài lại từ đầu.
Hình 7. Bốn chỗ hỏng thường gặp, xếp theo thứ tự nên soát. Mỗi bước chỉ tốn vài giây và loại được một nhóm nguyên nhân.
Vẽ ống gió khi không muốn nạp thêm gì
Không phải lúc nào cũng nạp được mã, nhất là trên máy công ty bị khoá. AutoCAD sẵn có đủ thứ để vẽ ống gió hai chiều tử tế.
Dùng MLINE cho hai thành ống
Ống gió trên mặt bằng thực chất là hai đường song song, cách nhau đúng bằng bề rộng ống. Lệnh MLINE vẽ nhiều đường song song trong một lần, và vẫn có mặt trên AutoCAD 2026 lẫn AutoCAD LT 2026.
Cách làm quen tay là định nghĩa một kiểu bằng lệnh MLSTYLE với hai thành cách nhau một đơn vị, rồi khi vẽ thì nhập tuỳ chọn Scale bằng đúng bề rộng ống. Hệ số tỷ lệ nhân vào bề rộng đã khai trong kiểu, nên kiểu rộng một đơn vị sẽ cho ống 400 khi bạn nhập 400. Tuỳ chọn Justification quyết định con trỏ chạy ở tim ống hay mép ống.
Đặt lớp và màu trước khi vẽ
Việc này quan trọng hơn cả chuyện dùng lệnh nào. Hồ sơ HVAC luôn phải tách được ống cấp, ống hồi, ống thải và ống nước ngưng khi in. Đặt mỗi loại một lớp riêng, gán màu riêng, rồi mới bắt đầu vẽ.
Thêm một lớp riêng cho chữ ghi kích thước ống. Ảnh chụp trong bài gốc cho thấy tác giả cũng làm vậy: lớp hiện hành lúc chụp tên là AC-DIM-DUCT. Đặt lớp trước thì lúc đưa bản vẽ cho người khác, họ tắt bật từng hệ thống được ngay.
Câu hỏi thường gặp
Bài cũ bảo gõ MENULOAD, bản 2026 thì gõ gì
Cứ gõ CUILOAD. Đó là tên tài liệu AutoCAD 2026 dùng cho hộp thoại Load/Unload Customizations, và CUIUNLOAD mở đúng hộp thoại ấy với đủ nút Browse, Load, Unload và Close. Tên MENULOAD là tên đời cũ, máy nào còn nhận thì cũng dẫn tới cùng chỗ.
Bản AutoCAD LT có chạy được mã trong bài này không
Từ bản LT 2024 trở đi thì AutoCAD LT chạy được AutoLISP. Mã ở đây có gọi vài hàm ActiveX bắt đầu bằng vla- và vlax-, mà LT hạn chế phần này, nên hãy thử trên chính máy bạn trước khi tin. Các bản LT trước 2024 thì không chạy AutoLISP.
Vì sao lệnh chỉ vẽ hai nét, không vẽ co và chạc ba
Vì làm ít mà chắc thì tốt hơn làm nhiều mà hay hỏng. Co, chạc ba và côn chuyển tiết diện đều cần thêm số liệu về bán kính uốn và cách nối, mỗi hồ sơ một quy ước khác nhau. Hai nét thành ống thì hồ sơ nào cũng giống nhau, nên phần này gói gọn lại cho chạy chắc.
Vẽ ống gió xong thì ghi kích thước theo quy ước nào
Ống chữ nhật ghi theo bề rộng nhân bề cao mặt cắt, ví dụ 400x200, đơn vị milimét. Ống tròn ghi đường kính, kiểu D250. Đặt chữ ghi trên một lớp riêng để in nét mảnh hơn nét ống.
Tìm ký hiệu ống gió và thư viện block ở đâu trên trang này
Bài thư viện cad HVAC có một gói block riêng cho phần cơ điện, kèm gợi ý đặt lớp. Cần block phần thi công thì xem bài thư viện cad giàn giáo.

















