Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
7 replies to this topic

#1 ntduy1988

ntduy1988

    biết vẽ arc

  • Members
  • PipPip
  • 46 Bài viết
Điểm đánh giá: 9 (bình thường)

Đã gửi 07 June 2011 - 11:59 AM

Lisp: http://www.mediafire...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ý.
  • 0

#2 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5683 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 07 June 2011 - 02:48 PM

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ỉ ?
  • 3

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3 ntduy1988

ntduy1988

    biết vẽ arc

  • Members
  • PipPip
  • 46 Bài viết
Điểm đánh giá: 9 (bình thường)

Đã gửi 07 June 2011 - 04:33 PM

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:

Hình đã gửi
  • 0

#4 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5683 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 07 June 2011 - 05:33 PM

À 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
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#5 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 07 June 2011 - 06:15 PM

Hình đã gửi

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.
  • 0
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#6 ntduy1988

ntduy1988

    biết vẽ arc

  • Members
  • PipPip
  • 46 Bài viết
Điểm đánh giá: 9 (bình thường)

Đã gửi 07 June 2011 - 06:55 PM

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à.
  • 0

#7 hoàngbìnhan

hoàngbìnhan

    biết lệnh move

  • Members
  • PipPipPip
  • 128 Bài viết
Điểm đánh giá: 24 (tàm tạm)

Đã gửi 07 June 2011 - 09:25 PM

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!
  • 0

#8 dinhdainhan

dinhdainhan

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 11 May 2013 - 01:33 PM

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


  • 0