Đến nội dung


Hình ảnh

Hỏi về lệnh Break


  • Please log in to reply
17 replies to this topic

#1 oizdoi_oi

oizdoi_oi

    biết dimlinear

  • Members
  • PipPipPipPipPip
  • 306 Bài viết
Điểm đánh giá: 452 (tốt)

Đã gửi 31 December 2008 - 08:34 AM

Liệu có cách nào break được nhiều đối tượng một phát không các bạn nhỉ?
  • 0
KTS không bao giờ chết đói...mà chỉ đói đến lúc chết!

#2 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 31 December 2008 - 09:40 AM

Liệu có cách nào break được nhiều đối tượng một phát không các bạn nhỉ?

Bạn dùng lệnh BF trong bộ ACV
  • 0

#3 oizdoi_oi

oizdoi_oi

    biết dimlinear

  • Members
  • PipPipPipPipPip
  • 306 Bài viết
Điểm đánh giá: 452 (tốt)

Đã gửi 16 February 2009 - 09:29 AM

Bạn dùng lệnh BF trong bộ ACV

cái này ko br từ điểm này đến điểm kia được à bác(chỉ thấy tách 1 line thành 2 đối tượng tại một điểm)
THANK!
  • 0
KTS không bao giờ chết đói...mà chỉ đói đến lúc chết!

#4 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 16 February 2009 - 09:38 AM

cái này ko br từ điểm này đến điểm kia được à bác(chỉ thấy tách 1 line thành 2 đối tượng tại một điểm)
THANK!

Tại bạn không hỏi rõ ràng đấy chứ. Nếu cẩn thận hơn thì up file hoặc hình minh hoạ lên. Nếu bạn muốn br từ điểm này đến điểm kia thì đơn giản thôi là dùng lệnh br vì dùng lisp mà vẫn click điểm nhiều thế thì không hiệu quả hơn mấy.Đấy là ý kiến của mình
  • 0

#5 oizdoi_oi

oizdoi_oi

    biết dimlinear

  • Members
  • PipPipPipPipPip
  • 306 Bài viết
Điểm đánh giá: 452 (tốt)

Đã gửi 14 April 2009 - 04:17 PM

Tại bạn không hỏi rõ ràng đấy chứ. Nếu cẩn thận hơn thì up file hoặc hình minh hoạ lên. Nếu bạn muốn br từ điểm này đến điểm kia thì đơn giản thôi là dùng lệnh br vì dùng lisp mà vẫn click điểm nhiều thế thì không hiệu quả hơn mấy.Đấy là ý kiến của mình

i' minh ko phải là hỏi br bình thường
mà là br từ điểm này đến điểm kia mà nhiều đối tượng một lúc cơ
giống như trim F i' mà
\thank
  • 0
KTS không bao giờ chết đói...mà chỉ đói đến lúc chết!

#6 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 15 April 2009 - 05:43 AM

i' minh ko phải là hỏi br bình thường
mà là br từ điểm này đến điểm kia mà nhiều đối tượng một lúc cơ
giống như trim F i' mà
\thank

Tại 'oizdoi_oi' không nói rõ đấy thôi.
bạn muốn mọi người giúp mình thì hãy nói rõ ràng ra, cần thiết kèm theo file .dwg minh hoạ nếu có thể.
Đây là Lisp break 1 phát như bạn yêu càu.
Cách hoạt động như lệnh Trim, nhưng khác với lệnh trim là Break tại 1 điểm giao đối tượng Line với tường rào, thực hiện cho nhiều đối tượng cùng 1 lúc.
Lisp chỉ thực hiện với đối tượng là Line. Với các đối tượng khác thì mình chưa có cách,. Các bác trên diễn đàn có cách gì thì xin chỉ giúp để Tue_NV hoàn thiện Code.
Xin chân thành cảm ơn.

