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

cắt line,pline giao với nhiều hình khác nhau

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

9 giờ trước, dinhvantrang đã nói:

Gửi bạn nhé. Cách dùng thì mở file Lisp lên xem nhé. Chỉ là sưu tầm được thôi

breaklisp.lsp

Thank bạn nhé!

Nhưng mình muốn dùng lisp cắt cái như file đính kèm chỉ 1 thao tác, các hình trong file chỉ là ví dụ thôi chứ hiình của mình nó là cac đường giao mấy trăm đối tượng nên ko làm thủ công được. 

Drawing1.dwg

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
5 giờ trước, khongban231 đã nói:

Thank bạn nhé!

Nhưng mình muốn dùng lisp cắt cái như file đính kèm chỉ 1 thao tác, các hình trong file chỉ là ví dụ thôi chứ hiình của mình nó là cac đường giao mấy trăm đối tượng nên ko làm thủ công được. 

Drawing1.dwg

Cad đã có lệnh EXTRIM rồi. Sao phải yêu cầu tạo ra lisp nữa làm gì ?

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
9 phút trước, Danh Cong đã nói:

Cad đã có lệnh EXTRIM rồi. Sao phải yêu cầu tạo ra lisp nữa làm gì ?

 

ExTrim phải chọn từng cái 1,  bản vẽ chủ thớt có hàng trăm cái hình như thé, chọn tay thì vỡ alo

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
5 giờ trước, khongban231 đã nói:

Thank bạn nhé!

Nhưng mình muốn dùng lisp cắt cái như file đính kèm chỉ 1 thao tác, các hình trong file chỉ là ví dụ thôi chứ hiình của mình nó là cac đường giao mấy trăm đối tượng nên ko làm thủ công được. 

Drawing1.dwg

Quick code tí cho bạn. Chưa test hết các trường hợp nhưng thử bản vẽ drawing thì thấy chạy được. ^_^

