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

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

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ự!

*Hàm If ứng dụng rất nhiều nhé bạn cần hết sức linh hoạt trong việc dùng nó để tạo tương tác giữa người dùng với lisp.
-Quay tuốt lại cái lisp array cái vòng tròn nhé: Bây giờ sau khi chọn điểm a và b, vẽ đường thẳng ab, vẽ đường tròn tâm c đường kính ab, vẽ đường tròn tâm a bán kính ab, thêm chức năng hỏi có muốn array cái đường tròn này ra không nếu nói có thì array còn nói không thì kết thúc lệnh.

(defun c:doanthang ()
(setq a (getpoint "\nChon diem: "))
(setq b (getpoint a"\nChon diem: "))
(command ".line" a b "")
(setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
(command ".circle" c a)
(command ".circle" a b)
(setq traloi (strcase (getstring "\nBan co nuon array hay không? Y/N:")))
(if (= traloi "N") (PROGN
)
)
(IF (= traloi "Y") (PROGN
(setq sl (getstring "\nSo luong:"))
(command ".array" "last" "" "p" c sl "" "")
)
)

(princ)
)

Bạn để ý dòng (setq traloi (strcase (getstring "\nBan co nuon array hay không? Y/N:"))) dùng hàm strcase trước hàm getstring để đảm bảo chuổi nhận được khi nhập vào luôn luôn là viết hoa vì hàm if kiểm tra mình để kiểm tra giá trị traloi là viết hoa như vậy thì khi bạn nhập chử Y là thường hay là hoa thì kết quả hàm if mới thực hiện việc array cái vòng tròn được.

*Đấy bây giờ bạn thấy mấy cái lisp giống lisp rồi đó nghen làm việc có trình tự lớp lang có hỏi có trả lời đây là giao tiếp với lisp đó. Ngon hen!

2 nhận xét:

  1. Bài này sai chính tả nhiều quá anh Duy ơi

    (setq traloi (strcase (getstring "\nBan co nuon array hay không? Y/:"))) chữ N đâu rùi


    Đấy bây giờ bạn thấy mấy cái lisp giống lisp rồi đó nghen làm việc có trình tự lớp lang có hỏi có trả lời đây là giao tiếp với lisp đó. Ngon hen!

    Cám ơn anh nhiều.
    jula_julo@yahoo.com.vn

    Trả lờiXóa
  2. Sorry! Đã chỉnh. Lỗi mất chử N vì vốn nó được để trong dấu ngoặc lớn nhỏ <> mà cái này thì bị html nuốt mất.

    Trả lờiXóa