Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
ntduy1988

Lisp trải bóng( trải không đều)

Các bài được khuyến nghị

ntduy1988    9

Lisp: http://www.mediafire.com/?4oani2bgops4fh4

Lệnh: trb

- Chọn một đường đầu tiên

- Chọn một điểm để định hướng (để biết trải theo hướng nào)

- Nhập số lượng đường cần trải

- Nhập khoảng cách a

- Nhập bội số b

(Khoảng cách giữa đường thứ i và (i+1) là kc = a*b^i)

-Kết quả các đường trải bóng nằm trong lớp Nguyen Tien Duy 48N1

 

Để cho kết quả được đẹp, bạn phải điều chỉnh các hệ số a, b cho hợp lý.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
ketxu    2.649

Lisp của bạn có phải có chức năng tương đương thế này không ??

Code chưa dùng entmake nên có thể bị chậm xíu xíu

(defun c:trb(/ p1 p11 p2 p22 n1 x1 x2 dis1 dis2 i oldOs oldCmd)
(grtext -1 "@S\U+01A1n T\U+00F9ng - ketxu - Cadviet")
(if (= n nil)(setq n 10))
(setq p1 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m 1") 
p2 (getpoint p1 "\nCh\U+1ECDn \U+0111i\U+1EC3m 2") 
p11 (getpoint  "\nCh\U+1ECDn \U+0111i\U+1EC3m 3") 
p22 (getpoint p11 "\nCh\U+1ECDn \U+0111i\U+1EC3m 4") i 0
n1 (getint (strcat "\nS\U+1ED1 kho\U+1ea3ng chia < " (rtos n 2 0) " > : "))
dis1 (distance p1 p11)
dis2 (distance p2 p22)
)
(if n1 (setq n n1))
(setq
x1 (/ dis1  (/ (* n (+ n 1)) 2))
x2 (/ dis2  (/ (* n (+ n 1)) 2))
oldOs (getvar "osmode")
oldCmd (getvar "cmdecho"))

(setvar "osmode" 0)
(setvar "cmdecho" 0)
(repeat n
(command ".Line" (setq p1 (polar p1 (angle p1 p11) (+ x1 (* i x1)))) (setq p2(polar p2 (angle p2 p22) (+ x2 (* i x2)))) "")
(setq i (1+ i))
)
(setvar "osmode" oldOs)
(setvar "cmdecho" oldCmd)
)

P/s : tại sao lại phải để alert liên tục gây khó chịu cho người dùng như vậy bạn nhỉ ?

  • Vote tăng 3

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
ntduy1988    9

Lisp của bạn có phải có chức năng tương đương thế này không ??

Code chưa dùng entmake nên có thể bị chậm xíu xíu

 

P/s : tại sao lại phải để alert liên tục gây khó chịu cho người dùng như vậy bạn nhỉ ?

 

- Rất cảm ơn bạn đã góp ý về alert, tại đó thành thói quen của mình khi viết lisp rồi !

- Mình chưa hiểu tác dụng của lisp của bạn lắm, còn lisp của mình có tác dụng trải bóng như sau:

 

trai_bong.jpg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
ketxu    2.649

À cái mình viết trải bóng trên 4 điểm ( tạo thành đa giác ), bạn cứ thử là biết ngay thôi :) Cái của bạn giống giống việc array tăng dần 1 đường thẳng hơn

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamngoctukts    708

trai_bong.jpg

Bạn port hình lên mới biết tác dụng của lisp. Lisp đó dùng để thể hiện mặt cong chứ đâu phait mặt nghiêng.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
ntduy1988    9

Bạn port hình lên mới biết tác dụng của lisp. Lisp đó dùng để thể hiện mặt cong chứ đâu phait mặt nghiêng.

Trải bóng có phải chỉ dùng cho mặt cong đâu bạn?

Đôi lúc người ta vẫn dùng trải bóng cho mặt nghiêng mà.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bạn port hình lên mới biết tác dụng của lisp. Lisp đó dùng để thể hiện mặt cong chứ đâu phait mặt nghiêng.

Nguyên tắc của trải bóng là mắt nhìn gần thì trải thưa, xa mau thôi. Vì vậy Khi trải bóng như lisp có thể trải cho cả mặt cong và mặt nghiêng phẳng!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
dinhdainhan    0

 

Lisp của bạn có phải có chức năng tương đương thế này không ??

Code chưa dùng entmake nên có thể bị chậm xíu xíu

(defun c:trb(/ p1 p11 p2 p22 n1 x1 x2 dis1 dis2 i oldOs oldCmd)
(grtext -1 "@S\U+01A1n T\U+00F9ng - ketxu - Cadviet")
(if (= n nil)(setq n 10))
(setq p1 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m 1") 
p2 (getpoint p1 "\nCh\U+1ECDn \U+0111i\U+1EC3m 2") 
p11 (getpoint  "\nCh\U+1ECDn \U+0111i\U+1EC3m 3") 
p22 (getpoint p11 "\nCh\U+1ECDn \U+0111i\U+1EC3m 4") i 0
n1 (getint (strcat "\nS\U+1ED1 kho\U+1ea3ng chia < " (rtos n 2 0) " > : "))
	dis1 (distance p1 p11)
	dis2 (distance p2 p22)
)
(if n1 (setq n n1))
(setq
x1 (/ dis1  (/ (* n (+ n 1)) 2))
x2 (/ dis2  (/ (* n (+ n 1)) 2))
oldOs (getvar "osmode")
oldCmd (getvar "cmdecho"))

(setvar "osmode" 0)
(setvar "cmdecho" 0)
(repeat n
	(command ".Line" (setq p1 (polar p1 (angle p1 p11) (+ x1 (* i x1)))) (setq p2(polar p2 (angle p2 p22) (+ x2 (* i x2)))) "")
	(setq i (1+ i))
)
(setvar "osmode" oldOs)
(setvar "cmdecho" oldCmd)
)

P/s : tại sao lại phải để alert liên tục gây khó chịu cho người dùng như vậy bạn nhỉ ?

   Có thể sửa giúp minh được không ?

   Sao cho khoảng cách line sau gấp đôi line trước

Ví dụ như:

Khoang cách line 1 đến line 2 là : 1

Khoang cách line 2 đến line 3 là : 2

Khoang cách line 3 đến line 4 là : 4

Khoang cách line 4 đến line 5 là : 8

.....................................................

Mình thấy như vậy mới đẹp

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×