补充一个扩展数据相关函数- ;| (xxd-put e app) = entmod方式,给实体添加或更新或删除扩展数据.-----梁雄啸.2004.10.1
- 参数: e = 实体名.
- app = '("注册名" 项1 项2 ...) ;用于添加或更新. 如(list "test" '(1070 . 1234)'(1003 . "0"))
- '("注册名") ; 用于删除相关注册项的xdata.
- nil ; 用于删除实体全部的xdata.
- 说明: 支持所有实体.非图形实体不支持viewport(必须用 vlax-ldata-put.或setxdata方法).
- 参考 entmod 帮助.
- 相关: 参照 ()函数=vla方式,支持所有的扩展数据修改.
- 实例: 1.增加(如已经有,则为更新)指定注册名的xdata:
- (xxd-put (car(entsel)) (list "test" (cons 1070 1234)))
- (xxd-put (car(entsel)) (list "test1" (cons 1070 4321)))
- 2.删除指定注册名的xdata:
- (xxd-put (car(entsel)) '("test"))
- (xxd-put (car(entsel)) '("test1"))
- 3.删除所有的扩展数据:
- (xxd-put (setq e(car(entsel))) nil)
- |;
- (defun xxd-put (e app)
- (if app (regapp (car app))) ;;无论是否已经有,均注册.有重复的话无不利影响.
- (if app
- (entmod (list (cons -1 e) (list -3 app))) ;;新建,更新,或删除指定app,{用 '("注册名") }.
- (progn ;;删除所有的扩展数据.
- (setq apps (mapcar 'car (cdr(assoc -3 (entget e '("*"))))))
- (entmod (list (cons -1 e) (cons -3 (mapcar 'list apps))))
- )
- )
- )
- ;|参考:删除xdata另外方法--by cy956@mjtd.
- (defun c:delxdata()
- (setq e(entsel)
- en(entget (car e)))
- (entmod en)
- )
- |;
|