Lisp khoanh mây là tiện ích thêm một lệnh ngắn vào AutoCAD để vẽ đường viền dạng đám mây, thứ dùng đánh dấu chỗ vừa sửa trên bản vẽ. Bài này đưa mã nguồn đầy đủ đã chạy thử trên AutoCAD 2026, chỉ chỗ bản mới đổi khác, và nói thẳng gói tải cũ của trang chứa gì.
Tóm tắt. Gõ lệnh VM, nhập chiều dài cung, bấm hai góc chéo nhau là được một đám mây bao quanh vùng cần chú ý. Mã nguồn nằm ngay trong bài, chép vào một tệp .lsp là dùng được, không phải tải gói nào. Bản AutoCAD 2026 đã có sẵn lệnh REVCLOUD làm đúng việc đó, thậm chí nhiều lựa chọn hơn, nên lisp chỉ còn có lý khi bạn muốn một lệnh hai chữ và một câu hỏi duy nhất.
Đám mây trên bản vẽ dùng để làm gì
Đường viền lượn sóng khoanh một vùng bản vẽ là ký hiệu quy ước cho chỗ có thay đổi. Bên thiết kế phát hành bản vẽ lần hai, chỗ nào sửa so với lần một thì khoanh mây lại, kèm số hiệu sửa đổi. Người thi công nhìn vào là biết phải đọc lại chỗ nào, khỏi dò từng nét.
Cách dùng thứ hai phổ biến không kém là ghi chú tạm trong nội bộ. Khoanh một góc mặt bằng rồi viết kèm câu hỏi cho đồng nghiệp, xử lý xong thì xoá. Vì là chú thích tạm nên đám mây thường nằm ở một lớp riêng, để lúc in bản chính thì tắt lớp đó đi.
Gói tải cũ không chứa lisp khoanh mây
Bài này trước đây gắn một liên kết Google Drive. Liên kết vẫn sống, tệp vẫn tải được, nhưng mở gói ra thì bên trong là LispHatch.lsp, dung lượng 2.175 byte, viết ngày 30/3/2020. Đọc mã nguồn thấy nó định nghĩa lệnh HB để tô mặt cắt bê tông, gạch và kính. Đó là tệp của một bài khác, không liên quan gì tới việc vẽ đám mây.
Lưu ý về gói tải. Gói trên Drive của bài này đặt nhầm tệp: nó chứa lisp hatch chứ không chứa lisp vẽ đám mây. Liên kết gốc giữ nguyên ở đây để đối chiếu: tệp nén trên Google Drive. Mật khẩu giải nén: autocad123. Bạn không cần tải nó cho bài này, vì mã lisp khoanh mây đã in đầy đủ ở phần dưới.
Nếu bạn đang tìm đúng tiện ích tô vật liệu ấy thì đọc bài lisp hatch bê tông cốt thép, ở đó có hướng dẫn dùng lệnh HB và cách chỉnh tỉ lệ mẫu tô. Còn muốn vẽ đám mây thì đọc tiếp ngay dưới đây.
Mã nguồn lisp khoanh mây, chép là chạy
Mở Notepad, dán toàn bộ đoạn dưới, lưu thành tệp tên VM.lsp. Nhớ chọn kiểu lưu là All Files để Notepad không tự thêm đuôi .txt.
;;; VM - khoanh may (revision cloud) theo hai goc cheo nhau
;;; autocad123.vn - AutoCAD 2018 tro len
(defun c:VM ( / *error* cmde osm cu dai p1 p2 e )
(defun *error* ( msg )
(if cmde (setvar "CMDECHO" cmde))
(if osm (setvar "OSMODE" osm))
(if (and msg (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")))
(princ (strcat "\nLoi: " msg))
)
(princ)
)
(setq cmde (getvar "CMDECHO")
osm (getvar "OSMODE")
)
(setvar "CMDECHO" 0)
(setq cu (getvar "REVCLOUDAPPROXARCLEN"))
(if (or (null cu) (<= cu 0)) (setq cu 30.0))
(initget 6)
(setq dai (getdist (strcat "\nChieu dai cung <" (rtos cu 2 2) ">: ")))
(if (null dai) (setq dai cu))
(setvar "REVCLOUDAPPROXARCLEN" dai)
(setvar "OSMODE" 0)
(setq p1 (getpoint "\nGoc thu nhat cua vung can khoanh: "))
(if p1 (setq p2 (getcorner p1 "\nGoc doi dien: ")))
(setvar "OSMODE" osm)
(if (and p1 p2)
(progn
(command "_.RECTANG" "_non" p1 "_non" p2)
(setq e (entlast))
(command "_.REVCLOUD" "_A" dai (* 2.0 dai) "_O" e "_N")
(if (and e (entget e)) (command "_.ERASE" e ""))
)
(princ "\nChua du hai diem, chua ve gi.")
)
(setvar "CMDECHO" cmde)
(princ)
)
(princ "\nDa nap VM. Go VM roi chon hai goc cheo nhau.")
(princ)
Mã viết thuần chữ không dấu để không vỡ trên máy đặt bảng mã khác. Ba chỗ đáng nói. Hàm *error* trả lại CMDECHO và OSMODE nguyên trạng, nên bạn bấm Esc giữa chừng cũng không bị mất truy bắt điểm. Lệnh tắt truy bắt điểm trước khi hỏi hai góc, tránh chuyện con trỏ dính vào nét có sẵn làm khung lệch. Và giá trị chiều dài cung được nhớ lại, lần sau chỉ cần bấm Enter là dùng luôn số cũ.
Nạp lisp và chỗ hay bị tưởng là hỏng
Nạp thì gõ APPLOAD, trỏ tới tệp, bấm Load; các bước bấm có ảnh trong bài cách load lisp trong CAD. Nạp kiểu này chỉ sống trong một phiên làm việc. Muốn dùng mãi thì thêm tệp vào Startup Suite ngay trong hộp thoại APPLOAD.
Chỗ vấp nằm ở khâu bảo mật. AutoCAD đời mới không cho tệp lsp chưa ký chạy tự do. Nếu tệp nằm ngoài danh sách thư mục tin cậy, chương trình dừng lại và bật hộp thoại Security - Unsigned Executable File.
Hình 1. Hộp thoại chặn tệp lisp chưa ký. Nút giữa cho chạy một lần, nút phải là từ chối.
Do Not Load chính là nút nhiều người bấm rồi kết luận lisp hỏng. Cách gọn hơn là khai hẳn thư mục chứa lisp vào Trusted Locations trong OPTIONS, thẻ Files. Nên để mọi tệp lisp trong một thư mục cố định trên ổ C, chẳng hạn C:\lisp, kể cả các tệp lấy từ bộ lisp cad tổng hợp, rồi khai đúng một lần cho cả thư mục đó.
Trên máy dùng để kiểm bài này, biến SECURELOAD đang là 1 và danh sách TRUSTEDPATHS rỗng, nghĩa là mọi tệp lisp đều bị hỏi. Đáng nói hơn: nếu ai đó đặt SECURELOAD lên 2, AutoCAD bỏ qua tệp ngoài thư mục tin cậy mà không báo gì cả. Gõ lệnh không thấy phản ứng, không thấy lỗi, dễ tưởng tệp tải về bị thiếu.
Chiều dài cung quyết định hình dạng đám mây
Câu hỏi duy nhất của lệnh là chiều dài cung. Số này tính theo đơn vị bản vẽ, không phải theo phần trăm hay theo tỉ lệ in. Nhập nhỏ thì viền có nhiều nếp li ti, nhìn như ren. Nhập lớn thì mỗi cạnh chỉ còn vài bướu tròn to.
Hình 2. Cùng một khung 600 x 450, chiều dài cung lần lượt 40, 80 và 160. Ảnh chụp trên AutoCAD 2026.
Kinh nghiệm chọn số: lấy cạnh ngắn của vùng cần khoanh chia cho khoảng tám tới mười hai. Khung 600 x 450 thì cung quanh 40 tới 55 là dễ nhìn. Bản vẽ đơn vị milimét, khoanh một chi tiết rộng 2 mét, cung nên đặt quanh 150 tới 200.
Con số này còn ăn theo tỉ lệ in. Đám mây vẽ trong không gian mô hình rồi in ở tỉ lệ 1/100 sẽ co lại một trăm lần, nếp cung nhỏ quá thì trên giấy chỉ còn một vệt dày. Nếu bản vẽ của bạn in nhiều tỉ lệ khác nhau, nên vẽ đám mây thẳng trên layout, khi đó chiều dài cung tính theo milimét giấy và cứ để quanh 5 tới 8 là vừa mắt.
Bản 2026 đã có sẵn lệnh REVCLOUD
Trước khi nạp lisp, nên biết AutoCAD hiện đại đã làm được đúng việc này. Gõ REVCLOUD, dòng nhắc thật trên bản 2026 như sau, chép nguyên văn từ nhật ký lệnh:
Command: REVCLOUD
Minimum arc length: 0.7324 Maximum arc length: 1.4648 Style: Normal Type: Rectangular
Specify first corner point or [Arc length/Object/Rectangular/Polygonal/Freehand/Style/Modify]
Có bảy lựa chọn. Rectangular là hai điểm chéo, đúng thứ lisp làm. Polygonal cho khoanh vùng nhiều cạnh, Freehand cho rê chuột tự do, Object biến một đường tròn hay đường đa tuyến có sẵn thành mây. Style chọn giữa nét đều và nét kiểu bút mài. Modify cho phép chắp thêm hoặc cắt bớt một đoạn của đám mây đã vẽ, thứ mà lisp không có.
Điểm đổi khác lớn nhất so với các hướng dẫn cũ nằm ở chỗ nhập số. Bản cũ hỏi lần lượt chiều dài cung nhỏ nhất rồi lớn nhất. Bản 2026 chỉ hỏi một số duy nhất, gọi là chiều dài cung xấp xỉ, rồi tự suy ra hai đầu mút. Đo trên máy thật: nhập 120 thì hai biến cũ nhận giá trị 80 và 160, tức hai phần ba và bốn phần ba của số vừa nhập. Giá trị mặc định của bản mới cũng theo đúng tỉ lệ ấy, 1.0986 ứng với 0.7324 và 1.4648. Biến giữ số này tên là REVCLOUDAPPROXARCLEN.
Vài biến khác đáng nhớ. REVCLOUDARCVARIANCE mặc định bật, làm các cung dài ngắn khác nhau cho giống nét vẽ tay; tắt đi thì cung đều tăm tắp như bản cũ. REVCLOUDGRIPS mặc định bật, đám mây chỉ hiện vài điểm kẹp để kéo cả khối; tắt đi thì mỗi cung một điểm kẹp, tiện lúc muốn nắn từng nếp.
Vì sao lisp phải vẽ khung trước rồi mới đổi thành mây
Đọc mã ở trên sẽ thấy một chỗ lạ: lệnh vẽ một hình chữ nhật, đổi nó thành mây, rồi xoá hình chữ nhật đi. Nghe vòng vo, nhưng bắt buộc phải thế. Khi REVCLOUD được gọi từ trong lisp hoặc từ tệp script, AutoCAD chuyển sang dòng nhắc rút gọn kiểu cũ, chỉ còn ba lựa chọn:
Specify start point or [Arc length/Object/Style]
Không còn Rectangular, không còn Polygonal. Thử gửi thẳng lựa chọn Rectangular từ lisp thì AutoCAD trả về câu từ chối Point or option keyword required. Vì vậy cách duy nhất để lisp dựng mây từ hai điểm chéo là đi qua ngả Object.
Hình 3. Đường đi ngầm của lệnh VM. Bước ba tồn tại vì biến DELOBJ mỗi máy một khác.
Bước ba là chỗ nhiều bản lisp trôi nổi bỏ sót. Biến DELOBJ quyết định đường dẫn gốc có bị xoá sau khi chuyển đổi hay không. Máy đặt DELOBJ bằng 0 thì sau mỗi lần khoanh mây bạn còn dư một hình chữ nhật nằm chồng bên trong, in ra mới phát hiện. Đoạn mã trên kiểm tra khung tạm còn hay mất rồi mới xoá, nên chạy đúng trên cả hai kiểu cài đặt.
Câu hỏi thường gặp
Gõ VM mà báo Unknown command thì sao?
Lisp chưa nạp, hoặc đã nạp nhưng bạn vừa mở lại AutoCAD. Soát theo thứ tự: đã chạy APPLOAD chưa, hộp thoại bảo mật có hiện ra và bạn có lỡ bấm Do Not Load không, tệp có đúng đuôi .lsp chứ không phải .lsp.txt không.
Lệnh VM có đè lên lệnh tắt nào sẵn có không?
Trong AutoCAD gốc, VM không phải lệnh tắt của lệnh nào. Nhưng nếu bạn từng thêm dòng riêng vào tệp acad.pgp thì nên mở ra soát lại. Lệnh do lisp định nghĩa thắng lệnh tắt trong pgp, nên trùng tên là mất lệnh cũ mà không có cảnh báo.
Đám mây vẽ ra nằm ở lớp nào?
Lớp hiện hành, vì đoạn mã trên cố ý không đụng tới lớp. Muốn mọi đám mây vào một lớp riêng thì đặt lớp đó thành hiện hành trước khi gõ VM, hoặc chọn đám mây rồi đổi lớp trong bảng Properties.
Lisp này chạy trên AutoCAD LT không?
AutoCAD LT từ bản 2024 đã chạy được AutoLISP, và đoạn mã trên chỉ dùng các lệnh cơ bản nên nhiều khả năng chạy được. Bản LT cũ hơn thì không. Trên LT, cách gọn vẫn là gõ thẳng REVCLOUD rồi chọn Rectangular.
Muốn sửa lại một đám mây đã vẽ thì làm thế nào?
Dùng lệnh REVCLOUD với lựa chọn Modify, chọn đám mây cần sửa rồi vẽ đoạn thay thế. Cách này chỉ có ở lệnh gốc, lisp không làm được. Nếu chỉ muốn kéo giãn cả khối thì chọn đám mây và kéo điểm kẹp ở góc.












