明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: song宋_74729

[提问] (已解决)请教高手如何将属性块内的字删除

[复制链接]
 楼主| 发表于 2016-5-20 18:40:12 | 显示全部楼层
ZZXXQQ 发表于 2016-5-20 10:16
(tt "PTCODE" "")

命令打TT發現錯誤

点评

命令行输入:(tt "PTCODE" "")  发表于 2016-5-21 08:55
 楼主| 发表于 2016-5-21 11:12:14 | 显示全部楼层
song宋_74729 发表于 2016-5-20 18:40
命令打TT發現錯誤

無法刪除ptcode圖塊文字
发表于 2016-5-24 15:01:42 | 显示全部楼层
提问最好发图,发个附件大家还要下载,麻烦
 楼主| 发表于 2022-8-4 12:44:18 | 显示全部楼层
将黄色字删除

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2022-8-5 16:47:40 | 显示全部楼层
本帖最后由 lee50310 于 2022-8-5 16:59 编辑



取自網路
https://autocadtips1.com/2011/04/12/autolisp-delete-attributes/


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2022-8-5 16:50:08 | 显示全部楼层
本帖最后由 lee50310 于 2022-8-5 17:01 编辑

執行指令:attdel
         1. 輸入圖塊名稱 99a
         2. 輸入屬性名稱 PTCODE




執行指令:attdel
         1. 輸入圖塊名稱 99
         2. 輸入屬性名稱 PTCODE

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2022-8-5 16:58:19 | 显示全部楼层
lee50310 发表于 2022-8-5 16:47
取自網路
https://autocadtips1.com/2011/04/12/autolisp-delete-attributes/

可以直接删除吗
发表于 2022-8-5 17:04:11 | 显示全部楼层
本帖最后由 lee50310 于 2022-8-5 18:27 编辑

當然可以,不過需要 自行修改程式
 楼主| 发表于 2022-9-1 23:24:03 | 显示全部楼层
lee50310 发表于 2022-8-5 17:04
當然可以,不過需要 自行修改程式

;;
;;取自網路
;;https://autocadtips1.com/2011/04/12/autolisp-delete-attributes/
;;刪除塊中屬性
;;--------------------------------------------------------------------------------------
(vl-load-com)

(defun c:ATTDEL        (/ blkname attname bn bd en ed attlst)

  (setq blkname (getstring T "\n輸入塊的名稱:ptcode "))
  (if (setq bn (tblobjname "BLOCK" blkname))
      (progn
            (setq bd  (entget bn)                  
                      en  (cdr(assoc -2 bd))          ;;第一個實體 insie 塊
                   attlst  nil                                      ;;初始化列表為空
            ) ;_ end of setq


      (while en       
               (setq ed (entget en))
           (if (= "ATTDEF" (cdr(assoc 0 ed)))      ;; 檢查實體是否是屬性定義
                   (setq attlst(cons (cons (strcase (cdr (assoc 2 ed))) ;; 添加到屬性列表
                                                       (vlax-ename->vla-object en)
                                              )
                                                    attlst
                                   )
                   )
               ) ;_ end of if
                   (setq en (entnext en))                        ;;獲取下一個實體
      ) ;_ end of while

      (setq attname (getstring T "\n輸入屬性標籤名稱: ptcode"))
  (if (setq en (assoc (strcase attname) attlst))    ;; 檢查屬性是否存在
          (progn
                (setq ed (cdr en))                                ;;獲取屬性的VLA對象
                (vla-Delete ed)
                (princ "\n已成功從塊定義中刪除屬性。" )
                (command "_.ATTSYNC" "_Name" blkname)
          ) ;_ end of progn
          (princ "\n此圖形中不存在該屬性。 退出...")
) ;_ end of if

    ) ;_ end of progn

    (princ "\n此圖形中不存在該塊。 退出..." )

  ) ;_ end of if

  (princ)

) ;_ end of defun
;;--------------------------------------------------------------------------------------

怎么修改删除ptcode文字
发表于 2022-9-2 04:21:48 | 显示全部楼层
本帖最后由 lee50310 于 2022-9-2 04:29 编辑




直接刪除圖檔內  99 及 99a 屬性塊的 ptcode 值

執行指令:atdel


  1. ;;--------------------------------------------------------------------------------------
  2. (defun  c:atdel()

  3. (setq lst '("99" "99a") attname "ptcode")
  4. (foreach x lst (att_del x attname))

  5. )
  6. (princ "\n 刪除 99及99a 屬性塊之屬性值.  執行指令:atdel ")

  7. ;;--------------------------------------------------------------------------------------
  8. (defun att_del(blkname attname / blkname attname bn bd en ed attlst)
  9. (vl-load-com)
  10. ;; (setq blkname (getstring T "\n輸入塊的名稱:ptcode "))
  11.   (if (setq bn (tblobjname "BLOCK" blkname))
  12.       (progn
  13.             (setq bd  (entget bn)                  
  14.                       en  (cdr(assoc -2 bd))          ;;第一個實體 insie 塊
  15.                    attlst  nil                                      ;;初始化列表為空
  16.             ) ;_ end of setq

  17.       (while en      
  18.                (setq ed (entget en))
  19.            (if (= "ATTDEF" (cdr(assoc 0 ed)))      ;; 檢查實體是否是屬性定義
  20.                    (setq attlst(cons (cons (strcase (cdr (assoc 2 ed))) ;; 添加到屬性列表
  21.                                                        (vlax-ename->vla-object en)
  22.                                               )
  23.                                                     attlst
  24.                                    )
  25.                    )
  26.                ) ;_ end of if
  27.                    (setq en (entnext en))                        ;;獲取下一個實體
  28.       ) ;_ end of while

  29.   ;;    (setq attname (getstring T "\n輸入屬性標籤名稱: ptcode"))
  30.   (if (setq en (assoc (strcase attname) attlst))    ;; 檢查屬性是否存在
  31.           (progn
  32.                 (setq ed (cdr en))                                ;;獲取屬性的VLA對象
  33.                 (vla-Delete ed)
  34.                 (princ "\n已成功從塊定義中刪除屬性。" )
  35.                 (command "_.ATTSYNC" "_Name" blkname)
  36.           ) ;_ end of progn
  37.           (princ "\n此圖形中不存在該屬性。 退出...")
  38. ) ;_ end of if

  39.     ) ;_ end of progn

  40.     (princ "\n此圖形中不存在該塊。 退出..." )

  41.   ) ;_ end of if

  42.   (princ)
  43. ) ;_ end of defun
  44. ;;--------------------------------------------------------------------------------------


您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-15 16:57 , Processed in 0.178906 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表