AutoLISP tự động hóa công việc của bạn: Phần 1 - Beginner

25/01/2021 1.969 lượt xem

Loạt bài gồm ba phần này sẽ giúp bạn nhận thức về các loại công việc bạn có thể làm với AutoLISP ở ba cấp độ chuyên môn: Beginner, Intermediate, và Advanced. Ngay bây giờ, chúng ta sẽ bắt đầu từ beginner.

1. Những gì một người mới bắt đầu nên biết

Tôi nghĩ rằng điều quan trọng đối với bất kỳ người dùng AutoLISP nào cũng phải biết nó là gì. LISP là viết tắt của LISt Processing. Đó là manh mối đầu tiên của bạn. Mọi thứ trong ngôn ngữ là một danh sách ở một số dạng. Bạn sẽ cần biết về chúng, cho dù chúng được định nghĩa là DANH SÁCH, CONS, CẶP XOAY CHIỀU hay S-EXPRESSION (hay gọi tắt là EXPRESSION).

Tất nhiên, có nhiều loại dữ liệu khác nhau mà bạn cần phải làm quen. AutoLISP coi DANH SÁCH hoặc CONS là một kiểu dữ liệu. Những người khác bao gồm STRINGS, số REAL và INTEGERS.

Lưu ý: Một trong những lý do khiến AutoLISP rất dễ dàng đối với những người không phải là lập trình viên (những người như chúng tôi) là bạn không phải quản lý các loại dữ liệu và phân bổ bộ nhớ như các ngôn ngữ khác. Bạn cũng không cần phải biên dịch mã của mình. Trên thực tế, trình thông dịch được tích hợp sẵn trong AutoCAD, vì vậy bạn có thể chạy các biểu thức ngay từ Dòng lệnh.
 
Đối với Thuật ngữ và Cú pháp cơ bản, bạn nên biết rằng các mục trong danh sách là ATOMS. Các chức năng mà AutoLISP sử dụng được gọi là… FUNCTIONS — thật dễ dàng! Và các CHỨC NĂNG đôi khi yêu cầu BIỆN LUẬN. Đó là các ATOMS tuân theo lệnh gọi Hàm trong biểu thức.

Cú pháp có thể được định nghĩa là các quy tắc mà bất kỳ loại ngôn ngữ nào sử dụng. Các quy tắc cơ bản của AutoLISP là mọi thứ được chứa trong một tập hợp các dấu ngoặc đơn. Tiếp theo, hàm luôn là mục đầu tiên (hoặc ATOM) trong danh sách.
(functionName đối số1 đối số2…)

Lưu ý: Điều quan trọng cần lưu ý ở đây là mọi Biểu thức trả về một giá trị. Đó là một điểm quan trọng, vì nó đặt AutoLISP khác với các ngôn ngữ khác được coi là ngôn ngữ “Thủ tục”. Nói một cách đơn giản nhất, những ngôn ngữ đó thực thi một dòng mã, chuyển sang dòng tiếp theo, v.v. cho đến khi hoàn thành. Không cần đi sâu vào luận văn về ngôn ngữ “Chức năng”, chỉ cần nhớ rằng mặc dù chúng ta có thể có xu hướng sử dụng AutoLISP theo cách thủ tục trong chương trình CAD, nhưng nó mạnh hơn thế nhiều.

Bạn nên biết rằng các biểu thức có thể được lồng vào nhau và bạn đánh giá chúng từ trong ra ngoài.
(functionName đối số1 (functionName đối số1 đối số2) đối số3…)
Người mới bắt đầu nên biết các chức năng AutoLISP nội bộ, đặc biệt là DEFUN và SETQ. Những người khác có thể bao gồm:

• Các chức năng cụ thể của AutoLISP: COMMAND, GETVAR, SETVAR

• Các chức năng “GET…” cụ thể của AutoLISP: GETSTRING, GETREAL, v.v.

• Các chức năng thao tác danh sách cơ bản: LIST, CONS, CAR, CDR, NTH

• Các hàm điều kiện cơ bản: IF, COND

• Hàm bình đẳng: = / = <> EQ EQUAL

• Các hàm toán học: + - / etc.

Những gì khác mà một người mới bắt đầu nên biết? Bạn nên biết cách tải các tệp AutoLISP bên ngoài (TẢI, ÁP DỤNG, Kéo và Thả) và cách xác định tên Hàm cần thiết để chạy chúng tại Dòng lệnh.

Cuối cùng, bạn nên biết cách nhận sự giúp đỡ. Cho dù thông qua hệ thống Trợ giúp của chính AutoCAD hay các trang web và diễn đàn khác nhau trên internet và Mạng tri thức Autodesk, đừng ngần ngại liên hệ. Có khoảng 35 năm kinh nghiệm và lập trình viên và ai đó luôn sẵn lòng trợ giúp.

