明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3148|回复: 21

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

[复制链接]
发表于 2016-5-17 21:02:50 | 显示全部楼层 |阅读模式
本帖最后由 song宋_74729 于 2022-9-2 07:09 编辑

如何将属性块内的字删除 A为原图 B为我要结果 PTCODE图层内的字删除,因为很多能否用LSPVLX谢谢大师
属性

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 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. ;;--------------------------------------------------------------------------------------


 楼主| 发表于 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-8-5 16:50:08 | 显示全部楼层
本帖最后由 lee50310 于 2022-8-5 17:01 编辑

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




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

本帖子中包含更多资源

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

x
发表于 2016-5-17 22:23:10 | 显示全部楼层
你这个提问求助牛B ,向别人请教还要收人家一个币。
 楼主| 发表于 2016-5-18 03:37:03 | 显示全部楼层
jltx123456 发表于 2016-5-17 22:23
你这个提问求助牛B ,向别人请教还要收人家一个币。

不好意思我按錯在此致歉 已經修正好 請大師幫忙
发表于 2016-5-18 09:47:58 | 显示全部楼层
PtCode图层内没有文字。
发表于 2016-5-18 10:14:29 | 显示全部楼层
ZZXXQQ 发表于 2016-5-18 09:47
PtCode图层内没有文字。

他是要清除属性块的最后一个属性,很久没有写Lisp了,你可以看看。
 楼主| 发表于 2016-5-18 18:09:21 | 显示全部楼层
ZZXXQQ 发表于 2016-5-18 09:47
PtCode图层内没有文字。

屬性有文字 可以刪除嗎
 楼主| 发表于 2016-5-18 18:10:44 | 显示全部楼层
ZZXXQQ 发表于 2016-5-18 09:47
PtCode图层内没有文字。

屬性有文字 可以刪除嗎
发表于 2016-5-19 08:20:52 | 显示全部楼层
song宋_74729 发表于 2016-5-18 18:09
屬性有文字 可以刪除嗎

经查,该图层上没有任何实体。

点评

他说的是属性块中的“文字”,就是图中绿颜色的那些“字”。  发表于 2016-5-19 10:04
 楼主| 发表于 2016-5-19 12:57:39 | 显示全部楼层
ZZXXQQ 发表于 2016-5-19 08:20
经查,该图层上没有任何实体。

我要刪除的是黃色的字如6L L R 062這些字能用框選刪除 麻煩大師
发表于 2016-5-20 10:16:51 | 显示全部楼层
  1. ;属性替换 明经 ZZXXQQ 2008.12.27-2010.5.19-2016.5.20
  2. (defun TT (oldlab newtxt)
  3. (if (and (princ "\nSelect a Block have old attribute 选择带属性图块 :")
  4.           (setq SS (ssget '((0 . "INSERT") (66 . 1))))
  5.      ) (progn
  6.   (setq I 0)
  7.   (repeat (sslength SS)
  8.    (setq EN (ssname SS I) ENT (entget EN))
  9.    (setq I (1+ I) ENT1 ENT)
  10.    (while (/= (cdr(assoc 0 (setq ENT1 (entget(entnext(cdr(assoc -1 ENT1))))))) "SEQEND")
  11.     (if (= (cdr(assoc 0 ENT1)) "ATTRIB")
  12.      (if (= (cdr(assoc 2 ENT3)) oldlab) (progn
  13.       (setq ENT1 (subst (cons 1 newtxt) (assoc 1 ENT1) ENT1))
  14.       (entmod ENT1)
  15.       (entmod ENT)
  16.      ))
  17.     )
  18.    )
  19.   )
  20. ))
  21. (princ)
  22. )
(tt "PTCODE" "")
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-15 16:50 , Processed in 0.216568 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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