Remove_Fields
Lisp miễn phí loại bỏ field trong Text/Mtext/Block. Được sưu tầm và chỉnh sửa bởi lisp.vn
1 Thêm Tệp tin mới Remove_Fields_from_lisp.vn.lsp
Lưu mã sau dưới dạng tệp tin Remove_Fields_from_lisp.vn.lsp
Code:
(defun C:Remove_Fields ( / del-field ss1 index item)
(vl-load-com)
(defun del-field (ent / edic elist etype obj val)
(if
(and
(setq edic (cdr (assoc 360 (setq elist (entget ent)))))
(dictsearch edic "ACAD_FIELD")
)
(progn
(setq obj (vlax-ename->vla-object ent)
etype (cdr (assoc 0 elist))
)
(cond
((= etype "DIMENSION")
(setq val (vla-get-textoverride obj))
(dictremove edic "ACAD_FIELD")
(vla-put-textoverride obj val)
)
((= etype "MTEXT")
(setq val (vla-get-textstring obj))
(dictremove edic "ACAD_FIELD")
(vla-put-textstring obj val)
)
(T (dictremove edic "ACAD_FIELD"))
)
)
)
)
(if
(setq ss1
(ssget
(list (cons 0 "INSERT,TEXT,MTEXT,MULTILEADER,DIMENSION"))
)
)
(progn
(setq index 0)
(repeat (sslength ss1)
(setq item (ssname ss1 index))
(setq entData (entget item))
(setq entType (cdr (assoc 0 entData)))
(if (= entType "INSERT")
;; ==========================================
;; TRƯỜNG HỢP 1: LÀ BLOCK (INSERT)
;; ==========================================
(progn
;; 1. Xử lý bản thân đối tượng Block
(if (del-field item) (entupd item))
;; 2. Kiểm tra Block có Attribute hay không (Mã DXF 66 = 1)
(if (= (cdr (assoc 66 entData)) 1)
(progn
(setq subItem (entnext item))
;; Duyệt qua các đối tượng con, dừng lại khi không còn là ATTRIB
(while (and subItem (= (cdr (assoc 0 (entget subItem))) "ATTRIB"))
(if (del-field subItem) (entupd subItem))
(setq subItem (entnext subItem))
)
)
)
)
;; ==========================================
;; TRƯỜNG HỢP 2: KHÔNG PHẢI BLOCK (TEXT, MTEXT,...)
;; ==========================================
(progn
;; Chỉ xử lý đối tượng chính, không gọi hàm entnext
(if (del-field item) (entupd item))
)
)
(setq index (1+ index))
)
)
)
(princ "Edited by www.lisp.vn")
(princ)
)Lệnh thực hiện
Code:
Remove_Fields
Nguồn tham khảo
Lệnh được chỉnh sửa từ bài viết của tác giả SteveK từ cadtutor
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