AutoCAD – Bản vẽ

Lệnh appload trong CAD: nạp lisp và chữa lỗi không chạy

Lệnh appload trong CAD nạp tệp lisp vào máy. Bài này chụp đúng hộp thoại chặn mà người dùng hay gặp, và chỉ cách khai thư mục tin cậy để hết bị hỏi.

  • TS. Đỗ Quốc Hoàng
  • 9 phút đọc
Hộp thoại AutoCAD 2027 hiện ra khi nạp một tệp lisp nằm ngoài thư mục tin cậy Ảnh: Ảnh chụp trên AutoCAD 2027 tại Viện

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ệnhLệnh tắtRibbonMenu cổ điển
APPLOADAPManage → Applications → Load ApplicationTools → AutoLISP → Load Application
VLIDEkhông cóManage → Applications → Visual LISP EditorTools → AutoLISP → Visual LISP Editor
NETLOADkhô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ướcBạn làmLưu ý
1AP rồi EnterHộp thoại Load/Unload Applications mở ra
2Tìm tới thư mục chứa tệp .lspNên để lisp ở một thư mục cố định, đừng để trong Downloads
3Chọn tệp rồi bấm LoadCó thể chọn nhiều tệp một lúc
4Xem dòng trạng thái dưới đáy hộp thoạiNó báo đã nạp được hay không
5Đóng hộp thoại, gõ tên lệnh của lispTê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
0Nạp từ bất kỳ đâu, không cảnh báo — "not recommended"
1Chỉ nạp thẳng ở thư mục tin cậy; nơi khác thì hiện cảnh báo
2Chỉ 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.

Giá trị SECURELOAD và kết quả đo Ảnh: Ba giá trị của SECURELOAD và bốn phép thử trên AutoCAD 2027

Chúng tôi đo cả hai chiều để chắc chắn:

Tình huốngKế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 TRUSTEDPATHSNạ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.lspacaddoc.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 ngheBản 2027 thực sự làm gì
Hộp thoại cảnh báo là do lisp lỗiKhô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ạyPhải gõ tên trong (defun c:...), thường khác tên tệp
Có thể đưa APPLOAD vào scriptKhô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?

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.

Về tác giả

TS. Đỗ Quốc Hoàng — Phó Viện trưởng Viện Tin học Xây dựng, Trường Đại học Xây dựng Hà Nội, chuyên gia phát triển phần mềm cho ngành xây dựng