Hướng dẫn cơ bản về Autolisp - phần 1

By Nặc danh - tháng 12 02, 2011

Đối với những người dùng AtoCAD chuyên nghiệp có lẽ cụm từ Autolisp đã quá quen thuộc. Autolisp đã trở thành 1 phần của AutoCAD, nó giúp người dùng tiết kiệm thời gian và công sức cho công việc mà vẫn mang lại những hiệu quả như mong đợi. Bài viết này sẽ chỉ đề cập đến những vấn đề cơ bản về autolisp, những vấn đề nâng cang và mở rộng sẽ đề cập trong các bài viết khác. Bài viết được tổng hợp từ nhiều nguồn và từ kinh nghiệm của những người đã từng sử dụng autolisp.
Mọi chi yêu cầu, thắc mắc các bạn có thể gửi tại diễn đàn xây dựng


 Autolisp là gì?

- AutoLisp là một ứng dụng của ngôn ngữ Lisp được sử dụng trong môi trường AutoCAD. LISP là ngôn ngữ lập trình thuộc nhóm trí tuệ nhân tạo do MacCarthy soạn thảo cuối những năm 50. Ngôn ngữ này xuất hiện lần đầu tiên vào năm 1960 trong số xuất bản tháng 4 của tạp chí The Communications of ACM. Vào những năm 60 các ngôn ngữ lúc đó đều đã lỗi thời, trừ Fortran và Cobol. LISP đã đem ngôn ngữ lập trình chuyển sang một kỉ nguyên mới và sau đó hàng chục ngôn ngữ lập trình đã ra đời dựa trên LISP như Common LISP, BYSCO LISP, ExpertLISP, Waltz LISP, XLISP...v...v... AutoLISP phát triển bởi Autodesk là sự hiện thực hóa của ngôn ngữ LISP. Từ bản AutoCAD 2.18 trở đi, AutoLISP trở thành ngôn ngữ của chương trình. Với AutoLisp người dùng có thể mở rộng và tuỳ biến các chức năng của AutoCad.
- AutoLisp là một ngôn ngữ lập trình thông dịch, nghĩa là dịch đến dòng nào thực hiện dòng đó và cho kết quả, không có trình biên dịch riêng. Một tập hợp các câu lệnh của AutoLisp được gọi là hàm Lisp và tệp (file) chứa các hàm gọi là tệp (file) Lisp có phần mở rộng là *.Lsp. 

 Lấy Autolisp ở đâu?
Hiện nay Autolisp được sử dụng khá phổ biến và được chia sẻ rất nhiều trên mạng, bạn có thể tìm và download Autolisp về sử dụng.
Các file Autolisp thường sẽ có phần mở rộng là *Lsp

Sử dụng Autolisp như thế nào?
Việt sử dụng Autolisp hết sức đơn giản.
- Bạn vào Tools => Load Application để load file lisp (lệnh tắt ap). Click vào ô contents trong phần Startup suite để AutoCad tự động load lisp này mỗi khi khởi động AutoCad.
- Tại dòng nhắc lệnh command của AutoCad gõ trực tiếp lệnh của lisp vào.

Nếu vẫn chưa rõ, hay xem video hướng dẫn sử dụng Autolisp

Làm sao biết lệnh của Autolisp
Lệnh của từng Autolisp là do người lập trình đặt và không có quy tắc chung. Khi chia sẻ các Autolisp họ sẽ chỉ dẫn cho bạn cách dùng các lệnh của nó.
Tuy nhiên, có nhiều trường hợp họ quên cho bạn biết hoạc bạn đã vô tình quên mất lệnh của nó. Bạn sẽ tìm thấy lệnh của nó hết sức đơn giản như sau:
Bạn mở file Autolisp (*.Lsp) bằng các trình soạn thảo như Notepad++ hoạc Editplus chẳng hạn. Sau khi mở ra, tên lệnh của Autolisp sẽ nằm ngay sau dòng mã defun C:

Ví dụ dưới đây là 1 đoạn code của 1 autolisp, bạn có thể copy đoạn code vào notepad rồi lưu lại dưới tên hinhin.lsp [Lưu ý: Encoding ANSI theo mặc định, không được save as dạng Unicode]

Code:
(
defun C:hinhin(/ W H1 H2 p1 p2 p3 p4 p5 OldOs)
;;;Nhap so lieu
(setq
 W (getreal "\nChieu rong nha W = ")
 H1 (getreal "\nChieu cao nha H1 = ")
 H2 (getreal "\nChieu cao chop nha H2 = ")
 p1 (getpoint "\nDiem chuan: ")
;;;----------------------------------------------------------
;;;Tinh toa do
 p2 (polar p1 0.0 W)
 p3 (polar p2 (/ pi 2) H1)
 p4 (polar p3 pi W)
 p5 (list (+ (car p4) (/ W 2)) (+ (cadr p4) H2))
)
;;;----------------------------------------------------------
;;;Luu bien osmode
(setq OldOs (getvar "osmode"))
;;;----------------------------------------------------------
;;;Set object snap OFF
(setvar "osmode" 0)
;;;----------------------------------------------------------
;;;Goi lenh AutoCAD
(command "line" p1 p2 p3 p4 "c")
(command "line" p3 p5 p4 "")
;;;----------------------------------------------------------
;;;Tai lap osmode
(setvar "osmode" OldOs)
;;;----------------------------------------------------------
(princ)
)
;;;----------------------------------------------------------
;;;SUMMARY: setq, getreal, getpoint, polar, list, car, cadr, caddr,
+ - * /, command, comment, getvar, setvar, princ
Trong đoạn code trên bạn để ý dòng ngay đầu có dạng
( defun C:hinhin(/ W H1 H2 p1 p2 p3 p4 p5 OldOs)
Như vậy, lệnh của autolisp trên chính là hinhin

Cơ bản về Autolisp là như vậy. Chúng tôi sẽ trở lại với các bạn với vào phần 2

  • Share:

You Might Also Like

0 Comments

Vui lòng viết tiếng Việt có dấu!!!