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
  • 11 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: AutoCAD 2027

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. 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 theo tệp giao diện acad.cuix của bản 2027.

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 đ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 ý
1Gõ AP 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.

Lỗi lisp cad sau khi load không nhận lệnh: vì sao nạp xong mà 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 dưới dạng lỗi lệnh appload trong cad hay lỗi không load được lisp trong cad. 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.

Mặc định, 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.

Ba giá trị của SECURELOAD và bốn trường hợp trên AutoCAD 2027 Ảnh: Sơ đồ do Viện Tin học Xây dựng dựng

Cả hai chiều:

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 đặt cạnh nhau rất rõ: 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".

Cách cài lisp cad dùng mãi mãi: nạp một lần, mở CAD là có

Nạp bằng AP chỉ sống đến khi đóng AutoCAD, nên cách load lisp trong cad kiểu ấy phải làm lại mỗi sáng. Muốn cài lisp vào cad một lần rồi dùng mãi thì có hai đường, khác nhau ở chỗ ai là người phải nhớ.

Đường thứ nhất — Startup Suite. Vẫn trong hộp thoại AP, khung Startup Suite ở góc dưới bên phải, bấm Contents…. Hộp mới mở ra, bấm Add…, trỏ tới thư mục chứa lisp, chọn các tệp cần rồi bấm Open. Dòng dưới cùng báo lại số tệp vừa thêm.

Danh sách Startup Suite liệt kê từng tệp kèm đường dẫn, dòng dưới cùng báo số tệp đã thêm Ảnh: AutoCAD 2027

Từ lần sau mở AutoCAD, lệnh có sẵn. Danh sách này lưu theo hồ sơ người dùng chứ không lưu trong bản vẽ, nên nó theo bạn qua mọi bản vẽ trên máy ấy — nhưng không theo sang máy khác, và mất khi cài lại AutoCAD.

Đường thứ hai — tệp acaddoc.lsp. Tạo một tệp tên acaddoc.lsp trong thư mục nằm trên đường dẫn hỗ trợ, nội dung là các dòng (load "C:/Lisp/ten-tep.lsp"). AutoCAD nạp tệp này theo từng bản vẽ, nên mọi bản vẽ mở ra đều có.

Đường nào hợp với ai: một người dùng máy riêng thì Startup Suite gọn hơn, bấm chuột là xong. Cả phòng dùng chung một bộ lisp thì acaddoc.lsp hơn hẳn, vì chỉ cần sửa một tệp là cả phòng đổi theo.

Cả hai đường đều không cứu được nếu thư mục lisp chưa nằm trong danh sách tin cậy — phần dưới nói kỹ chỗ đó.

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 hay cách 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ẽ. Đây là cách thêm lisp vào cad nhanh nhất, và cũng là cách thêm lisp vào cad mà ít người biết, nhưng nó 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à mặc định 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ẽ. Muốn gỡ một tệp đang nạp thì dùng nút Unload trong chính hộp thoại ấy; đó là câu trả lời cho unload lisp autocad.

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?

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.

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