(Defun c:brt()
(Setq L (car(entsel "\n Chon Line hang rao :")))

(while (or (= L nil) (/= (cdr(assoc 0 (entget L))) "LINE"))
(Setq L (car(entsel "\n Chon lai Line hang rao :")))
)

(setq entL (entget L))

(Setq aL (cdr(assoc 10 entL))
bL (cdr(assoc 11 entL)))
(Prompt "\n Chon doi tuong Line can break tai 1 diem :")

(Setq ss (ssget '((0 . "LINE"))))
(Setq n (sslength ss)
i 0)
(while (< i n)
(setq sL (ssname ss i))
(setq cL (cdr(assoc 10 (entget sL))))
(setq dL (cdr(assoc 11 (entget sL))))

(setq eL (inters aL bL cL dL T))
(if (= eL nil) (setq i (1+ i)))
(if (/= eL nil)
(progn
(Command "_Break" sL eL "@")
(setq i (1+ i))
)
)
)
(SSSETFIRST SS SS)
(Princ)
)

Chúc thành công :cheers:
  • 1

#7 oizdoi_oi

oizdoi_oi

    biết dimlinear

  • Members
  • PipPipPipPipPip
  • 306 Bài viết
Điểm đánh giá: 452 (tốt)

Đã gửi 15 April 2009 - 11:23 AM

cái này của bạn giống như lệnh BF trong bộ ACV
tách 1 line thành 2 line tại một điểm
mình muốn br từ điểm VD từ đ1 đến đ2 cho tat ca cac line ne`
d1, d2 nam bat ki` tren duong line hoac pline...

Hình đã gửi
  • 0
KTS không bao giờ chết đói...mà chỉ đói đến lúc chết!

#8 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 15 April 2009 - 01:11 PM

cái này của bạn giống như lệnh BF trong bộ ACV
tách 1 line thành 2 line tại một điểm
mình muốn br từ điểm VD từ đ1 đến đ2 cho tat ca cac line ne`
d1, d2 nam bat ki` tren duong line hoac pline...
Hình đã gửi

Bạn sử dụng Code sau :
Lisp yêu cầu :
1. Chọn hàng rào là 1 đoạn thẳng bằng cách Pick điểm thứ nhất và điểm thứ hai
2. Chọn đối tượng cần break
Sau khi chạy Lisp xong sẽ break đối tượng được chọn tại điểm giao của hàng rào với đối tượng
Đối tượng được chọn là Line và Polyline thẳng
(Defun c:brt()
(vl-load-com)
(prompt "\n Chon duong cat bang cach chon diem thu nhat va diem thu hai :")
(setq aL (getpoint "\n Chon diem thu nhat :"))
(setq bL (getpoint aL "\n Chon diem thu hai :"))
(Prompt "\n Chon doi tuong Line can break tai 1 diem :")
(Setq ss (ssget '((0 . "LINE,LWPOLYLINE"))))
(Setq n (sslength ss)
i 0)
(while (< i n)
(setq sL (ssname ss i))
(setq cL (vlax-curve-getStartPoint sL))
(setq dL (vlax-curve-getEndPoint sL))
(setq eL (inters aL bL cL dL T))
(if (= eL nil) (setq i (1+ i)))
(if (/= eL nil)
(progn
(Command "_Break" sL eL "@")
(setq i (1+ i))
)
)
)
(sssetfirst ss ss)
(Princ)
)
Có gì vướng mắc bạn cứ post lên đây, Tue_NV sẽ sửa
  • 1

#9 oizdoi_oi

oizdoi_oi

    biết dimlinear

  • Members
  • PipPipPipPipPip
  • 306 Bài viết
Điểm đánh giá: 452 (tốt)

Đã gửi 15 April 2009 - 04:49 PM

ko
như thế này cơ

Hình đã gửi
  • 0
KTS không bao giờ chết đói...mà chỉ đói đến lúc chết!

#10 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 15 April 2009 - 05:19 PM

Lỗi tại bạn không nói rõ.
Khi chạy Lisp hỏi sẽ chọn pick điểm 1 và điểm 2. Điểm 1 và điểm 2 tạo thành 1 cửa sổ (W). Cửa sổ (W) là một hình chữ nhật tạo bởi 2 điểm 1 và điểm 2. Đoạn thẳng nối điểm 1 và điểm 2 chính là đường chéo của hình chữ nhật (W)
Chọn đối tượng là Line, Polyline thẳng.
Lisp sẽ break đối tượng.
Các đối tượng nằm trong vùng cửa sổ (W) bị break. còn đối tượng nằm ngoài cửa sổ được giữ nguyên
Nếu điểm 1 và điểm 2 cùng nằm trên 1 đường thẳng thì Lisp sẽ Break tại 1 điểm.
Bạn chạy thử xem nhé.

(Defun c:brt(/ aL bL cL dL eL fL gL sL hL ss n)
(vl-load-com)
(prompt "\n Chon duong cat bang cach chon diem thu nhat va diem thu hai :")
(setq aL (getpoint "\n Chon diem thu nhat :"))
(setq bL (getcorner aL "\n Chon diem thu hai :"))
(setq fL (list (car aL) (cadr bL) 0))
(setq gL (list (car bL) (cadr aL) 0))

(grdraw aL gL 1 1)
(grdraw gL bL 1 1)
(grdraw bL fL 1 1)
(grdraw fL aL 1 1)
(Prompt "\n Chon doi tuong Line can break tai 1 diem :")
(Setq ss (ssget '((0 . "LINE,LWPOLYLINE"))))
(Setq n (sslength ss)
i 0)
(while (< i n)
(setq sL (ssname ss i))
(setq cL (vlax-curve-getStartPoint sL))
(setq dL (vlax-curve-getEndPoint sL))

(setq eL (inters aL fL cL dL T))
(setq hL (inters bL gL cL dL T))

(if (= eL nil) (setq i (1+ i)))
(if (/= eL nil)
(progn
(Command "_Break" sL eL hL)
(setq i (1+ i))
)
)
)

(Princ)
)

Hy vọng bạn hài lòng.
Chúc thành công :cheers:
  • 2

#11 oizdoi_oi

oizdoi_oi

    biết dimlinear

  • Members
  • PipPipPipPipPip
  • 306 Bài viết
Điểm đánh giá: 452 (tốt)

Đã gửi 16 April 2009 - 05:04 PM

Lỗi tại bạn không nói rõ.
Khi chạy Lisp hỏi sẽ chọn pick điểm 1 và điểm 2. Điểm 1 và điểm 2 tạo thành 1 cửa sổ (W). Cửa sổ (W) là một hình chữ nhật tạo bởi 2 điểm 1 và điểm 2. Đoạn thẳng nối điểm 1 và điểm 2 chính là đường chéo của hình chữ nhật (W)
Chọn đối tượng là Line, Polyline thẳng.
Lisp sẽ break đối tượng.
Các đối tượng nằm trong vùng cửa sổ (W) bị break. còn đối tượng nằm ngoài cửa sổ được giữ nguyên
Nếu điểm 1 và điểm 2 cùng nằm trên 1 đường thẳng thì Lisp sẽ Break tại 1 điểm.
Bạn chạy thử xem nhé.


(Defun c:brt(/ aL bL cL dL eL fL gL sL hL ss n)
(vl-load-com)
(prompt "\n Chon duong cat bang cach chon diem thu nhat va diem thu hai :")
(setq aL (getpoint "\n Chon diem thu nhat :"))
(setq bL (getcorner aL "\n Chon diem thu hai :"))
(setq fL (list (car aL) (cadr bL) 0))
(setq gL (list (car bL) (cadr aL) 0))

(grdraw aL gL 1 1)
(grdraw gL bL 1 1)
(grdraw bL fL 1 1)
(grdraw fL aL 1 1)
(Prompt "\n Chon doi tuong Line can break tai 1 diem :")
(Setq ss (ssget '((0 . "LINE,LWPOLYLINE"))))
(Setq n (sslength ss)
i 0)
(while (< i n)
(setq sL (ssname ss i))
(setq cL (vlax-curve-getStartPoint sL))
(setq dL (vlax-curve-getEndPoint sL))

(setq eL (inters aL fL cL dL T))
(setq hL (inters bL gL cL dL T))

(if (= eL nil) (setq i (1+ i)))
(if (/= eL nil)
(progn
(Command "_Break" sL eL hL)
(setq i (1+ i))
)
)
)

(Princ)
)

Hy vọng bạn hài lòng.
Chúc thành công :cheers:

OK OK OK
đúng i' rui đấy thank nhìu nhé
  • 0
KTS không bao giờ chết đói...mà chỉ đói đến lúc chết!

#12 levanduy

levanduy

    biết lệnh offset

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

Đã gửi 16 April 2009 - 05:53 PM

ko
như thế này cơ

Hình đã gửi

Nếu chỉ đơn giản như hình vẽ trên em dùng ba lệnh rec >extrim > erase là xong đỡ phải lisp làm gì cho rườm rà.
Các bác góp ý với.
  • 0
Only dead fish go with the stream!

#13 oizdoi_oi

oizdoi_oi

    biết dimlinear

  • Members
  • PipPipPipPipPip
  • 306 Bài viết
Điểm đánh giá: 452 (tốt)

Đã gửi 17 April 2009 - 09:39 AM

Nếu chỉ đơn giản như hình vẽ trên em dùng ba lệnh rec >extrim > erase là xong đỡ phải lisp làm gì cho rườm rà.
Các bác góp ý với.

bạn còn non nắm
đây là mình vẽ đối tượng độc lập và đơn giản để vd trên diễn đàn
nếu như bạn thi minh dùng lệnh chim còn nhanh hơn exchim còn lệnh BR thì vứt đi
để thử nghiệm thì trước khi bạn cắt bất kì đối tượng nào trong bv thì bạn hãy suy nghĩ xem nên dung lệnh nào thì nhanh hơn nhé
trim, break, extrim, và bạn sẽ hỉu lúc nào thì dùng các lệnh đó OK
  • 0
KTS không bao giờ chết đói...mà chỉ đói đến lúc chết!

#14 levanduy

levanduy

    biết lệnh offset

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

Đã gửi 17 April 2009 - 11:11 AM

bạn còn non nắm
đây là mình vẽ đối tượng độc lập và đơn giản để vd trên diễn đàn
nếu như bạn thi minh dùng lệnh chim còn nhanh hơn exchim còn lệnh BR thì vứt đi
để thử nghiệm thì trước khi bạn cắt bất kì đối tượng nào trong bv thì bạn hãy suy nghĩ xem nên dung lệnh nào thì nhanh hơn nhé
trim, break, extrim, và bạn sẽ hỉu lúc nào thì dùng các lệnh đó OK

Vì còn non cho nên nhìn thấy lisp là em dị ứng,tìm cách nào thay thế lisp.
Tuổi trẻ bồng bột ,cảm ơn bác đã nhắc nhở.
  • 0
Only dead fish go with the stream!

#15 duongsatdn

duongsatdn

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 1657 Bài viết
Điểm đánh giá: 761 (tốt)

Đã gửi 17 April 2009 - 11:15 AM

Vì còn non cho nên nhìn thấy lisp là em dị ứng,tìm cách nào thay thế lisp.
Tuổi trẻ bồng bột ,cảm ơn bác đã nhắc nhở.

Ơ dưng mà "còn non" thì thấy LISP là phải máu chứ nhỉ(?) sao lại dị ứng!
  • 0

#16 levanduy

levanduy

    biết lệnh offset

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

Đã gửi 17 April 2009 - 11:29 AM

Ơ dưng mà "còn non" thì thấy LISP là phải máu chứ nhỉ(?) sao lại dị ứng!

Dĩ nhiên dùng lisp của người khác thì máu rồi nhưng phải tự mình viết lisp thì gian truân lắm bác ah.
Em đang tìm hiểu về lisp có khó khăn gì lại nhờ vả các bác trên diễn đàn.
  • 0
Only dead fish go with the stream!

#17 bktec84

bktec84

    biết vẽ arc

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

Đã gửi 17 September 2009 - 10:45 AM

Tuệ ơi minh nho cậu sửa giúp cái lips của cậu để break nhiều đối tượng tại 1 điểm, nhưng đối tượng chọn là pline. sau khi break thì đối tượng vẫn là pline.
Cảm ơn trước nhé!
  • 0

#18 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 17 September 2009 - 03:15 PM

Lỗi tại bạn không nói rõ.
Khi chạy Lisp hỏi sẽ chọn pick điểm 1 và điểm 2. Điểm 1 và điểm 2 tạo thành 1 cửa sổ (W). Cửa sổ (W) là một hình chữ nhật tạo bởi 2 điểm 1 và điểm 2. Đoạn thẳng nối điểm 1 và điểm 2 chính là đường chéo của hình chữ nhật (W)
Chọn đối tượng là Line, Polyline thẳng.
Lisp sẽ break đối tượng.
Các đối tượng nằm trong vùng cửa sổ (W) bị break. còn đối tượng nằm ngoài cửa sổ được giữ nguyên
Nếu điểm 1 và điểm 2 cùng nằm trên 1 đường thẳng thì Lisp sẽ Break tại 1 điểm.
Bạn chạy thử xem nhé.


(Defun c:brt(/ aL bL cL dL eL fL gL sL hL ss n)
(vl-load-com)
(prompt "\n Chon duong cat bang cach chon diem thu nhat va diem thu hai :")
(setq aL (getpoint "\n Chon diem thu nhat :"))
(setq bL (getcorner aL "\n Chon diem thu hai :"))
(setq fL (list (car aL) (cadr bL) 0))
(setq gL (list (car bL) (cadr aL) 0))

(grdraw aL gL 1 1)
(grdraw gL bL 1 1)
(grdraw bL fL 1 1)
(grdraw fL aL 1 1)
(Prompt "\n Chon doi tuong Line can break tai 1 diem :")
(Setq ss (ssget '((0 . "LINE,LWPOLYLINE"))))
(Setq n (sslength ss)
i 0)
(while (< i n)
(setq sL (ssname ss i))
(setq cL (vlax-curve-getStartPoint sL))
(setq dL (vlax-curve-getEndPoint sL))

(setq eL (inters aL fL cL dL T))
(setq hL (inters bL gL cL dL T))

(if (= eL nil) (setq i (1+ i)))
(if (/= eL nil)
(progn
(Command "_Break" sL eL hL)
(setq i (1+ i))
)
)
)

(Princ)
)

Hy vọng bạn hài lòng.
Chúc thành công :s_big:


Pác Tuệ ơi!Júp em với.Em đã down lisp này về dùng nhưng :
1.Nó chỉ break line.
2.Nó chỉ break các line nằm ngang, em thử với line thẳng đứng(or các line không nằm ngang)thì không được.
Pác có thể hoàn thiện nó để break theo 1 đường path được không.
  • 0
__Tâm tựa lưu thủY__
Vi nhân nan