Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Nhờ viết lisp tạo nhanh wipeout


  • Please log in to reply
61 replies to this topic

#21 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 05 April 2012 - 11:22 AM

Mình dùng thử lisp của bạn mà không được đối với các pline nối tiếp và khép kín, nhưng dùng được với rec là sao nhỉ? nó không có tác dụng đối với pline khép kín à???

Màu đỏ: không hiểu. Post bản vẽ lên nếu giải thích chưa rõ ràng.
  • 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.


#22 hockhiem

hockhiem

    biết lệnh erase

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

Đã gửi 05 April 2012 - 11:31 AM

Màu đỏ: không hiểu. Post bản vẽ lên nếu giải thích chưa rõ ràng.

Hình đã gửi

HCN thì dùng ha được, còn hình bên phải không dùng ha được?
  • 0

#23 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 05 April 2012 - 11:39 AM

Hình đã gửi

HCN thì dùng ha được, còn hình bên phải không dùng ha được?

Xem mặt mũi bằng file cad chứ image thì chịu!
  • 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.


#24 hockhiem

hockhiem

    biết lệnh erase

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

Đã gửi 05 April 2012 - 11:41 AM

Xem mặt mũi bằng file cad chứ image thì chịu!

http://www.cadviet.c...58_drawing1.dwg
  • 0

#25 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 05 April 2012 - 12:05 PM

http://www.cadviet.c...58_drawing1.dwg

Hề hề hề,
Cái polyline của bạn không kín. Nó cũng chả nối tiếp với thằng nào cả.... hãy kiểm tra mã dxf 70 của nó.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#26 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 05 April 2012 - 12:21 PM

http://www.cadviet.c...58_drawing1.dwg

Lệnh Wipeout gốc chỉ dùng được với pline colsed và không chứa arc. Đây là 1 khiếm khuyết của autodesk chăng? Cái pline của bạn dù kín nhưng vẫn open chứ không closed. Có thể h/c lisp để chuyển từ pline kín mà open sang closed thì dùng được, nhưng hơi vất vả tí.
  • 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.


#27 hockhiem

hockhiem

    biết lệnh erase

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

Đã gửi 05 April 2012 - 03:08 PM

Lệnh Wipeout gốc chỉ dùng được với pline colsed và không chứa arc. Đây là 1 khiếm khuyết của autodesk chăng? Cái pline của bạn dù kín nhưng vẫn open chứ không closed. Có thể h/c lisp để chuyển từ pline kín mà open sang closed thì dùng được, nhưng hơi vất vả tí.


Vậy một lần như vậy lại phải chỉnh từ open sang closed à, mất thời gian nhỉ.
  • 0

#28 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 05 April 2012 - 03:16 PM

Vậy một lần như vậy lại phải chỉnh từ open sang closed à, mất thời gian nhỉ.

Để tôi xem có thể sửa lisp được không, chứ sửa thủ công từ Pline open sang closed thì hơi bị khổ. Hãy chờ nhé!
  • 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.


#29 hockhiem

hockhiem

    biết lệnh erase

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

Đã gửi 05 April 2012 - 03:18 PM

Để tôi xem có thể sửa lisp được không, chứ sửa thủ công từ Pline open sang closed thì hơi bị khổ. Hãy chờ nhé!


Đợi tin bạn
  • 0

#30 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 05 April 2012 - 04:26 PM

Đợi tin bạn

Đã hiệu chỉnh cho bạn, link cũ, lệnh HA1.
  • 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.


#31 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 05 April 2012 - 04:41 PM

Đã hiệu chỉnh cho bạn, link cũ, lệnh HA1.


Quick code


