Chuyển đến nội dung
Diễn đàn CADViet

khongban231

Thành viên
  • Số lượng nội dung

    9
  • Đã tham gia

  • Lần ghé thăm cuối

Bài đăng được đăng bởi khongban231


  1. 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ủ :((


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


  3. 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 :)) 


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


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

×