关于属性块的 我自己根据网上的帖子 编了个程序:提取一个属性块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)
- )
|