05/10/2026

Lisp miễn phí loại bỏ Field | Remove_Fields | AutoLISP Reviewer

Ứng dụng được phát triển/Sưu tầm bởi đội ngũ AutoLISP Thật là đơn giản
   

Link tải/Thông tin thêm: 👉👉👉

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


https://www.cadtutor.net/forum/topic/18986-remove-all-fields-inserted-on-each-text-amp-block-attributes/


Link tải (MediaFire)



---------------------------------------------------------------------------------------------
Ứng dụng được phát triển bởi đội ngũ AutoLISP Thật là đơn giản - Tác giả ứng dụng in D2P

    

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

Lisp miễn phí loại bỏ Field | Remove_Fields | AutoLISP Reviewer

Ứng dụng được phát triển/Sưu tầm bởi đội ngũ AutoLISP Thật là đơn giản     Link tải/Thông tin thêm: 👉👉👉