本帖最后由 fl202 于 2014-7-11 10:30 编辑
以下是补缺少的两个子函数: - ;;;取得块属性值
- (defun getattvalue (entblock attname / entdata entname test value)
- (setq entname entblock test t )
- (while (and test (setq entname (entnext entname)) )
- (setq entdata (entget entname))
- (cond
- ((not (= (cdr (assoc 0 entdata)) "ATTRIB")) (setq test nil) )
- ((= "SEQEND" (cdr (assoc 0 entdata))) (setq test nil) )
- ((= (cdr (assoc 2 entdata)) attname) (setq value (cdr (assoc 1 entdata))) )
- )
- )
- value
- )
- ;;;getattnamelst 替换getattributes
- ;;;给块属性赋值
- (defun setattvalue (EN ATTNAME vALUE / szb1 E TEST ENT)
- (setq E EN RETURN NIL TEST t )
- (while (and TEST (setq E (entnext E)) )
- (setq ENT (entget E))
- (cond
- ;;
- ((not (= (cdr (assoc 0 ENT)) "ATTRIB"))
- (setq TEST NIL)
- )
- ;;
- ((= "SEQEND" (cdr (assoc 0 ENT)))
- (setq TEST NIL)
- )
- ;;
- ((= (cdr (assoc 2 ENT)) ATTNAME )
- (setq ENT (subst (cons 1 VALUE) (assoc 1 ENT) ENT) )
- (entmod ENT)
- (entupd EN)
- (setq RETURN t)
- )
- ) ;_结束cond
- )
- ;;返回
- RETURN
- )
附件是经测试的完整程序,对程序稍作修改,收币一个。大家自主选择,补函数后还要调试修改完才能用,嫌麻烦的就下载好了。 |