;Doan Van Ha - CADViet.com - Ngay 04/4/2012
;Muc dich: Convert cac Lwpolyline duoc chon thanh cac Wipeout.
(defun C:HA1( / cmd entlst xoa)
(command "undo" "be")
(setq cmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq entlst (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LWPOLYLINE")))))))
(initget "X K") (setq xoa (getkword "\n[Xoa/Khong xoa] pline cu <X>: "))
(if (= xoa "K") (setq xoa "N") (setq xoa "Y"))
(foreach ent entlst
(command "wipeout" "p" (Open->Closed ent) xoa))
(setvar "cmdecho" cmd)
(command "undo" "end")
(princ))
(defun Open->Closed(ent / lst)
(foreach n (acet-geom-vertex-list ent)
(if (not (member n lst)) (setq lst (cons n lst))))
(setq lst (reverse (cons (last lst) lst)))
(entdel ent)
(entmakex (append (list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 100 "AcDbPolyline") (cons 90 (length lst)) (cons 70 1)) (mapcar (function (lambda (p) (cons 10 p))) lst))))
P/S (4h22' ngày 05/4/2012): Hiệu chỉnh để wipeout được với cả Lwpolyline kín nhưng open.

Cái này chỉnh luôn cả LWPolyline không kín về close luôn nếu viết như trên
Theo Tue_NV nên kiểm tra POLYline có kín không và kiểm tra luôn điểm cuối và điểm đầu có trùng không?
Nếu điểm đầu và điểm cuối trùng nhau thì nếu Polyline là "Open" thì "Close" Polyline
- Ý nữa là ta có thể xây dựng hàm Open->Closed bằng hàm subst+entmod mã dxf 70 để code gọn hơn
  • 2

#32 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 05 April 2012 - 05:18 PM

Cái này chỉnh luôn cả LWPolyline không kín về close luôn nếu viết như trên
Theo Tue_NV nên kiểm tra POLYline có kín không và kiểm tra luôn điểm cuối và điểm đầu có trùng không?
Nếu điểm đầu và điểm cuối trùng nhau thì nếu Polyline là "Open" thì "Close" Polyline
- Ý nữa là ta có thể xây dựng hàm Open->Closed bằng hàm subst+entmod mã dxf 70 để code gọn hơn

Thanks! Đã sửa ở link cũ.
  • 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.


#33 hockhiem

hockhiem

    biết lệnh erase

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

Đã gửi 06 April 2012 - 09:12 AM

Cảm ơn bác Doan Van Ha, lisp rất hay, tiện dụng.
  • 0

#34 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 06 April 2012 - 09:53 AM

Lệnh Wipeout gốc chỉ dùng được với pline colsed và không chứa arc. Đây là 1 khiếm khuyết của autodesk chăng? Cái pline của bạn dù kín nhưng vẫn open chứ không closed. Có thể h/c lisp để chuyển từ pline kín mà open sang closed thì dùng được, nhưng hơi vất vả tí.

Hiểu biết của bạn bị khiếm khuyết chứ không phải autodesk khiếm khuyết.
Đối tương wipeout bản chất là 1 raster. Nó tương tự như image. người ta không thể tạo được 1 bức ảnh có biên cong hoặc biên không đóng. Wipeout cũng vậy.
  • 1

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#35 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 06 April 2012 - 10:38 AM

Hiểu biết của bạn bị khiếm khuyết chứ không phải autodesk khiếm khuyết.
Đối tương wipeout bản chất là 1 raster. Nó tương tự như image. người ta không thể tạo được 1 bức ảnh có biên cong hoặc biên không đóng. Wipeout cũng vậy.

Biên cong thì không nói, nhưng biên thẳng và kín (mà open chứ không closed) thì nên wipeout được chứ nhỉ?
  • 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.


#36 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 07 April 2012 - 02:01 PM

Thì đó mới là thứ để bàn,
làm sao lấy dc boundary của Block và Hatch?
còn polyline thì cứ việc chọn xong: (command "wipeout" .........)

Hề hề hề,
Mấy hôm lu bu chưa làm được. Nay làm thử cái củ lisp theo cái luận lý mà mình đã nói bữa trước để các bác tham khảo và góp ý.
Gửi các bác cái củ chuối này để tạo wipeout từ các Lwpolyline kín nằm trong các block. Các bác thử xem nó có quá chát không nhé. Hy vọng rằng nó không đến nỗi là đồ bỏ.


(defun c:wobl (/ bl en plst enw)
(vl-load-com)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(command "undo" "be")
(setq bl (car (entsel "\n Chon block can tao wipeout"))
en (entlast)
plst (list)
)
(xbl bl)
(foreach lst plst
(setq lst (cdr lst))
(command "pline")
(foreach p lst
(command p)
)
(command "c")
(setq enw (entlast))
(command "wipeout" "p" enw "y")
)
(command "undo" "e")
(setvar "osmode" oldos)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun xbl ( bl / en elst blp)
(setq en (entlast)
en1 en)
(command "undo" "be" )
(command "explode" bl "" )
(while (setq en (entnext en))
(setq elst (entget en))
(if (and (= (cdr (assoc 0 elst)) "LWPOLYLINE") (= (cdr (assoc 70 elst)) 1))
(setq plst (append plst (list (acet-geom-vertex-list en))))
)
(if (= (cdr (assoc 0 elst)) "INSERT")
(progn
(setq blp (cdr (assoc -1 elst)))
(xbl blp)
)
)
)
(command "undo" "e" )
(command "undo" 1)
plst
)
Chúc các bác vui vẻ.

Bài viết đã được chỉnh sửa nội dung bởi phamthanhbinh: 28 April 2012 - 01:42 PM
Bổ sung lisp theo góp ý của bác Ketxu và bác ĐoanvanHa

  • 3
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#37 THIENDANTU_TDT

THIENDANTU_TDT

    biết zoom

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

Đã gửi 19 April 2012 - 07:54 PM

K ĐƯỢC RỒI BÁC BÌNH..BÁC XEM FILE NHÉ

http://www.cadviet.c...418_bomchim.dwg
  • 0

#38 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 19 April 2012 - 08:13 PM

K ĐƯỢC RỒI BÁC BÌNH..BÁC XEM FILE NHÉ
http://www.cadviet.c...418_bomchim.dwg

Lệnh Wipeout chỉ dùng được cho "Lwpolyline closed và không chứa Arc".
Block của bạn cấu tạo bởi các line, arc... mà không có "Lwpolyline closed và không chứa Arc" nên không thể wipeout bằng lisp này được.
  • 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.


#39 THIENDANTU_TDT

THIENDANTU_TDT

    biết zoom

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

Đã gửi 21 April 2012 - 01:02 PM

VẬY LÀ BÓ TAY HẢ BÁC. CÓ CÁCH NÀO K?
  • 0

#40 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 21 April 2012 - 03:17 PM

VẬY LÀ BÓ TAY HẢ BÁC. CÓ CÁCH NÀO K?

Hề hề hề,
Có chứ, ấy là bạn phải chuyển các arc thành lwpolyline rồi fùng pedit để nối chúng lại.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.