Chào bạn! Mình tạo Blog này để lưu giữ những bài viết của mình trên các diển đàn khác và vài tư liệu cá nhân. Chúc bạn vui khi ghé blog này.
(Đề phòng ai đó muốn mua quà tặng hoặc chiêu đãi mình).
-Quần áo thích JOHN HENRY: Áo thun cỡ M; Áo sơ mi dài tay cỡ S, ngắn tay cỡ M; Quần cỡ 29.
-Ăn vặt thích: Lựu; Sapoche; Hồng giòn; Bưởi; Thanh long.
-Món ăn chính thích: Mỳ Quảng; Bánh xèo; cơm chiên; xôi không + trứng tráng.
-Tạp chí thích: Văn nghệ quân đội; tạp chí kiến trúc; nhà đẹp; làm bạn với máy tính.
-Ca sỹ thích: Quang Dũng; Minh Quân; Đàm Vĩnh Hưng; Cao Thái Sơn; Ngọc Khuê;
Lê Cát Trọng Lý; Tuấn Ngọc.
1. Mình sẽ ko trả lời đồng thời xoá mọi câu hỏi với vai trò nặc danh. Các bạn vui lòng đọc thông báo trước khi đặt câu hỏi!
.
2. Mình đã trang bị đủ công cụ để tương tác với các bạn. Đừng bảo mình gửi mail hoặc liên hệ với các bạn khi các bạn nhờ mình!

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

02:09 Được đăng bởi Phạm Quốc Duy

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

Một chức năng hay của lisp là có thể thao tác lặp lại một vài thao tác trên từng đối tượng của tập hợp chọn.
Ứng dụng vòng lặp While.
Ví dụ bạn có tập hợp tapdoituong gồm các text hình thành từ
(setq tapdoituong (ssget '((0 . "text"))))
Bây giờ bạn muốn vẽ 1 hình tròn tâm tại điểm chèn text bán kính 100.
Việc vẽ 1 hình tròn bằng lisp khi biết tâm và bán kính bằng lisp thì đơn giản rồi.
(command "circle" diemve 100)
Vấn đề là làm lần lượt cho từng text trong cả tập hợp chọn.
Dùng hàm sslength để lấy ra số lượng đối tượng trong tập hợp chọn
(setq sodoituong (sslength tapdoituong))
Hàm ssname lấy ra đối tượng thứ thutu trong tập hợp tapdoituong
(setq doituong (ssname tapdoituong thutu))
Đầu tiên cho thutu = 0 sau đó áp dụng vòng lặp While với điều kiện thutu< sodoituong, cuối vòng lặp cho thutu = thutu+1 đến khi thutu= sodoituong thì vòng lặp sẽ dừng lại.

Đoạn lisp như sau:
(defun c:vht ()
(command "undo" "be")
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)

(Princ "\nChon cac text :")
(setq tapdoituong (ssget '((0 . "text"))))
(setq thutu 0)
(setq sodoituong (sslength tapdoituong))

(while (< thutu sodoituong)
(setq doituong (ssname tapdoituong thutu))
(setq laynoidung (entget doituong))
(setq diemve (cdr (assoc 10 laynoidung)))
(command "circle" diemve 100)
(setq thutu (+ thutu 1))
)
(command "undo" "end")
(setvar "osmode" luubatdiem)
(Princ)
)

Bạn chạy thử lisp này chọn các text nó sẽ vẽ các hình tròn vào điểm chèn của từng text.
Đoạn sau giúp lấy ra điểm chèn của text:
(setq laynoidung (entget doituong))
(setq diemve (cdr (assoc 10 laynoidung)))
Bài sau mình sẽ nói về cách lấy các thông tin về đối tượng cad bằng lisp, có bao hàm cả hai dòng trên. Bài này bạn chấp nhận nó đã nhé.
*Để thực hành mình ra 1 đề bài bạn viết thử nhé.
Viết lisp hỏi chọn các text, hỏi chọn điểm canh lề, move các text được chọn sao cho điểm canh lề của text thẳng hàng theo phương thẳng đứng.
*Gợi ý:
-Cơ bản đoạn lisp như trên.
-Sau khi chọn đối tượng thêm phần hỏi chọn điểm canh lề. (diemchuan)
-Sau khi lấy được điểm canh lề text (trường hợp này là diemve). Bỏ dòng vẽ hình tròn mà thay bằng dòng move.
-Move từng text từ điểm canh lề (diemve) đến điểm mới. Điểm mới xác định bằng cách lấy giá trị x của diemchuan và y của diemve.
*Sẽ có đáp án trong bài tới.

0 nhận xét:

Đăng nhận xét

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

Lưu trữ các nội dung hay dùng cho bài viết
Giới thiệu tác giả!
Họ & tên: Phạm Quốc Duy
Sinh ngày: 08/08/1978
Quê: Tỉnh Quảng Ngãi
Giới tính: Nam
Tình trạng: Đã cưới
Nghề nghiệp: Kiến trúc Sư
Sở trường: Im lặng
Nhược điểm: vô số
Lá cải net và "bình lựng" của Duy782006
Hồng Nhung từng bị cấm hát >>> Sao không ai cấm cái tiêu đề hông dính gì tới bài viết này giùm tui cái.
*Không dám bàn sâu vào nội dung. Ở đây Duy782006 bày tỏ sự "ngưỡng mộ một cách sâu sắc" đến các cá nhân "kiệt sức" đã giật những cái tít lá cải góp phần xây dựng khu vườn cải trê net hiện nay.