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.

11 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
  7. (defun c:bai8 ()
    (setq p1 (getpoint "\n Nhap diem 1:")
    p2 (getpoint a"\n Nhap diem 2:")
    cd (distance p1 p2)
    )
    (command "line" p1 p2 "" )
    (command "-style" "st" "arial" "" "" "" "" "" )
    (command "-text" p2 200 0 cd )
    )
    em nộp bài!

    Trả lờiXóa
  8. Bài dư phần vẽ line, thiếu phần hỏi độ lớn text. Nhưng thu hoạch lisp cơ bản của bạn khá khá rồi chẳng mấy mà chạy ầm thôi.

    Trả lờiXóa
  9. À quên.
    Điểm đầu bạn gán cho biến p1 nên dòng
    p2 (getpoint a"\n Nhap diem 2:")
    cần sửa thành
    p2 (getpoint p1"\n Nhap diem 2:")
    nhé vì biến a không tồn tại nó sẽ không biết lấy đâu mà hiển thị dây định hướng.

    Trả lờiXóa
  10. cảm ơn anh nhé. vợ em mới sinh con, bận quá chưa học tiếp được. hii
    chúc hạnh phúc!

    Trả lờiXóa

Khi viết nhận xét mong bạn không đứng vai trò nặc danh! Bạn có thể chọn Name/Url trong đó Url là http://duy782006.blogspot.com/ như vậy hay hơn nặc danh bạn nhé.