Thứ Hai, 13 tháng 7, 2009

Hướng dẫn viết lisp bài 4

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ự!
Từ 2 điểm a và b lisp sẽ làm được rất nhiều việc.

-Giới thiệu 1 số hàm đối với 1 điểm:

(setq xa (car a)) tọa độ x của điểm a
(setq ya (cadr a)) tọa độ y của điểm a
(setq za (caddr a)) tọa độ z của điểm a
-Giới thiệu 1 số hàm đối với 2 điểm:
(setq daiab (distance a b)) khoảng cách từ a đến b
(setq gocab (angle a b)) góc mà đoạn ab tạo với trục x
-Giới thiệu hàm tính toán:Cú pháp các hàm toán học hơi ngược với cách thông thường:(dấu sốđầu sốsau) nghĩa là nếu muốn có a+b thì viết (+ a b) đối với + - * / điều như vậy.
**Từ hai điểm a và b kết hợp các hàm trên chúng ta bắt đầu cho việc tính toán cho ra những kết quả phục vụ cho việc mình cần.
-Tìm điểm nằm chính giữa a và b:
+Ngoài việc xác định 1 điểm bằng cách pick điểm thông qua hàm getpoint như trên thì 1 điểm trong lisp còn biểu diển như sau:
(setq c (list xc yc zc))
Trong đó:Xc, yc, zc lần lượt là tọa độ x, y,z của điểm c các giá trị này được xác định kiểu gì cũng được. Trong trường hợp này xác định từ các giá trị của điểm a và b. Để đơn giản mình chỉ tính toán trên mặt phẳng xy khi nào lisp vẽ phối cảnh mình hãy đưa giá trị z vào từ bây giờ 1 điểm chỉ cần biểu diển bằng x và y nên xác định điểm c như sau: (setq c (list xc yc))
(setq xab (+ xa xb)) xác định 1 biến tạm bằng tổng x điểm a và x điểm b

(setq yab (+ ya yb)) xác định 1 biến tạm bằng tổng y điểm a và y điểm b
(setq xc (/ xab 2)) xác định x điểm c bằng cách lấy xab chia 2
(setq yc (/ yab 2)) xác định y điểm c bằng cách lấy yab chia 2
(setq c (list xc yc)) xác định điểm c bằng x và y vừa tính được.

(defun c:doanthang ()
(setq a (getpoint "\nChon diem: "))
(setq b (getpoint a"\nChon diem: "))
(command ".line" a b "")
(command ".circle" a b)
(command ".circle" b a)
(setq xa (car a))
(setq ya (cadr a))
(setq xb (car b))
(setq yb (cadr b))
(setq xab (+ xa xb))
(setq yab (+ ya yb))
(setq xc (/ xab 2))
(setq yc (/ yab 2))
(setq c (list xc yc))
(command ".circle" c a)
(princ))
*Bây giờ chạy thử đoạn trên bạn sẽ thấy có thêm 1 vòng tròn tâm là trung điểm đoạn ab đường kính bằng ab.
*Hai hàm: distanceangle trong bài này chưa xài tới nhưng nhân tiện nói về đểm mình nói luôn bạn hãy ghi nhớ cho sau này.


2 nhận xét:

  1. anh duy cho em hỏi. em sài cad 2014 em load cái lisp này của anh xong. Khi đánh lệnh doanthang thì autocad nó hướng dẫn chon 2 điểm. Chọn xong autocad tự vẽ 1 đoạn thẳng và 2 vòng tròn ở 2 đầu mút đoạn thẳng đồng khi đó vẫn chưa thoát lệnh mình phải chọn thêm 1 điểm nữa để vẽ vòng tròn thứ 3 và vòng tròn thứ 3 nầy có tâm là điểm a. không đúng như phần trình bày của anh

    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é.