Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Lisp trải mái


  • Please log in to reply
16 replies to this topic

#1 hoangkimanh1607

hoangkimanh1607

    biết vẽ line

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

Đã gửi 21 November 2011 - 11:08 AM

1.Hình vẽ kèm theo
http://www.mediafire...tgycxeuyrabky4a
2.Mái luôn vuông góc đường thẳng
3.Chieu dài đường xanh ngắn của mái =1/2 đường trắng
4.Nhập text ví dụ mái 1 ghi ra 1:1.0 hoặc 1:2.0
5.Khoảng cách bước giữa các mái theo 1 số cho trước
6.Thanks các bạn đã đọc bài này
  • 0

#2 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 21 November 2011 - 12:45 PM

Yêu cầu đầu vào - đầu ra không rõ ràng. Bản vẽ minh họa thì chỗ thì block, chỗ là các đối tượng rời. bạn nên check lại :)
  • 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


#3 hoangkimanh1607

hoangkimanh1607

    biết vẽ line

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

Đã gửi 21 November 2011 - 01:24 PM

Tại vì mình dùng lệnh mesure nên tạo block để chia khoảng cách cho nhanh, còn những chỗ đoạn thẳng hẹp mình explode ra để trim , mình gửi lại bản vẽ
http://www.mediafire...4s6f4itgy1446iu
  • 0

#4 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 21 November 2011 - 01:45 PM

Bạn thật k hiểu ý mình. Cái đoạn đó dài ngắn như thế nào dựa vào khoảng cách giữa 2 đường biên. Đề bài của bạn k hề có chọn đường biên, thì tự lisp nó luận ra chăng ?????
  • 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 21 November 2011 - 02:31 PM

Tại vì mình dùng lệnh mesure nên tạo block để chia khoảng cách cho nhanh, còn những chỗ đoạn thẳng hẹp mình explode ra để trim , mình gửi lại bản vẽ
http://www.mediafire...4s6f4itgy1446iu

Hề hề hề,
Có phải bạn cần cái ni không???
Bữa trước có một bạn đã lập topic tương tự thế này và mình đã trả lời. Nhưng có lẽ do topic lập sai quy định nên đã bị delete. Trong lisp trả lời của mình do không có thời gian test nên chưa thực sự đúng trong một số trường hợp. Nay mình đã bổ sung lại lisp đó tuy nhiên trong lisp này mình để chiều dài của đường xanh ngắn là 1/3 chiều dài đường trắng như bạn lúc trước yêu cầu. Nếu bạn không khoái thì có thể sửa lại.
Hy vọng bạn hài lòng.


