Thứ Tư, 7 tháng 4, 2010

Hướng dẩn viết lisp bài 17:

Bạn nên theo dỏi theo tên bài viết tăng từ nhỏ tới lớn thì mới đúng trình tự!

*Khi chọn đối tượng lại nảy sinh vấn đề nếu lisp hỏi chọn đối tượng mà không có đối tượng nào được chọn hết lúc này doituong có giá trị là nil mà lisp vẩn tiếp tục chạy thì sẽ phát sinh lổi. Nên cần có hàm điều kiện kiểm tra nếu doituong khác nil thì tiếp tục chạy nếu doituong là nil thì báo là không có đối tượng nào và kết thúc lệnh:
-Hàm If là hàm điều kiện nếu như mà là thì. Cú pháp như sau:

(if (điều kiện 1) (PROGN

thì làm công tác 1
)
)
(IF (điều kiện 2) (PROGN
Thì làm công tác 2
)
)

*Các hàm so sánh:
< nhỏ hơn.
> lớn hơn.
<= nhỏ hơn hoặc bằng.
>= lớn hơn hoặc bằng.
= bằng.
/= không bằng.

Bây giờ áp dụng vào lisp trên để kiểm tra đối tượng chọn có giá trị hay không để đưa ra quyết định kết thúc lệnh hay thực hiện lệnh.

(defun c:tlkt ()
(princ "\nChon doi tuong")
(Setq doituong (Ssget))
(if (= doituong nil) (PROGN
(princ "\nKhong tim thay doi tuong nao!")
)
)
(IF (/= doituong nil) (PROGN
(setq a (getpoint "\nChon diem goc: "))
(setq b (getpoint a"\nChon diem den: "))
(setq so (getreal "\nSo lan di chuyen: "))
(setq daiab (distance a b))
(setq dodai (/ daiab so))
(setq gocab (angle a b))
(setq c (polar a gocab dodai))
(setq sol (fix so))
(repeat sol
(command "DELAY" "5000" "")
(command ".MOVE" doituong "" a c)
)
)
)
(princ)
)

-Chạy lệnh:
+Chọn 1 vùng trống nào đó lisp sẽ kết thúc và báo: Khong tim thay doi tuong nao!.
+Chọn có đối tượng lisp sẽ thực hiện như lisp lúc nảy.

Không có nhận xét nào:

Đăng nhận xét