Thứ Ba, 10 tháng 11, 2009

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

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ự!
**Bây giờ áp dụng dòng nhập chuổi đế nhập độ lớn và nội dung dòng text nhé:

(setq dl (getstring "\nDo lon:"))
(setq nd (getstring 5"\nNoi dung:"))


Bạn để ý nhé:
+Dòng hỏi độ lớn không có số 5 vì độ lớn không cần nhập khoảng cách.
+Dòng hỏi nội dung có số 5 vì nội dung có thể có chứa khoảng cách.


(defun c:doanthang ()
(setq a (getpoint "\nChon diem: "))
(setq b (getpoint a"\nChon diem: "))
(command ".line" a b "")
(setq dt (getstring "\nDo lon:"))
(setq nd (getstring 5"\nNoi dung:"))
(setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
(command "-style" "tlkt" "VNI-HELVE" "0" "1" "0" "n" "n")
(command ".TEXT" "m" c dt 0 nd)
(princ)
)

Tới bây giờ nếu đã nắm được hết những điều mình đã viết trên thì bạn có thể viết được khối thứ rồi đấy. Cứ ngồi suy nghĩ và thử viết vài đoạn xem. Khi mà chạy cái lisp do chính mình viết thì cảm giác sướng ghê lắm cứ thử xem!

*Mình ra cái đề bài để chủ nhật bạn viết thử nhé, thứ 2 mình sẽ có đáp án:
-Đề: hỏi chọn 2 điểm, hỏi độ lớn, viết ra tại điểm thứ 2 dòng text có độ lớn vừa nhập, nội dung là giá trị khoảng cách hai điểm.
-Gợi ý:
+Dùng hàm distance để lấy khoảng cách giữa 2 điểm.

6 nhận xét:

  1. em dang hoc mấy bài này của anh. chổ nào ko hiểu thì em hỏi anh trả lởi jùm em nha!

    Trả lờiXóa
  2. (defun c:btap1(/ a b c th ang)
    (setq tho (getvar "textsize"))
    (setq a (getpoint "\nChon diem dau: ")
    b (getpoint a "\nChon diem cuoi: ")
    c (distance a b)
    th (getstring "\nChieu cao Text ")
    ang (/ (* 180 (angle a b)) pi)
    )
    (command "text" "m" b th ang c "")
    (setvar "textsize" tho)
    )


    em có thêm vào vài dòng ngoài đề bài nữa. heheee

    Trả lờiXóa
  3. Bạn cẩn thận lưu và trả lại textsize là ok rồi. Chắc là bạn cũng đã tiếp xúc với lisp 1 thời gian rồi. Chúc bạn ngày càng tiến xa trên con đường chinh phục lisp.

    Trả lờiXóa
  4. Em dã làm được bài này rồi cám ơn anh Duy nhiều
    Mến chào anh
    Jula_julo@yahoo.com.vn

    Trả lờiXóa
  5. Anh Duy ơi!
    Cho e hỏi là code của lệnh "insert" block ATT có sẵn vào bản vẽ là như thế nào được không ạ!

    Trả lờiXóa
  6. Bạn chưa nói rỏ là block ATT của bạn có bao nhiêu thông số cần nhập vào nên mình trả lởi chung như này nhé:
    (command "INSERT" "c:\\tailieukythuat\\dwg\\caodo.dwg" diemchen tilex tiley goc giatri1 gia tri2 giatri3)
    Cứ bạn có bao nhiêu gí trị att thì gỏ bấy nhiêu giatri vào là ok

    Trả lờiXóa