Điều đó có vẻ là rất nhiều thứ cần biết, nhưng một chút sẽ đi một chặng đường dài với AutoLISP. Dẫn chúng ta đến phần tiếp theo…

2. Những cách người mới bắt đầu có thể sử dụng AutoLISP để tự động hóa công việc

Chỉ với một mức độ kiến ​​thức cơ bản về AutoLISP, bạn sẽ có thể làm những việc sau:
  • Kiểm soát môi trường AutoCAD của bạn. Đảm bảo cài đặt OSNAP của bạn luôn được đặt theo cách bạn thích bằng cách sử dụng (setvar “OSMODE” 679). 679 tương đương với hệ điều hành đang chạy mà tôi thích. Không chắc chắn những gì yêu thích của bạn thêm vào? Sử dụng (getvar “OSMODE”). Bạn không cần phải mở hộp thoại Object Snap và chọn và bỏ chọn các hộp. Bạn vừa tự động hóa nó! Hầu hết mọi biến môi trường bạn có thể nghĩ đến đều có thể được thiết lập theo cách này.
  • Bạn có thể tạo các lệnh ngắn trên bàn phím của riêng mình. Có thể bạn đã biết về những hạn chế của Bí danh Lệnh được tìm thấy trong tệp ACAD.pgp. Bạn có thể đặt bí danh cho tên lệnh, nhưng bạn không thể bao gồm bất kỳ tùy chọn nào.
Ví dụ, Z là cho Zoom. Nhưng bạn vẫn phải nhập E để nhận Extents. Chỉ với một chút kiến ​​thức về AutoLISP, người mới bắt đầu sẽ có thể viết lệnh ZE tùy chỉnh của riêng họ:
(defun c: ze ()
(lệnh “zoom” “e”)
(princ)
)
Bạn có thấy mình thường xuyên sử dụng Move Before không? Tự động hóa nó!
(định nghĩa c: mp ()
(lệnh “di chuyển” “p”)
(princ)
)
Chúng tôi luôn nói về việc giữ cho bản vẽ của bạn sạch sẽ. Thanh lọc và Kiểm tra, chúng tôi cho bạn biết. Loại bỏ các REGAPPS không sử dụng và cũng chạy Overkill. Tại sao không sử dụng kiến ​​thức AutoLISP mới của bạn để tự động hóa trình tự này? Bạn nên có tất cả các công cụ cần thiết để viết những thứ như sau:
(defun c: clean ()
(lệnh “kiểm toán” “Y”)
(lệnh “-purge” “a” “” “n”) (lệnh “-purge” “r” “” “n”)
(lệnh “-overkill” “all” “” “”)
(princ)
)
Lưu ý: Hai điều từ đoạn mã trên. Lệnh gọi tới (princ) ở cuối sẽ ngăn chặn các hàm trả về giá trị nil trên dòng lệnh. Ngoài ra, dấu gạch ngang phía trước lệnh gọi lệnh Purge và Overkill sẽ ngăn hộp thoại của lệnh và thay vào đó sử dụng phiên bản dòng lệnh. Rất nhiều lệnh khác làm điều này. Thử nghiệm… tạo hoặc thiết lập các lớp của bạn với -Layer. Chỉ cần làm theo lời nhắc trên dòng lệnh và bạn đang trên đường đi của mình.

Hai ví dụ cuối cùng tạo các lệnh mới. SSA đặt biến SNAPANG dựa trên một dòng đã chọn. Bên dưới nó, SS0 đặt lại nó về 0. Ở bên phải, TOGGLEDITOR thay đổi MTEXTED từ trình chỉnh sửa nội bộ thành Notepad và quay lại lần nữa.
Tôi đã trình bày những thứ này như một hình ảnh để buộc bạn phải nhập chúng, nếu bạn muốn. Sao chép và dán rất tiện dụng, nhưng bạn cũng phải có khả năng nhập chúng. Ngoài ra, không sử dụng MS Word, vì nó thêm định dạng đặc biệt. Notepad hoạt động tốt.


 

Cuối cùng, người mới bắt đầu AutoLISP nên biết cách thêm lệnh tùy chỉnh của họ vào menu của họ. Tạo tab và bảng điều khiển Ribbon của riêng bạn hoặc thêm nó vào một nút trên thanh công cụ kiểu cũ để dễ dàng truy cập.

3. Lời kết

Trong phần hai của loạt bài của chúng tôi, tôi sẽ thảo luận về một số chức năng AutoLISP mà bạn cần biết để trở thành những gì tôi gọi là Cấp độ Trung cấp và bạn có thể làm gì với những kỹ năng đó.

Và cuối cùng, để trích dẫn người cố vấn AutoLISP ban đầu của tôi từ cách đây trở lại trong ngày, "cho đến lần sau, hãy tiếp tục lập trình"