/

4 tháng 4, 2013

Bài 2: AutoLISP là gì và HelloWorld

AutoLisp là gì?


Trước hết LISP là chữ viết tắt của LISt Processor (xử lý danh sách). Nếu nhắc đến danh sách, bạn nên nghĩ ngay đến các dấu phân cách giữa các phần tử (ví dụ như dấu phẩy (,) hay dấu chấm phẩy (;)...). Và trong trường hợp này là dấu Cách ( ).
Cùng xem một ví dụ:

(princ "HelloWorld")
;Ghi chú: in trên dòng lệnh command của AutoCAD dòng chữ "HelloWorld"

Câu lệnh trên là một ví dụ điển hình về ngôn ngữ LISP:
- Một câu lệnh được đặt giữa hai dấu mở đóng ngoặc ( ).
- Trong một câu lệnh sẽ có một danh sách được phân cách với nhau bởi dấu cách (SpaceBar).

Các sản phẩm của AutoDesk (điển hình là AutoCAD) đều có tiền tố "Auto" đứng đầu. và AutoLISP không phải là một ngoại lệ (đoán thế :v ).

Như vậy hiểu nôm na, AutoLISP là một sản phẩm của AutoDesk, sử dụng ngôn ngữ lập trình LISP. Nhằm tạo ra các công cụ tự động hoá (chủ yếu là các lệnh mới) cho thao tác trên các sản phẩm của AutoDesk mà điển hình là AutoCAD.

Và HelloWorld!

Đơn giản là xin chào thế giới!

  1. (defun c:HelloWorld ()
  2.      (princ "Hello World")
  3.      (princ)
  4. )
Dòng số 1: (defun c:HelloWorld () có tác dụng khai báo với AutoCAD một lệnh mới có tên là HelloWorld (không phân biệt viết hoa và viết thường). Bạn hoàn toàn có thể thay đổi HelloWorld bằng một cái tên khác do bạn tự định nghĩa (VD: hello, world, chaothegioi, ...).

Dòng số 2: (princ "Hello World") có tác dụng in ra trên dòng lệnh AutoCAD dòng chữ Hello World.

Dòng số 3: Khi câu lệnh tại dòng 2 kết thúc, nó sẽ trả về một giá trị (*) chính là chuỗi ký tự "Hello World". Trong trường hợp không có dòng thứ 3, thì giá trị đấy cũng chính là giá trị trả về của toàn bộ lệnh HelloWorld, do đó AutoCAD sẽ in dòng chữ "Hello World" một lần nữa. Để tránh trường kết quả không mong muốn đó, ta dùng hàm (princ) để trả về một giá trị trắng (không in).

Dòng số 4: là kết thúc câu lệnh HelloWorld.

Để chạy được câu lệnh trên, sử dụng 2 cách sau:
  1. Copy toàn bộ đoạn code vào dòng lệnh của AutoCAD và nhấn Enter. Bạn chú ý trước dấu mở ngoặc đầu tiên (trước chữ defun) không được phép có khoảng trắng. Nếu không sẽ gây nhầm lẫn cho AutoCAD.
  2.  Dùng Notepad (**), mở 1 file mới copy 4 dòng code vào, ghi với tên tệp yourfilename.lsp. Mặc định của Notepad là định dạng *.txt, do vậy để ghi dưới dạng *.lsp, bạn phải để File typeAll Files và trong File Name, phải ghi đầy đủ cả phần mở rộng yourfilename.lsp. Mở AutoCAD, gõ lệnh APPLOAD (hoặc AP), tìm đường dẫn đến file lsp vừa tạo và chọn LOAD.


Sau khi đã LOAD, từ dòng lệnh của AutoCAD, gõ lệnh HelloWorld và xem kết quả!
  1. Command: helloworld
  2. Hello World
  3. Command:
Như vậy bạn đã tạo được một lệnh cho riêng mình, nhưng lại mở ra một thế giới khác! Bạn thấy đấy, không khó chút nào đúng không?

Hãy tiếp tục chờ đón bài 3 nhé!

(*)   Các hàm của AutoLISP thường trả về một giá trị nào đó. Và AutoCAD sẽ in giá trị trả về trên dòng lệnh.
(**) Thông thường mình hay dùng Notepad++ để soạn thảo AutoLISP. Bạn có thể download Notepad++ theo đường dẫn sau:
Notepad++ Download
Download Notepad ++