如何删除扩展数据?
(defun c:wxdata ( / elist extdata newlist)<BR> (setq elist (entget (car (entsel))))<BR> (REGAPP "GCBH")(REGAPP "YHBH")<BR> (SETQ extdata<BR> (LIST (LIST -3 (LIST "GCBH"<BR> (CONS 1000 "扩展属性1")<BR> )<BR> (LIST "YHBH"<BR> (CONS 1000 "扩展属性2")<BR> )<BR> )<BR> )<BR> )<BR> (setq newlist (append elist extdata))<BR> (entmod newlist)<BR>)这样删除不成功!请大家帮忙纠正错误. 在这先谢了!<BR>(defun c:tmp1(/ ename elist)<BR>(setq ename (car (entsel)))<BR>(setq elist (entget ename '("GCBH")))<BR>(setq elist(vl-remove (assoc -3 elist) elist))<BR>(entmod elist)<BR> ) (entmod elist); 改为
(ENTMAKE ELIST) (ENTDEL ENAME); 只是造成图员名改变 (ENTMAKE ELIST) (ENTDEL ENAME)这样不是把原来的删除,再重新生成吗?直接修改图元不行吗? 试试Bill Kramer的这个;;---------------------------------------------------------
;; X_DATA_DEL - Utlity to remove the extended data for
;; an application (APID) from an entity object (EN).
;;
(defun X_DATA_DEL (EN APID / EL TMP1 TMP2)
(if (setq TMP2 (X_DATA_APPIDS)) ;;find X data?
(progn
(setq EL (entget EN TMP2) ;;get ALL data
TMP1 (assoc -3 EL) ;;get X data
)
;;is APID in X data info for object?
(if (assoc APID (cdr TMP1))
(progn
(setq TMP1 (cdr TMP1) ;;take off -3
TMP1 ;;remove existing X data
(append ;;rebuild X data list
(list -3)
(reverse ;;X data before APID
(cdr
(member
(assoc APID TMP1)
(reverse TMP1))))
(cdr ;;X data after APID
(member
(assoc APID TMP1)
TMP1)))
EL (subst TMP1 (assoc -3 EL) EL)
)
(entdel EN) ;;remove previous member
(entmake EL))))));;add with modified X data (X_DATA_APPIDS)没有传上来 多谢楼上各位大师! ; 将所有对象的编码、属性清空
(defun gtdj-bmqk (/ j-g1 k-g1 sm-g1 dx-g1 ty-g1)
(setq j-g1 (ssget "x"))
(if j-g1
(progn
(setq k-g1 0 sm-g1 (sslength j-g1))
(while (< k-g1 sm-g1)
(setq dx-g1 (ssname j-g1 k-g1))
(setq ty-g1 (entget dx-g1'("*")))
(if (assoc -3 ty-g1)
(progn
(entmake (vl-remove (assoc -3 ty-g1) ty-g1))
(entdel dx-g1) ))
(setq k-g1 (+ k-g1 1)) ) ))
(setq j-g1 nil)
(princ)
)
(setq e (car (entsel)) edata (entget e))
(entmod (subst '(-3 ("程序名"))(assoc -3 e) e) 学习了,多谢各位大师!!!!!!
页:
[1]