GMD Giảm mật độ Text
Xóa các Text theo điều kiện khoảng cách tối thiểu bằng cách pick 2 điểm
Trước khi giảm
Sau khi giảm
1 Thêm file GMD by lisp.vn.lsp
Lưu mã sau dưới dạng tệp tin GMD by lisp.vn.lsp
Code:
(defun c:GMD (/ ss dist i ent p ptx pty minp maxp c-x c-y grid-list key)
(vl-load-com)
(princ "\n--- Lisp Giam Mat Do Text ---")
;; 1. Nhập khoảng cách lưới (Mật độ)
(setq dist (getdist "\nNhap khoang cach luoi de giu lai 1 text (vi du 5.0): "))
(if (not dist) (setq dist 5.0))
;; 2. Chọn đối tượng Text
(prompt "\nChon vung Text can giam mat do: ")
(setq ss (ssget '((0 . "*TEXT"))))
(if ss
(progn
(setq grid-list '()) ;; List luu tru cac o da co text
(setq i 0)
(setq count-del 0)
(repeat (sslength ss)
(setq ent (ssname ss i))
(setq p (cdr (assoc 10 (entget ent)))) ;; Lay toa do diem chen
;; 3. Tinh toan toa do o luoi (Grid Cell)
;; Chia toa do cho khoang cach dist va lam tron de phan loai vao o
(setq c-x (fix (/ (car p) dist)))
(setq c-y (fix (/ (cadr p) dist)))
(setq key (strcat (itoa c-x) "," (itoa c-y)))
;; 4. Kiem tra xem o nay da co text nao duoc giu lai chua
(if (member key grid-list)
(progn
(entdel ent) ;; Neu o da co text, xoa text hien tai
(setq count-del (1+ count-del))
)
(setq grid-list (cons key grid-list)) ;; Neu chua, giu lai va danh dau o nay
)
(setq i (1+ i))
)
(princ (strcat "\nDa xoa " (itoa count-del) " Text trung lap trong luoi."))
)
(princ "\nKhong tim thay doi tuong Text.")
)
(princ)
)
(princ "\nLenh dung: GMD - Giam Mat Do Text - lisp.vn")
(princ "\nfrom lisp.vn")
(princ)Link tải (MediaFire)
---------------------------------------------------------------------------------------------
Mọi thông tin xin liên hệ Fanpage AutoLISP Thật là đơn giản!
Cảm ơn bạn đã theo dõi!

Không có nhận xét nào:
Đăng nhận xét