明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1192|回复: 1

[提问] 为什么替换不了扩展数据?

[复制链接]
发表于 2015-1-18 10:01:50 | 显示全部楼层 |阅读模式
本帖最后由 katamoto 于 2015-1-18 10:04 编辑

(defun c:kkk() ;tkkzsj,田块扩展数据
   (vl-load-com) (setvar "cmdecho" 0)(setvar "osmode" 0)(setvar "dimzin" 0)
   (regapp "ZD")
   (setq zushu (getstring "\n请输入图层号:"))
   (setq ss (ssget "x" (list '(0 . "LWPOLYLINE") (cons 8 zushu))) dbxsl (sslength ss) i 0) ;dbxsl 多边形数量
   (while (< i dbxsl)
      (setq en (ssname ss i) i (1+ i) enlist (entget en '("*")) ptlist nil)
      (foreach x enlist            (if (= (car x) 10)        (setq ptlist (cons (cdr x) ptlist)))         )
      (setq ss2 (ssget "wp" ptlist (list '(0 . "TEXT") (cons 8 zushu))))
      (setq en2 (ssname ss2 0) enlist2(entget en2) dkbm (cdr(assoc 1 enlist2)) )
      (setq new_ext (list -3 (list "ZD" (cons 1000 dkbm))))
      (if (setq old_ext (assoc -3 enlist))
         (setq enlist (subst new_ext old_ext enlist) k 5)
         (setq enlist (append enlist (list new_ext)) k 6)
      )
      (entmod enlist)
      (print k)
   )
   (setvar "dimzin" 8)
   (princ)
)

执行后输出结果都为5,表明执行了 (setq enlist (subst new_ext old_ext enlist) k 5)
但是用查看enlist后还是一样没变化,
发表于 2015-1-19 11:50:45 | 显示全部楼层
;存储或修改指定的扩展实体数据
;entname为有效的图形实体名,appname为已登记的应用类型名
;xdata为属于appname应用类型的扩展数据表
;若存储成功则返回包含指定扩展数据的实体数据表,否则返回nil
;例如:(setx (entlast) "PRICE" ((1040.123.45) (1040.321.54)))
(defun setx(entname appname xdata / x0 x1 dt1 dt2)
  (setq appname (strcase appname))
  (setq x1 (car xdata) x2 (cdr xdata))
  (if (null (tblsearch "APPID" appname)) (regapp appname))
  ;(Cons 1002 "}")
  (if (and (= (type entname) 'ENAME) (tblsearch "APPID" appname) (setq dt1 (entget entname )))
  (progn
  (setq dt2 (cdr (assoc -3 (entget entname '("*")))))
  (if (setq x0 (assoc -3 (entget entname (list appname))))
   (progn
     (setq x3 (cdr (car (cdr x0))) )  (princ "\n x3=") (princ x3)
    (if (assoc x1 x3)
      (setq x3 (subst xdata (assoc x1 x3) x3))
      (setq x3 (cons xdata x3)) )
      (print x3)(print dt2)
      (setq dt2 (subst (cons appname x3) (assoc appname dt2) dt2)) (print dt2)
    )   
  (setq dt2 (reverse (cons (list appname xdata) (reverse dt2)) )) )  
  (setq dt1 (append dt1 (list (cons -3 dt2))))
   (print dt1)
  (entmod dt1)
   ))
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-23 09:25 , Processed in 0.164122 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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