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  
hanam1210

[yêu cầu] Lisp rải taluy kiểu thủy lợi !

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

hanam1210    1

Em hay phải rải taluy 1 cách thủ công như hình vẽ, http://www.mediafire.com/imageview.php?quickkey=xq4f7eb5ttt1t15&thumb=4, Điểm P không phải là tâm của cung tròn hay polyline, đỉnh taluy có thể là arc hoặc polyline. Cách vẽ của e rất thủ công mất thời gian. Mong các bác viết giúp e cái lisp vẽ được taluy như trong hình vẽ. yêu cầu lisp nhập được khoảng cách d, và điểm P là mình chọn trên CAD. vạch ngắn của taluy =1/2 vạch dài. tất cả các đường kẻ hướng về điểm P.Em xin chân thành cảm ơn !

  • Vote giảm 1

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
dovananh.xd    25

Em hay phải rải taluy 1 cách thủ công như hình vẽ, http://www.mediafire...ttt1t15&thumb=4, Điểm P không phải là tâm của cung tròn hay polyline, đỉnh taluy có thể là arc hoặc polyline. Cách vẽ của e rất thủ công mất thời gian. Mong các bác viết giúp e cái lisp vẽ được taluy như trong hình vẽ. yêu cầu lisp nhập được khoảng cách d, và điểm P là mình chọn trên CAD. vạch ngắn của taluy =1/2 vạch dài. tất cả các đường kẻ hướng về điểm P.Em xin chân thành cảm ơn !

Cái này nói nhiều trên diễn đàn rồi mà em, em dùng công cụ tìm kiếm đi.

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
hanam1210    1

Cái này nói nhiều trên diễn đàn rồi mà em, em dùng công cụ tìm kiếm đi.

Đúng là vấn đề rải taluy đã nói nhiều trên diễn đàn. Và rải các kiểu bình thường thì em có các lisp đó. Nhưng rải kiểu hướng về một điểm và nối trực tiếp từ đỉnh vào điểm đó thì diễn đàn chưa có. Bên Thủy lợi họ rải kiểu đó. hic !

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

Quick code, không dùng cho SPline

 

(defun c:test(/ eLine curve dist pt i j p1)
(vl-load-com)
(defun eLine (p1 P isFull)(entmake (list (cons 0 "LINE")(cons 10 p1)(cons 11 (if isFull P (polar p1 (angle p1 P) (/ (distance p1 P) 2)))))))
(if
(and (setq curve  (car(entsel "\nPath curve ;")))
(setq dist (getdist "\n D :"))
(setq pt (getpoint "\n P:"))
(setq i -2 j -1)
)
(progn
(while (setq p1 (vlax-curve-getPointAtDist curve  (* (setq i (+ i 2)) dist))) (eLine p1 pt T))
(while (setq p1 (vlax-curve-getPointAtDist curve  (* (setq j (+ j 2)) dist))) (eLine p1 pt nil))
)
))

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
phamthanhbinh    3.123

Đúng là vấn đề rải taluy đã nói nhiều trên diễn đàn. Và rải các kiểu bình thường thì em có các lisp đó. Nhưng rải kiểu hướng về một điểm và nối trực tiếp từ đỉnh vào điểm đó thì diễn đàn chưa có. Bên Thủy lợi họ rải kiểu đó. hic !

Hề hề hề,

Xin lỗi, không biết bạn đã nghĩ kỹ chưa mà ra cái đề bài như vậy??? Quả thật là đến bố Tây cũng thua cái yêu cầu của bạn chứ đừng nói chi ta.

Này nhé:

1/- Yêu cầu nét taluy ngắn bằng 1/2 nét taluy dài trong khi:

2/- Điểm P là tự chọn, không phải tâm của cung tròn và

3/- Đường chân taluy có thể là arc hay polyline.

Như vậy có nghia rằng các nét taluy không thể dài bằng nhau và bạn sẽ lấy 1/2 chiều dài của nét taluy nào???

Giá như bạn nói nét ngắn bằng 1/2 khoảng cách từ điểm P đến đường chân ta luy thì may ra còn có hy vọng làm giúp bạn được....

Hề hề hề,

Mong bạn hãy suy nghĩ kỹ trước khi ra đề, đừng làm khó nhau kiểu nớ hè......

Chúc bạn sớm có trả lời.

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
hanam1210    1

