明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 852456

[提问] 关于entmod更新cass扩展属性表问题

[复制链接]
发表于 2019-8-2 11:59:59 | 显示全部楼层
852456 发表于 2019-7-30 13:54
你试验了吗  我试验了  改了之后  再查属性还是会出来

没仔细看你的代码,也没试。
想把其他值删掉的话,得把那些都替换成("SJZGBM")这种。
也就是得用(-3 ("SJZGBM") ……("SBDJ") ("QHDM" (1000 . "220284")) ("SOUTH" (1000 . "300000") (1000 . "1111") (1000 . "21111") (1000 . "054")))去替换原来的-3组码内的内容。

顺便说一句,你这个变量命名真是让人无语。
发表于 2020-9-11 11:38:47 | 显示全部楼层

;;;from blog of zml184
(vl-load-com)
;;;=============================================
;;;      通用函数   扩展数据的添加              
;;;参数:en       ----  对象图元名              
;;;      app_name ----扩展应用名               
;;;      v1       ----值                        
;;;      STR      ----操作标识。含义如下:
;;;                       "DelOnly"删除指定应用名的扩展数据,不添加
;;;                       "DelAll" 删除所有应用名的扩展数据,不添加
;;;                       "Add"    不覆盖现有扩展数据,添加新的数据
;;;                       "Del"    删除指定应用名下的扩展数据,添加新的数据
;;;                       "All"    删除所有应用名下的扩展数据,添加新的数据
(defun TTEDIT (EN APP_NAME V1 STR / ENL TMP TMP1 TMP2)
    ;;转换为大写
    (setq STR (strcase STR))
    ;;
    (cond
        ;;1.删除指定应用名的扩展数据
        ((= STR "DELONLY")
         (setq ENL (entget EN (list APP_NAME)))
         (if (assoc -3 ENL)
             (entmod (subst (list -3 (list APP_NAME)) (assoc -3 ENL) ENL)
             )
         )
        )
        ;;2.删除原来所有的扩展数据
        ((or (= STR "DELALL")
             (= STR "ALLDEL")
         )
         (setq ENL (entget EN (list "*")))
         (setq TMP (cdr (assoc -3 ENL)))
         ;;逐个删除
         (foreach N TMP
             (TTEDIT EN (car N) NIL "DELONLY")
         )
        )
        ;;3.不操作任何扩展数据(如果注册的是已有的也不覆盖)
        ((or (= STR "ADD")
             (= STR "")
         )
         (setq ENL (entget EN (list APP_NAME)))
         (setq TMP (cdr (assoc -3 ENL)))
         (setq TMP1 (cdr (assoc APP_NAME TMP)))
         (if TMP1
             (setq TMP2        (append TMP1 (list V1))
                   ENL        (subst (list -3 (cons APP_NAME TMP2)) (assoc -3 ENL) ENL)
             )
             (setq ENL (append ENL (list (list -3 (list APP_NAME V1)))))
         )
         ;;更新
         (regapp APP_NAME)
         (entmod ENL)
        )
        ;;4.删除当前,添加新的数据
        ((= STR "DEL")
         ;;删除原来所有的扩展数据
         (TTEDIT EN APP_NAME NIL "DELONLY")
         ;;添加新的数据
         (TTEDIT EN APP_NAME V1 "ADD")
        )
        ;;5.删除原来所有的扩展数据,添加新的数据
        ((= STR "ALL")
         ;;删除原来所有的扩展数据
         (TTEDIT EN NIL NIL "DELALL")
         ;;添加新的数据
         (TTEDIT EN APP_NAME V1 "ADD")
        )


    ) ;_结束COND
)
;;;================================================
;;;测试
(defun C:TT ()
    (if        (setq SS (entsel "\n点取对象:"))
        (progn (TTEDIT (car SS) "QQ" (cons 1000 "ZML84") "ALL")
               (TTEDIT (car SS) "QQ" (cons 1000 "389280742") "ADD")
        )
    )
    (princ)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-26 14:54 , Processed in 0.167562 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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