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

Nhờ viết lisp explode các đường polyline.

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

Pro nào viết giúp em cái lisp explode các đường polyline khi đánh lệnh lisp với. phá khối toàn bộ các đường  polyline có trong bản vẽ.

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 thử lisp này.

(defun c:EP (/ ss index n ent)
  (command ".undo" "BE")
  (setvar "CMDECHO" 0)
  (setq ss (ssget "X" '((0 . "*POLYLINE") (-4 . "<NOT") (70 . 1) (-4 . "NOT>"))))
  (setq index (sslength ss))
  (setq n 0)
  (repeat index
    (setq ent (ssname ss n))
    (command ".EXPLODE" ent "")
    (setq n (1+ n))
  )
  (command ".undo" "E")
  (princ)
)
(princ "L\U+1EC7nh ph\U+00E1 to\U+00E0n b\U+1ED9 PILYLINE tr\U+00EAn b\U+1EA3n v\U+1EBD")

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

Ri được không?

(defun C:ttt()

(command "explode" (ssget "X" (list (cons 0 "*POLYLINE"))))

)

 

Lisp này chỉ phá được 1 đối tượng. Bạn xem lại.

  • 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

Lisp TTT thì nó lại hiểu cái rectangle thành polyline nên nó phá khối luôn. Bác làm sao để lại cái rectangle không phá khối ý ạ !

Còn lisp ep chỉ phá được 1 đối tượ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

Lisp TTT thì nó lại hiểu cái rectangle thành polyline nên nó phá khối luôn. Bác làm sao để lại cái rectangle không phá khối ý ạ !

Còn lisp ep chỉ phá được 1 đối tượng

 

Sao bạn không nói rõ từ đầu, Rectangle vẫn là Polyline mà. Dùng thử lệnh EP mới sửa ở trê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

@Duy267: (70 .1) thì nó chọn tất cả pline closed mất thôi >> không cứ chỉ mỗi Rec là không chọn mà tất cả pline đóng đều không được chọn.

@HHVD: set QAFLAGS về 1 thì nó xoá cả tập chọn.

  • 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

@Duy267: (70 .1) thì nó chọn tất cả pline closed mất thôi.

 

Em quên mất, phải xét tới trường hợp nó là HCN nữa, bài toán trở nên phức tạp hơn rồi :D. Cần phải thêm vài điều kiện lọc nữa.

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ệnh ep mới sửa vẫn lỗi khi mà có 2 loại PL, 1 PL là vẽ ra ngay từ đầu. 1 PL là joint 2 line lại thành. Khi đó ep chỉ phá được 1 đối tượ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

lệnh ep mới sửa vẫn lỗi khi mà có 2 loại PL, 1 PL là vẽ ra ngay từ đầu. 1 PL là joint 2 line lại thành. Khi đó ep chỉ phá được 1 đối tượng

 

Đề bài bạn đưa ra không rõ ràng ngay từ đầu. Chỉ có những đường POLYLINE kín thì nó không nhận ra, còn các POLYLINE hở vẫn EXPLODE được.

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

Lisp expolde tất cả pline có trên bản vẽ, ngoại trừ các rectangle.

 

;; Explode tat ca Pline ma khong phai la rectangle.
;; Doan Van Ha - CadViet.com - 12/7/2013
(defun C:HA( / ss ent lst UniqueFuzz #SS->List)
 (defun UniqueFuzz (lst fz)
  (if lst 
   (cons (car lst) (UniqueFuzz (vl-remove-if '(lambda (x) (if (= 10 (car x)) (equal x (car lst) fz))) (cdr lst)) fz))))
 (defun #SS->List (ss / i lst)
  (repeat (setq i (sslength ss))
   (setq lst (cons (ssname ss (setq i (1- i))) lst))))
 (vl-load-com)
 (command "undo" "be")
 (if (setq ss (ssget "X" '((0 . "LWPOLYLINE"))))
  (foreach ent (#SS->List ss)
   (if (equal (vlax-curve-getEndPoint ent) (vlax-curve-getStartPoint ent) 1E-8)
    (entmod (subst (cons 70 1) (assoc 70 (entget ent)) (entget ent))))
   (entmod (UniqueFuzz (entget ent) 1E-8))
   (setq lst (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget ent))))
   (if
    (not
     (and
    (= (length lst) 4)
      (equal (distance (car lst) (caddr lst)) (distance (cadr lst) (cadddr lst)) 1E-8)
      (inters (car lst) (caddr lst) (cadr lst) (cadddr lst))))
(vla-Explode (vlax-ename->vla-object ent)))))
 (command "undo" "e") 
 (princ))
 
  • 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

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  

×