Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
12 replies to this topic

#1 girl

girl

    biết vẽ spline

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

Đã gửi 12 July 2013 - 09:56 AM

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


  • 0

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5451 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 12 July 2013 - 10:09 AM

Lisp làm gì nhỉ? Cad: Qselect >> Chọn tất cả Polyline >> Expolde.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#3 hochoaivandot

hochoaivandot

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 310 Bài viết
Điểm đánh giá: 107 (tàm tạm)

Đã gửi 12 July 2013 - 10:13 AM

Ri được không?

(defun C:ttt()

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

)


  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#4 duy267

duy267

    biết vẽ point

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

Đã gửi 12 July 2013 - 10:15 AM

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

  • 0

#5 duy267

duy267

    biết vẽ point

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

Đã gửi 12 July 2013 - 10:18 AM

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.


  • 1

#6 girl

girl

    biết vẽ spline

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

Đã gửi 12 July 2013 - 10:26 AM

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


  • 0

#7 duy267

duy267

    biết vẽ point

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

Đã gửi 12 July 2013 - 10:30 AM

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.


  • 0

#8 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5451 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 12 July 2013 - 10:34 AM

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


  • 2

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#9 duy267

duy267

    biết vẽ point

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

Đã gửi 12 July 2013 - 10:40 AM

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


  • 0

#10 girl

girl

    biết vẽ spline

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

Đã gửi 12 July 2013 - 11:10 AM

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


  • 0

#11 duy267

duy267

    biết vẽ point

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

Đã gửi 12 July 2013 - 11:24 AM

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.


  • 0

#12 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5451 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 12 July 2013 - 02:55 PM

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

  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#13 girl

girl

    biết vẽ spline

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

Đã gửi 12 July 2013 - 03:18 PM

ok, Thanks anh nhiều ạ !


  • 0