Hề hề hề,

Xin lỗi, không biết bạn đã nghĩ kỹ chưa mà ra cái đề bài như vậy??? Quả thật là đến bố Tây cũng thua cái yêu cầu của bạn chứ đừng nói chi ta.

Này nhé:

1/- Yêu cầu nét taluy ngắn bằng 1/2 nét taluy dài trong khi:

2/- Điểm P là tự chọn, không phải tâm của cung tròn và

3/- Đường chân taluy có thể là arc hay polyline.

Như vậy có nghia rằng các nét taluy không thể dài bằng nhau và bạn sẽ lấy 1/2 chiều dài của nét taluy nào???

Giá như bạn nói nét ngắn bằng 1/2 khoảng cách từ điểm P đến đường chân ta luy thì may ra còn có hy vọng làm giúp bạn được....

Hề hề hề,

Mong bạn hãy suy nghĩ kỹ trước khi ra đề, đừng làm khó nhau kiểu nớ hè......

Chúc bạn sớm có trả lời.

hi. Bác KETXU đúng là siêu cao thủ lisp chạy đúng yêu cầu, nhưng có 1 vấn đề này do ban đầu e chưa nêu hết em xin bác bổ sung giúp được ko ạ ? Tức là nét dài sẽ thuộc một layer có màu 1 chẳng hạn. Nét ngắn thuộc layer đó nhưng có màu 8 chẳng hạn.bác Update giúp em nhé. Cảm ơn bác nhiều !

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
dovananh.xd    25

mình có cái lips này nhưng đang bị lỗi, hiện tại đang nhờ diễn đàn sửa nhưng chưa có kết quả. Chờ thêm thời gian đi

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
trandanxd    1

Mấy cái này giống như mái dốc mình thường dùng lệnh ME vẽ cũng nhanh!

Bạn thử dùng xem sao!

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
hanam1210    1

Lisp bác KETXU viết là chuẩn mà. Me không thể làm được hướng tâm như vậy. mong bác kiểm tra lại. Đây cũng là một cách rải taluy cần tham khảo. ít nữa bác ketxu hoàn thiện nốt phần màu của nét dài ngắn nữa là lisp này rất chuẩ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
phamthanhbinh    3.123

hi. Bác KETXU đúng là siêu cao thủ lisp chạy đúng yêu cầu, nhưng có 1 vấn đề này do ban đầu e chưa nêu hết em xin bác bổ sung giúp được ko ạ ? Tức là nét dài sẽ thuộc một layer có màu 1 chẳng hạn. Nét ngắn thuộc layer đó nhưng có màu 8 chẳng hạn.bác Update giúp em nhé. Cảm ơn bác nhiều !

Hề hề hề,

Mạn phép bác ketxu góp ý một chút cho bạn tự sửa nghen:

1/- Bổ sung hàm (setq la (getstring "\n Nhap ten layer ve taluy")) vào trong hàm (and .......)

2/- Bổ sung hàm (setvar "clayer" la) vào trong hàm (progn ......)

3/- Bổ sung hàm (cons 62 (if IsFull 256 8)) vào trong hàm (list .....) bên trong hàm (entmake ......)

Hy vọng bạn hài lòng.

Dù sao cũng nhắc bạn cần suy nghĩ thấu đáo hơn khi yêu cầu người khác giúp bạn. Nếu bạn không trình bày chính xác và rõ ràng vấn đề của bạn rất có khả năng bạn sẽ nhận được những thứ không ngon như bạn muốn. lần này rất may là bác Ketxu đủ thông minh để hiểu đúng ý bạn.

Hề hề hề.....

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

Dù sao cũng nhắc bạn cần suy nghĩ thấu đáo hơn khi yêu cầu người khác giúp bạn. Nếu bạn không trình bày chính xác và rõ ràng vấn đề của bạn rất có khả năng bạn sẽ nhận được những thứ không ngon như bạn muốn.

Hề hề hề.....

Em đồng ý, dù ai viết về vấn đề dù nhỏ nhất cũng cần nhìn nhận mọi khía cạnh điều mình hỏi. Lần này hay không bằng hên nên chẳng may viết đúng ý bạn hanam1210, e cũng quên béng mất là các đường nó không bằng nhau, ngại quá ^^