(defun c:test  (/ vl-pline-centroid n pt ss ent)
  (defun vl-pline-centroid  (pl / acdoc space obj reg cen)
    (vl-load-com)
    (setq acdoc (vla-get-activedocument (vlax-get-acad-object))
          space (if (= (getvar "CVPORT") 1)
                  (vla-get-paperspace acdoc)
                  (vla-get-modelspace acdoc)
                  )
          )
    (or (= (type pl) 'vla-object)
        (setq obj (vlax-ename->vla-object pl))
        )
    (setq reg (vlax-invoke space 'addregion (list obj))
          cen (vlax-get (car reg) 'centroid)
          )
    (vla-delete (car reg))
    (trans cen 1 (vlax-get obj 'normal))
    )
  (if (setq ss (ssget))
    (progn
      (setq n 0)
      (repeat (sslength ss)
        (setq pt (vl-pline-centroid (ssname ss n)))

        (setq ent (entmake
                    (list '(0 . "POINT") (cons 10 pt))
                    )
              )
        (command "_.Zoom" "obj" (ssname ss n) "")
        (etrim (ssname ss n) pt)
  
        (setq n (1+ n))
        ) ;repeat
      ) ;progn
    ) ;if
  (command "zoom" "all")
  )

 

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ào lúc 2/4/2018 tại 15:21, Bee đã nói:

Quick code tí cho bạn. Chưa test hết các trường hợp nhưng thử bản vẽ drawing thì thấy chạy được. ^_^


(defun c:test  (/ vl-pline-centroid n pt ss ent)
  (defun vl-pline-centroid  (pl / acdoc space obj reg cen)
    (vl-load-com)
    (setq acdoc (vla-get-activedocument (vlax-get-acad-object))
          space (if (= (getvar "CVPORT") 1)
                  (vla-get-paperspace acdoc)
                  (vla-get-modelspace acdoc)
                  )
          )
    (or (= (type pl) 'vla-object)
        (setq obj (vlax-ename->vla-object pl))
        )
    (setq reg (vlax-invoke space 'addregion (list obj))
          cen (vlax-get (car reg) 'centroid)
          )
    (vla-delete (car reg))
    (trans cen 1 (vlax-get obj 'normal))
    )
  (if (setq ss (ssget))
    (progn
      (setq n 0)
      (repeat (sslength ss)
        (setq pt (vl-pline-centroid (ssname ss n)))

        (setq ent (entmake
                    (list '(0 . "POINT") (cons 10 pt))
                    )
              )
        (command "_.Zoom" "obj" (ssname ss n) "")
        (etrim (ssname ss n) pt)
  
        (setq n (1+ n))
        ) ;repeat
      ) ;progn
    ) ;if
  (command "zoom" "all")
  )

 

Thank b bee nhưng không được b ơi. mình muốn lệnh kiểu như chọn lần 1 tất cả các line hay pline cần cắt => lần 2 chọn các hình muốn cắt ở trong hoặc ở ngoài ý, gần giống extrim nhưng mà chọn được nhiều đối tượng giao cắt. Trước m có lisp này r giờ lên mạng tìm không nhớ từ khóa gõ nát cả google không thấy , có cao nhân nào giúp mình cái đang cần quá. 

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
1 giờ trước, khongban231 đã nói:

Thank b bee nhưng không được b ơi. mình muốn lệnh kiểu như chọn lần 1 tất cả các line hay pline cần cắt => lần 2 chọn các hình muốn cắt ở trong hoặc ở ngoài ý, gần giống extrim nhưng mà chọn được nhiều đối tượng giao cắt. Trước m có lisp này r giờ lên mạng tìm không nhớ từ khóa gõ nát cả google không thấy , có cao nhân nào giúp mình cái đang cần quá. 

Lisp này chỉ việc chọn những vùng boundary pline là nó tự trim hết bên trong mà! Giống file dwg mẫu bạn gửi đó thô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
15 phút trước, Bee đã nói:

Lisp này chỉ việc chọn những vùng boundary pline là nó tự trim hết bên trong mà! Giống file dwg mẫu bạn gửi đó thôi.

sao mình làm mãi không được nhỉ? mình chạy trên nền cad 2007 với cad 2018 đều không được b Bee ? :((

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
27 phút trước, khongban231 đã nói:

sao mình làm mãi không được nhỉ? mình chạy trên nền cad 2007 với cad 2018 đều không được b Bee ? :((

Mình gửi lại, copy paste và load chạy lệnh xem được chưa nhé.! ^_^

 

(defun c:test  (/ vl-pline-centroid n pt ss ent)
  (load "extrim.lsp")
  (defun vl-pline-centroid  (pl / acdoc space obj reg cen)
    (vl-load-com)
    (setq acdoc (vla-get-activedocument (vlax-get-acad-object))
          space (if (= (getvar "CVPORT") 1)
                  (vla-get-paperspace acdoc)
                  (vla-get-modelspace acdoc)
                  )
          )
    (or (= (type pl) 'vla-object)
        (setq obj (vlax-ename->vla-object pl))
        )
    (setq reg (vlax-invoke space 'addregion (list obj))
          cen (vlax-get (car reg) 'centroid)
          )
    (vla-delete (car reg))
    (trans cen 1 (vlax-get obj 'normal))
    )
  (if (setq ss (ssget))
    (progn
      (setq n 0)
      (repeat (sslength ss)
        (setq pt (vl-pline-centroid (ssname ss n)))

        (setq ent (entmake
                    (list '(0 . "POINT") (cons 10 pt))
                    )
              )
        (command "_.Zoom" "obj" (ssname ss n) "")
        (etrim (ssname ss n) pt)
  
        (setq n (1+ n))
        ) ;repeat
      ) ;progn
    ) ;if
  (command "zoom" "all")
  )

 

  • Like 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
6 giờ trước, Bee đã nói:

Mình gửi lại, copy paste và load chạy lệnh xem được chưa nhé.! ^_^

 


(defun c:test  (/ vl-pline-centroid n pt ss ent)
  (load "extrim.lsp")
  (defun vl-pline-centroid  (pl / acdoc space obj reg cen)
    (vl-load-com)
    (setq acdoc (vla-get-activedocument (vlax-get-acad-object))
          space (if (= (getvar "CVPORT") 1)
                  (vla-get-paperspace acdoc)
                  (vla-get-modelspace acdoc)
                  )
          )
    (or (= (type pl) 'vla-object)
        (setq obj (vlax-ename->vla-object pl))
        )
    (setq reg (vlax-invoke space 'addregion (list obj))
          cen (vlax-get (car reg) 'centroid)
          )
    (vla-delete (car reg))
    (trans cen 1 (vlax-get obj 'normal))
    )
  (if (setq ss (ssget))
    (progn
      (setq n 0)
      (repeat (sslength ss)
        (setq pt (vl-pline-centroid (ssname ss n)))

        (setq ent (entmake
                    (list '(0 . "POINT") (cons 10 pt))
                    )
              )
        (command "_.Zoom" "obj" (ssname ss n) "")
        (etrim (ssname ss n) pt)
  
        (setq n (1+ n))
        ) ;repeat
      ) ;progn
    ) ;if
  (command "zoom" "all")
  )

 

Cảm ơn b Bee nhé. mình chạy ok rồi chỉ tội chạy hơi lâu tí nhưng nhanh gấp vạn lần làm thủ cô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
3 giờ trước, khongban231 đã nói:

Cảm ơn b Bee nhé. mình chạy ok rồi chỉ tội chạy hơi lâu tí nhưng nhanh gấp vạn lần làm thủ công :)) 

hic. cái mình up lên b code giúp thì chạy được, mình thử vào bản vẽ mình đang làm nhiều đối tượng quá nó lại báo error. sử lý hộ mình cái code nhé bạn Bee :((

new block.dwg

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
11 giờ trước, khongban231 đã nói:

hic. cái mình up lên b code giúp thì chạy được, mình thử vào bản vẽ mình đang làm nhiều đối tượng quá nó lại báo error. sử lý hộ mình cái code nhé bạn Bee :((

new block.dwg

Oài còn 1 đống trường hợp chưa xử lý mà.

1. Đối tượng này không nằm trong wcs.

2. Đối tượng pline nhưng không kín.

3. Đối tượng không phải pline

4. 2 pline nằm  trong nhau

 

Hê hê nhiều nhỉ. Cái này thì từ từ mình sẽ fix, giờ đang chạy lụt nên chưa có time. Hoặc chờ các cao thủ fix cho. ^_^

image.png.8f56c8159ca7cd2708ca645ebbc9b222.png

image.png.d3f1a8804af57df48376dcd677845f95.png

 

image.png.8c5870ad9070095b362846dcaed6ed90.png

image.png.792952b0e9f1e20989fc100f3d6f6c09.png

 

image.png.6e4866f254ffe9e36b498f853d92e8cf.png

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
43 phút trước, Bee đã nói:

Oài còn 1 đống trường hợp chưa xử lý mà.

1. Đối tượng này không nằm trong wcs.

2. Đối tượng pline nhưng không kín.

3. Đối tượng không phải pline

4. 2 pline nằm  trong nhau

 

Hê hê nhiều nhỉ. Cái này thì từ từ mình sẽ fix, giờ đang chạy lụt nên chưa có time. Hoặc chờ các cao thủ fix cho. ^_^

image.png.8f56c8159ca7cd2708ca645ebbc9b222.png

image.png.d3f1a8804af57df48376dcd677845f95.png

 

image.png.8c5870ad9070095b362846dcaed6ed90.png

image.png.792952b0e9f1e20989fc100f3d6f6c09.png

 

image.png.6e4866f254ffe9e36b498f853d92e8cf.png

thank bạn Bee nhé. những cái này m chưa sử lý hết vì các đường giao chắc chắn phải là kín, không có hình lồng vào nhau chắc mình lọc sót,  pline  chuyển nét được. rảnh fix m với nhé, làm mấy con nhà to thao tác thủ công oải lắm toàn 2,3h sáng ms 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
Vào lúc 1/4/2018 tại 23:30, khongban231 đã nói:

ai có lisp cắt các đường line, pline giao với nhiều hình khác nhau cho mình với, không bạn nào viết giúp mình đc không?

Hi vọng nó đúng với yêu cầu của bác! Bác có thể tham khảo Video bên dưới!

https://youtu.be/SHmaGvIn4N8

Trim doi tuong giao nhau (TG - TGG - TTG).lsp

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  

×