hkzwsy 发表于 2004-11-26 18:13:00

如何删除扩展数据?

(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>       )

BDYCAD 发表于 2004-11-26 18:40:00

(entmod elist);       改为


(ENTMAKE ELIST) (ENTDEL ENAME); 只是造成图员名改变

hkzwsy 发表于 2004-11-26 18:59:00

(ENTMAKE ELIST) (ENTDEL ENAME)这样不是把原来的删除,再重新生成吗?直接修改图元不行吗?

alin 发表于 2004-11-26 19:25:00

试试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

hkzwsy 发表于 2004-11-26 20:03:00

(X_DATA_APPIDS)没有传上来

alin 发表于 2004-11-27 07:57:00

jxphklibin 发表于 2007-3-8 21:48:00

多谢楼上各位大师!

652758365 发表于 2012-4-3 14:24:13

;         将所有对象的编码、属性清空
(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)
)
   

cabinsummer 发表于 2012-4-3 17:03:10

(setq e (car (entsel)) edata (entget e))
(entmod (subst '(-3 ("程序名"))(assoc -3 e) e)

vlisp2012 发表于 2012-4-4 08:43:57

学习了,多谢各位大师!!!!!!
页: [1]
查看完整版本: 如何删除扩展数据?