(defun c:rmai (/ oldco e1 e2 e3 p obj1 p0 p00 v v0 g g0 g00 ssp txt d p1 p2 p11 p12 d1 )
(vl-load-com)
(command "undo" "be")
(setq oldco (getvar "cecolor"))
(setq e1 (car (entsel "\n Chon duong chuan "))
e2 (car (setq a (entsel "\n Chon duong gioi han")))
p (cadr a)
obj1 (vlax-ename->vla-object e1)
p0 (vlax-curve-getclosestpointto obj1 p)
v0 (vlax-curve-getfirstderiv obj1 (vlax-curve-getparamatpoint obj1 p0))
g0 (angle p0 p)
p00 (mapcar '+ p0 v0)
g00 (angle p0 p00)
)
(command "measure" e1 (getreal "\n Nhap khoang cach chia: "))
(setq ssp (acet-ss-to-list (ssget "p"))
txt (getstring t "\n Nhap text do doc mai <1:1.0> : ")
d (getdist "\n Nhap khoang cach duong chan : ")
)

(foreach pe ssp
(setq p1 (cdr (assoc 10 (entget pe)))
v (vlax-curve-getfirstderiv obj1 (vlax-curve-getparamatpoint obj1 p1))
p2 (mapcar '+ p1 v)
g (angle p1 p2)
)
(cond
( (and (<= 0 g00) (> (/ pi 2) g00))
(if (> g0 (+ g00 pi))
(command "line" p1 (polar p1 (- g (/ pi 2)) 10) "")
(command "line" p1 (polar p1 (+ g (/ pi 2)) 10) "")
)
)
( (and (<= (* 1.5 pi) g00) (> (* 2 pi) g00))
(if (> g0 (- g00 pi))
(command "line" p1 (polar p1 (- g (/ pi 2)) 10) "")
(command "line" p1 (polar p1 (+ g (/ pi 2)) 10) "")
)
)
( T
(if (< g0 g00)
(command "line" p1 (polar p1 (- g (/ pi 2)) 10) "")
(command "line" p1 (polar p1 (+ g (/ pi 2)) 10) "")
)
)
)
(setq e3 (entlast))
(if (acet-geom-intersectwith e3 e2 0)
(command "trim" e2 "" (cdr (assoc 11 (entget e3))) "")
(command "extend" e2 "" (cdr (assoc 11 (entget e3))) "")
)
(setq p11 (if (>= (vlax-curve-getdistatpoint obj1 p1) d)
(vlax-curve-getpointatdist obj1 (- (vlax-curve-getdistatpoint obj1 p1) d))
p1)
p12 (if (<= (+ (vlax-curve-getdistatpoint obj1 p1) d) (vlax-curve-getdistatpoint obj1 (vlax-curve-getendpoint obj1)))
(vlax-curve-getpointatdist obj1 (+ (vlax-curve-getdistatpoint obj1 p1) d))
p1)
d1 (/ (distance (cdr (assoc 10 (entget e3))) (cdr (assoc 11 (entget e3)))) 3)
)
(setvar "cecolor" "3")
(cond
( (and (<= 0 g00) (> (/ pi 2) g00))
(if (> g0 (+ g00 pi))
(progn
(command "line" p11 (polar p11 (- g (/ pi 2)) d1) "")
(command "line" p12 (polar p12 (- g (/ pi 2)) d1) "")
)
(progn
(command "line" p11 (polar p11 (+ g (/ pi 2)) d1) "")
(command "line" p12 (polar p12 (+ g (/ pi 2)) d1) "")
)
)
)
( (and (<= (* 1.5 pi) g00) (> (* 2 pi) g00))
(if (> g0 (- g00 pi))
(progn
(command "line" p11 (polar p11 (- g (/ pi 2)) d1) "")
(command "line" p12 (polar p12 (- g (/ pi 2)) d1) "")
)
(progn
(command "line" p11 (polar p11 (+ g (/ pi 2)) d1) "")
(command "line" p12 (polar p12 (+ g (/ pi 2)) d1) "")
)
)
)
( T
(if (< g0 g00)
(progn
(command "line" p11 (polar p11 (- g (/ pi 2)) d1) "")
(command "line" p12 (polar p12 (- g (/ pi 2)) d1) "")
)
(progn
(command "line" p11 (polar p11 (+ g (/ pi 2)) d1) "")
(command "line" p12 (polar p12 (+ g (/ pi 2)) d1) "")
)
)
)
)
(setvar "cecolor" "4")
(if (and (> g 0) (< g pi) )
(command "text" "j" "mc" (polar p12 g 2) 2 (* (- g (/ pi 2)) (/ 180 pi)) txt )
(command "text" "j" "mc" (polar p12 g 2) 2 (* (+ g (/ pi 2)) (/ 180 pi)) txt)
)
(setvar "cecolor" oldco)
)

(command "undo" "e")
(princ)
)

Lisp này yêu cầu bạn: chọn đường chuẩn là đường mà bạn sẽ bắt đầu vẽ các đường mái dốc
chọn đường giói hạn là đường hạn chế chiều dài đường mái dốc
Nhập khoảng cách chia
Nhập nội dung text cần ghi
Nhập khoảng cách giữa đường xanh ngắn và đường trắng.
Sau đó sẽ vẽ ra cái bạn cần.

Hề hề hề,
Chúc bạn vui.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#6 hoangkimanh1607

hoangkimanh1607

    biết vẽ line

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

Đã gửi 21 November 2011 - 02:52 PM

Uh đưường chuẩn là đường xanh trên bắt dầu thực hiện lệnh vẽ mái dốc, đường xanh dưới đường giói hạn là đường hạn chế chiều dài đường mái dốc

khoang cach 2 đường xanh ngắn bằng 1/3 giữa 2 đường chuẩn, thanks

Bạn hoangkimanh chú ý không post 2 bài liền nhau
  • 0

#7 hoangkimanh1607

hoangkimanh1607

    biết vẽ line

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

Đã gửi 21 November 2011 - 03:03 PM

Thanks ban Thanh Bình minh làm như bạn mà ko được bạn có thể dơnload file cad mình gửi rùi ap list có được không, thanks
  • 0

#8 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 21 November 2011 - 03:22 PM

Thanks ban Thanh Bình minh làm như bạn mà ko được bạn có thể dơnload file cad mình gửi rùi ap list có được không, thanks

Hề hề hề,
Bạn làm không được thì nó báo cái chi???
Bản thân mình đã chạy trên bản vẽ của bạn thì nó chạy ra ngon lành cơ mà. Tuy nhiên nếu bạn chạy với cái khoảng cách là 2000 đúng như bạn ghi trên bản vẽ đó thì nó sẽ không thể ra cái chi cả do tổng chiều dài của cái polyline của bạn nhỏ hơn 2000 rất nhiều. Chớ có nhầm lẫn giữa kích thước thật và kích thước bạn vẽ. Nó còn có một hệ số tỷ lệ nữa đó.
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.

#9 w1nDream

w1nDream

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 293 Bài viết
Điểm đánh giá: 73 (tàm tạm)

Đã gửi 21 November 2011 - 04:17 PM

1.Hình vẽ kèm theo
http://www.mediafire...tgycxeuyrabky4a
2.Mái luôn vuông góc đường thẳng
3.Chieu dài đường xanh ngắn của mái =1/2 đường trắng
4.Nhập text ví dụ mái 1 ghi ra 1:1.0 hoặc 1:2.0
5.Khoảng cách bước giữa các mái theo 1 số cho trước
6.Thanks các bạn đã đọc bài này


ạn có thể tham khảo các bài viết về rải taluy
http://www.cadviet.c...uy&fromsearch=1
  • 0
__Tâm tựa lưu thủY__
Vi nhân nan

#10 w1nDream

w1nDream

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 293 Bài viết
Điểm đánh giá: 73 (tàm tạm)

Đã gửi 21 November 2011 - 04:19 PM

Ngoài ra bạn có thể dùng Measure (Me) để rải Block đã tạo

(Quot bị lỗi hay sao ấy Mod ơi.Mấy lần trả lời trích dẫn đều rất khó khăn.)
  • 0
__Tâm tựa lưu thủY__
Vi nhân nan

#11 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 21 November 2011 - 04:48 PM

Mod cũng chịu lun ^^

P/s : bạn Hoangkimanh1607 không để ý bài mình post lên trông nó như thế nào hay sao ấy nhỉ ?
  • 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


#12 hoangkimanh1607

hoangkimanh1607

    biết vẽ line

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

Đã gửi 21 November 2011 - 04:50 PM

ah ban ve minh gui la ti le 1:1 ban ah có nghỉa là khoảng cách la 20,thanks
  • 0

#13 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 21 November 2011 - 08:45 PM

ah ban ve minh gui la ti le 1:1 ban ah có nghỉa là khoảng cách la 20,thanks

Hề hề hề,
Thiệt không hiểu bạn nói cái chi nữa??? Nếu tỷ lệ 1:1 thì 20 đơn vị vẽ phải là 20 khi đo kích thước chớ sao lại là 2000 nhể???
Bạn đã chạy với con số nhập khoảng cách khi lisp hỏi là 20 chưa??? Mình chạy với con số nhập này thì các đường trải mái nó cứ ra sòn sòn, đẹp như tiên đấy.
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.

#14 hoangkimanh1607

hoangkimanh1607

    biết vẽ line

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

Đã gửi 22 November 2011 - 08:05 AM

Nếu sử dụng líp lần đầu thì ok, nhưng khi mình xóa đi làm lại thi nó báo lồi này bạn Bình ah
Invalid window specification.
; error: Function cancelled
Specify opposite corner:
No edge in that direction.
Select object to extend or shift-select to trim or
[Fence/Crossing/Project/Edge/Undo]: *Cancel*
Bản vẽ kèm theo
http://www.mediafire...exx3y3yy88e7lfp

Thanks
  • 0

#15 hoangkimanh1607

hoangkimanh1607

    biết vẽ line

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

Đã gửi 25 November 2011 - 12:10 PM

có bạn nào sửa dùm mình lỗi trên được không
thanks
  • 0

#16 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 25 November 2011 - 02:08 PM

Nếu sử dụng líp lần đầu thì ok, nhưng khi mình xóa đi làm lại thi nó báo lồi này bạn Bình ah
Invalid window specification.
; error: Function cancelled
Specify opposite corner:
No edge in that direction.
Select object to extend or shift-select to trim or
[Fence/Crossing/Project/Edge/Undo]: *Cancel*
Bản vẽ kèm theo
http://www.mediafire...exx3y3yy88e7lfp

Thanks

Hề hề hề,
Lỗi là tại bạn thôi. Trên bản vẽ bạn gửi đang sử dụng hệ tọa độ lkho6ng phải là hệ World. Do vậy Lisp không xác định được đối tượng để trim hay extend. Bạn hãy chuyển bản vẽ về hệ tọa độ chính thống World của CAD xem nhé.
Trong lisp mình viết, các hàm vlax đều sử dụng hệ tọa độ World để tính toán. Bạn hãy lưu ý điều này khi sử dụng.
Chúc bạn vui.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#17 hoangkimanh1607

hoangkimanh1607

    biết vẽ line

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

Đã gửi 03 December 2011 - 08:23 AM

ok, cảm ơn bạn thanh bình nhé,bạn có địa chỉ yahoo mail không để có gì mình không biết mình sẽ hỏi bạn thêm
  • 0