Bạn tải về một tệp lisp, gõ AP, chọn tệp, bấm Load. Máy chớp một cái rồi thôi, gõ lệnh của lisp thì báo không biết lệnh. Hoặc tệ hơn, một hộp thoại tiếng Anh nhảy ra mà không rõ nên bấm nút nào.
Đó là lý do lệnh appload trong cad có tới 198 lượt tìm kèm chữ "lỗi" trong dữ liệu tìm kiếm của chúng tôi. Bài này chụp đúng cái hộp thoại ấy trên AutoCAD 2027 tại Viện, giải thích nó hỏi gì và chỉ cách để nó đừng hỏi nữa. Nếu bạn muốn học cả phần tự động hoá bản vẽ, Viện có khóa AutoCAD cho ngành xây dựng.
Cách gọi lệnh appload trong CAD
Bảng dưới đọc từ tệp acad.cuix của bản 2027 trên máy chứ không viết theo trí nhớ.
| Lệnh | Lệnh tắt | Ribbon | Menu cổ điển |
|---|---|---|---|
APPLOAD | AP | Manage → Applications → Load Application | Tools → AutoLISP → Load Application |
VLIDE | không có | Manage → Applications → Visual LISP Editor | Tools → AutoLISP → Visual LISP Editor |
NETLOAD | không có | không có | không có |
Lệnh tắt chỉ có hai chữ AP, và đây là một trong số ít lệnh hay dùng mà có nút trên ribbon mặc định. Người tìm bằng tiếng Anh hay gõ appload autocad hoặc autocad appload, cùng trỏ về lệnh này.
Một điều chúng tôi đo được mà chưa thấy trang nào nói: không có bản gạch nối. Gõ -APPLOAD, máy trả lời nguyên văn Unknown command "-APPLOAD". Nghĩa là lệnh này bắt buộc phải qua hộp thoại, không nhét vào script chạy tự động được. Muốn nạp lisp bằng dòng lệnh thì phải dùng hàm (load "...") của AutoLISP.
Cách load lisp vào CAD: từng bước
Trình tự thì ngắn, nhưng có một bước người ta hay bỏ qua rồi thắc mắc.
| Bước | Bạn làm | Lưu ý |
|---|---|---|
| 1 | Gõ AP rồi Enter | Hộp thoại Load/Unload Applications mở ra |
| 2 | Tìm tới thư mục chứa tệp .lsp | Nên để lisp ở một thư mục cố định, đừng để trong Downloads |
| 3 | Chọn tệp rồi bấm Load | Có thể chọn nhiều tệp một lúc |
| 4 | Xem dòng trạng thái dưới đáy hộp thoại | Nó báo đã nạp được hay không |
| 5 | Đóng hộp thoại, gõ tên lệnh của lisp | Tên lệnh do người viết lisp đặt, không phải tên tệp |
Bước 5 là chỗ hiểu lầm phổ biến nhất. Tên tệp là cat-dim.lsp không có nghĩa là gõ cat-dim. Lệnh nằm trong dòng (defun c:...) bên trong tệp, và có thể tên gì cũng được. Mở tệp bằng Notepad tìm chữ defun c: là thấy ngay tên phải gõ.
Đây cũng là lý do nhiều người tưởng nạp hỏng trong khi thực ra nạp thành công. Các tệp lisp của Viện đều ghi rõ tên lệnh ngay đầu bài, ví dụ bài lisp cắt dim.
Vì sao nạp xong mà lisp không chạy
Nếu bạn gặp một hộp thoại tiếng Anh có hình tam giác vàng, thì đây chính là nó.
Tên hộp thoại là Security - Unsigned Executable File, và câu hỏi của nó dịch ra là: không xác minh được ai phát hành tệp này, và tệp lại không nằm trong thư mục tin cậy, bạn muốn làm gì?
Nếu bạn bấm nút Do Not Load, dòng lệnh hiện đúng một dòng:
; error: File load canceled: <đường dẫn tệp>
Đó là câu mà rất nhiều người đem đi tìm kiếm. Nó không phải lỗi của tệp lisp, cũng không phải bản CAD bị hỏng. Nó là cơ chế bảo vệ của AutoCAD.
Người quyết định là biến SECURELOAD. Autodesk mô tả nó một dòng trên trang SECURELOAD của bản 2027: "Controls whether executable files are restricted to being loaded from trusted folders only", mặc định là 1 và lưu trong Registry.
| Giá trị | Autodesk ghi |
|---|---|
| 0 | Nạp từ bất kỳ đâu, không cảnh báo — "not recommended" |
| 1 | Chỉ nạp thẳng ở thư mục tin cậy; nơi khác thì hiện cảnh báo |
| 2 | Chỉ cho nạp ở thư mục tin cậy, nơi khác bỏ qua luôn |
Vì mặc định là 1, nên bất kỳ tệp lisp nào bạn tải về để trong Downloads hay Desktop đều sẽ bị hỏi. Đó là hành vi bình thường, không phải hỏng hóc.
Ba nút trong hộp thoại: nên bấm cái nào
Hộp thoại cho ba lựa chọn, và chúng khác nhau nhiều hơn vẻ ngoài.
Load Once nạp lần này thôi. Lần sau mở CAD lại hỏi y như cũ. Hợp khi bạn chỉ dùng tệp đó một lần.
Always Load nạp và thêm thư mục đó vào danh sách tin cậy, nên từ đó về sau không hỏi nữa. Đây là nút phần lớn người dùng nên bấm, với điều kiện bạn biết tệp từ đâu ra.
Do Not Load từ chối, và cho ra đúng dòng báo lỗi ở trên.
Chữ "với điều kiện bạn biết tệp từ đâu ra" không phải câu khách sáo. Tệp lisp là mã chạy được, nó làm được mọi thứ trên máy bạn chứ không riêng bản vẽ. Tải lisp từ nguồn lạ rồi bấm Always Load là mở cửa cho mã lạ. Lisp của Viện phát hành kèm mã nguồn ngay trong bài, đọc được trước khi nạp, ví dụ bài lisp đánh số thứ tự trong CAD.
Khai thư mục tin cậy một lần cho xong
Cách gọn nhất là gom hết lisp vào một thư mục rồi khai thư mục ấy vào biến TRUSTEDPATHS.
Trên máy chúng tôi, biến này đang giữ ba đường dẫn ngăn nhau bằng dấu chấm phẩy. Thêm một thư mục vào là mọi tệp trong đó nạp im, không hỏi câu nào nữa.
Chúng tôi đo cả hai chiều để chắc chắn:
| Tình huống | Kết quả đo được |
|---|---|
SECURELOAD = 1, tệp ở thư mục lạ | Hiện hộp thoại, chọn từ chối thì ; error: File load canceled: |
SECURELOAD = 1, thư mục đã khai vào TRUSTEDPATHS | Nạp im, không hộp thoại nào |
Hai dòng ấy là một cặp đối chứng: cùng một tệp, cùng một giá trị SECURELOAD, chỉ khác chỗ để tệp.
Cách làm qua giao diện: gõ OPTIONS, sang thẻ Files, tìm mục Trusted Locations rồi thêm thư mục. Cách nhanh hơn là bấm Always Load đúng một lần khi hộp thoại hiện ra, vì AutoCAD tự thêm thư mục ấy vào danh sách giúp bạn.
Có hai nơi luôn được tin sẵn mà bạn không phải khai: thư mục cài đặt AutoCAD và thư mục ApplicationPlugins, cùng mọi thư mục con của chúng.
Đừng đặt SECURELOAD về 0 chỉ để cho nhanh. Nó tắt hẳn lớp bảo vệ trên toàn máy, mà Autodesk ghi thẳng là "not recommended".
Lệnh load lisp trong CAD và các đường khác
Ngoài AP, còn vài đường nạp mà mỗi đường hợp một việc. Ai tìm load lisp cad thường chỉ biết đường đầu tiên.
Kéo thả. Kéo tệp .lsp từ cửa sổ thư mục thả vào vùng vẽ. Nhanh nhất, nhưng vẫn qua đúng lớp kiểm tra bảo mật ấy.
Hàm (load ...). Gõ thẳng trên dòng lệnh, ví dụ (load "C:/Lisp/catdim.lsp"). Đường dẫn phải dùng dấu chéo xuôi, vì dấu chéo ngược bị AutoLISP hiểu là ký tự thoát và nuốt mất. Đây là cách duy nhất nạp được trong script, vì -APPLOAD không tồn tại.
Startup Suite. Trong hộp thoại của AP có mục Contents; tệp bỏ vào đó sẽ tự nạp mỗi lần mở AutoCAD. Đây là chỗ nên để những lisp bạn dùng hằng ngày.
Tệp acad.lsp và acaddoc.lsp. Autodesk quy định: acad.lsp nạp một lần lúc khởi động khi biến ACADLSPASDOC bằng 0, và trên máy chúng tôi biến này đúng bằng 0. Đặt thành 1 thì nó nạp lại mỗi khi mở bản vẽ mới. Còn acaddoc.lsp thì luôn nạp theo từng bản vẽ, bất kể biến ấy bằng mấy.
Nói cách khác, lệnh load lisp trong cad không phải chỉ có một. Dùng AP cho việc lẻ, Startup Suite cho việc hằng ngày, acaddoc.lsp cho thứ phải có ở mọi bản vẽ.
Ba điều nhiều nơi bỏ sót
| Điều hay nghe | Bản 2027 thực sự làm gì |
|---|---|
| Hộp thoại cảnh báo là do lisp lỗi | Không. Đó là SECURELOAD mặc định 1 chặn tệp ngoài thư mục tin cậy |
| Nạp xong thì gõ tên tệp để chạy | Phải gõ tên trong (defun c:...), thường khác tên tệp |
Có thể đưa APPLOAD vào script | Không có -APPLOAD; máy trả Unknown command. Phải dùng (load ...) |
Tóm lại, lệnh appload trong cad không khó, cái khó là lớp bảo vệ đứng sau nó. Quy trình sạch nhất: gom lisp vào một thư mục cố định, bấm Always Load đúng một lần, bỏ những tệp hay dùng vào Startup Suite. Làm xong ba việc đó thì từ đấy không phải nghĩ về chuyện nạp nữa.
Câu hỏi thường gặp
Lệnh tắt để nạp lisp là gì?
AP. Đầy đủ là APPLOAD, và có nút ở Manage → Applications → Load Application.
Nạp xong rồi mà gõ lệnh máy báo không biết?
Tên lệnh nằm trong dòng (defun c:...) bên trong tệp lisp, thường khác tên tệp. Mở tệp bằng Notepad để xem.
Hộp thoại Security hiện ra thì bấm nút nào?
Bấm Always Load nếu bạn tin nguồn tệp, vì nó thêm luôn thư mục vào danh sách tin cậy. Bấm Load Once nếu chỉ dùng một lần.
Có nên đặt SECURELOAD về 0 không?
Không nên. Autodesk ghi rõ đó là lựa chọn "not recommended". Khai thư mục vào TRUSTEDPATHS an toàn hơn mà vẫn hết bị hỏi.
Làm sao để lisp tự nạp mỗi lần mở CAD?
Gõ AP, vào mục Contents của Startup Suite rồi thêm tệp vào đó.
Đưa APPLOAD vào script chạy hàng loạt được không?
Không, vì lệnh chỉ chạy qua hộp thoại và không có bản -APPLOAD. Dùng (load "đường/dẫn.lsp") với dấu chéo xuôi.