Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
11 replies to this topic

#1 hanam1210

hanam1210

    biết vẽ pline

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

Đã gửi 04 October 2011 - 08:19 AM

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

#2 dovananh.xd

dovananh.xd

    biết lệnh offset

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

Đã gửi 04 October 2011 - 10:22 AM

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

#3 hanam1210

hanam1210

    biết vẽ pline

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

Đã gửi 04 October 2011 - 12:31 PM

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

#4 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 04 October 2011 - 02:28 PM

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))
)
))

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

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 04 October 2011 - 03:16 PM

Đú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.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#6 hanam1210

hanam1210

    biết vẽ pline

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

Đã gửi 04 October 2011 - 03:33 PM

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

#7 dovananh.xd

dovananh.xd

    biết lệnh offset

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

Đã gửi 04 October 2011 - 03:45 PM

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

#8 trandanxd

trandanxd

    biết vẽ circle

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

Đã gửi 04 October 2011 - 03:50 PM

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!
  • 0
Người ta thường cô đơn bởi vì người ta thường chỉ lo xây tường chứ không lo xây dựng những nhịp cầu.
Hình đã gửi

#9 hanam1210

hanam1210

    biết vẽ pline

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

Đã gửi 04 October 2011 - 04:27 PM

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 đó ạ !
  • 0

#10 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 04 October 2011 - 04:50 PM

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ề.....
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#11 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 04 October 2011 - 08:00 PM

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é
Hình đã gửi


(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))
)
))

  • 1

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


#12 hanam1210

hanam1210

    biết vẽ pline

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

Đã gửi 05 October 2011 - 08:18 AM

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é
Hình đã gửi


(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 )
  • 0