[求助]■ 属性块数值刷为何失效
关于属性块的 我自己根据网上的帖子 编了个程序:提取一个属性块A中的值去刷另一个属性块B 可以刷 我将属性块A复制出属性块A1 再用A1刷B 也没问题 但当再用A去刷B时就不管用了 不知道是怎么回事 请教下大家源码如下:
(defun c:BFB (/ zqm ename pipe_number elist line_size ssa n index 1st txt txt1)
(setq zqm nil)
(while (= zqm nil)
(setq zqm (entsel "\n选择管道标注: "))
(if zqm
(if (and
(/= "INSERT" (cdr (assoc 0 (entget (car zqm)))))
(/= "LINE_NUMBER" (cdr (assoc 2 (entget (car zqm)))))
)
(setq zqm nil)
)
)
)
(setq ename (entnext (car zqm)))
(while ename
(setq elist (entget ename))
(if (and
(= (cdr (assoc 0 elist)) "ATTRIB")
(= (cdr (assoc 2 elist)) "PIPE_NO")
)
(setq Pipe_number (cdr (assoc 1 elist)))
)
(if (and
(= (cdr (assoc 0 elist)) "ATTRIB")
(= (cdr (assoc 2 elist)) "SIZE")
)
(setq line_size (cdr (assoc 1 elist)))
)
(setq ename (entnext ename))
)
(setq ssa (ssget (list (cons 0 "INSERT") (cons 2 "VALVE"))))
(setq n (sslength ssa))
(setq index (- n 1))
(repeat n
(setq ename (ssname ssa index))
(setq a (entnext ename))
(while a
(setq lst (entget a))
(if (= "LINE_NUMBER" (cdr (assoc 2 lst)))
(progn
(setq txt (cdr (assoc 1 lst)))
(setq txt1 (cons 1 Pipe_number))
(setq lst (subst
txt1
(assoc 1 lst)
lst
)
)
(entmod lst)
)
)
(if (= "VALVE_SIZE" (cdr (assoc 2 lst)))
(progn
(setq txt (cdr (assoc 1 lst)))
(setq txt1 (cons 1 line_size))
(setq lst (subst
txt1
(assoc 1 lst)
lst
)
)
(entmod lst)
)
)
(if (= (cdr (assoc 1 lst)) "SEQEND")
(setq a nil)
)
(setq a (entnext a))
)
(entupd ename)
(setq index (1- index))
)
(princ)
)
问题已解决 谢谢大家!
页:
[1]