hi. Bác KETXU đúng là siêu cao thủ lisp chạy đúng yêu cầu, nhưng có 1 vấn đề này do ban đầu e chưa nêu hết em xin bác bổ sung giúp được ko ạ ? Tức là nét dài sẽ thuộc một layer có màu 1 chẳng hạn. Nét ngắn thuộc layer đó nhưng có màu 8 chẳng hạn.bác Update giúp em nhé. Cảm ơn bác nhiều !

Bạn nhìn theo cái này, cần thay chỗ nào mình đều ghi chú rồi tự sửa nhé

Cloud04-10-2011-75623PM.gif

 

(defun c:tlt(/ eLine curve pt i j len dsttmp)
(vl-load-com)
(or #dist (setq #dist 10)) ; 10 = Khoang cach mac dinh
(setq #dist (cond ((getdist (strcat "\n D  <" (vl-princ-to-string #dist) " > :")))(#dist)))
(defun eLine (p1 P isFull / p2 col)
(if isFull
(setq p2 P col 1) ;1 = Mau cua Line full
(setq p2 (polar p1 (angle p1 P) (/ (distance p1 P) 2)) col 8) ; 8 = Mau cua Line nua
)
(entmake
 (list (cons 0 "LINE")(cons 10 p1)
 (cons 11 p2)(cons 62 col)
 (cons 8 "0") ;0 = Layer cua Duong Taluy
 )
)
)
;;Doan duoi nay khong can de y
(while
(and
(setq curve  (car(entsel "\nPath curve :")))
(wcmatch (cdadr (entget curve)) "*LINE,ARC")
(setq pt (getpoint "\n P :"))
(setq i -2 j -1 len (vlax-curve-getDistAtParam curve (vlax-curve-getEndParam curve)))
)
(progn
(while (< (setq dsttmp (* (setq i (+ i 2)) #dist)) len) (eLine (vlax-curve-getPointAtDist curve dsttmp) pt T))
(while (< (setq dsttmp (* (setq j (+ j 2)) #dist)) len) (eLine (vlax-curve-getPointAtDist curve dsttmp) pt nil))
)
))

  • Vote tăng 1

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
hanam1210    1

Em đồng ý, dù ai viết về vấn đề dù nhỏ nhất cũng cần nhìn nhận mọi khía cạnh điều mình hỏi. Lần này hay không bằng hên nên chẳng may viết đúng ý bạn hanam1210, e cũng quên béng mất là các đường nó không bằng nhau, ngại quá ^^

 

Bạn nhìn theo cái này, cần thay chỗ nào mình đều ghi chú rồi tự sửa nhé

Cloud04-10-2011-75623PM.gif

 

(defun c:tlt(/ eLine curve pt i j len dsttmp)
(vl-load-com)
(or #dist (setq #dist 10)) ; 10 = Khoang cach mac dinh
(setq #dist (cond ((getdist (strcat "\n D  <" (vl-princ-to-string #dist) " > :")))(#dist)))
(defun eLine (p1 P isFull / p2 col)
(if isFull
(setq p2 P col 1) ;1 = Mau cua Line full
(setq p2 (polar p1 (angle p1 P) (/ (distance p1 P) 2)) col 8) ; 8 = Mau cua Line nua
)
(entmake
 (list (cons 0 "LINE")(cons 10 p1)
 (cons 11 p2)(cons 62 col)
 (cons 8 "0") ;0 = Layer cua Duong Taluy
 )
)
)
;;Doan duoi nay khong can de y
(while
(and
(setq curve  (car(entsel "\nPath curve :")))
(wcmatch (cdadr (entget curve)) "*LINE,ARC")
(setq pt (getpoint "\n P :"))
(setq i -2 j -1 len (vlax-curve-getDistAtParam curve (vlax-curve-getEndParam curve)))
)
(progn
(while (< (setq dsttmp (* (setq i (+ i 2)) #dist)) len) (eLine (vlax-curve-getPointAtDist curve dsttmp) pt T))
(while (< (setq dsttmp (* (setq j (+ j 2)) #dist)) len) (eLine (vlax-curve-getPointAtDist curve dsttmp) pt nil))
)
))

Cảm ơn bác KETXU nhé. Lisp chạy rất chuẩn. Thế là diễn đàn mình có thêm một kiểu rải taluy nữa. Kiểu rải này đúng ở các góc của đường đắp. Hoặc ở phần giao của đường nhánh với đường chính ( Đắ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  

×