Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
oizdoi_oi

Hỏi về lệnh Break

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

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!

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

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

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

  • 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

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

 

2_44.jpg

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

2_44.jpg

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

  • 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

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:

  • Vote tăng 2

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

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
ko

như thế này cơ

 

untitled_122.jpg

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.

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

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

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

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

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

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é!

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

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  

×