图块数据
本帖最后由 jeike456 于 2011-10-17 20:55 编辑;大家好,向大家请教一下下面这一段程式:有几句看不懂
;程式中的sl 是一个很多个块的选择集,
(defun tt ()
(setq block_list '())
(setq v 0)
(repeat (sslength sl)
(setq ename (ssname sl v))
(setq en-data (entget ename))
(setq blokn (cdr (assoc 2 en-data)))
(setq ent1 (entnext ename))
;下面程式是在做什么?
(setq ent (entget ent1))
(if (/= (cdr (assoc 2 ent)) "SN")(geten))
(if (= (member blokn block_list) nil)
(setq block_list (cons blokn block_list))
);end if
(setq ent (subst (cons 1 "") (assoc 1 ent) ent))
(setq ent (subst (cons 7 "TXT") (assoc 7 ent) ent))
(setq ent (subst (cons 41 0.7) (assoc 41 ent) ent))
(setq ent (subst (cons 50 0.0) (assoc 50 ent) ent))
(entmod ent)
(entupd ent1)
(setq v (1+ v))
);end repeat
(defun geten ()
(setq ent1 (entnext ent1))
(setq ent (entget ent1))
) ;end geten
本帖最后由 cabinsummer 于 2011-10-17 21:43 编辑
(defun tt ()
(setq block_list '());;;block_list空表
(setq v 0);;;v变量初始化为0
(repeat (sslength sl);;;重复次数为sl选择集中块的数量
(setq ename (ssname sl v)) ;;;sl选择集中第v个块名
(setq en-data (entget ename));;;第v个块的数据
(setq blokn (cdr (assoc 2 en-data)));;;块的名称
(setq ent1 (entnext ename));;;块中第一个属性
(setq ent (entget ent1));;;块中第一个属性的数据
(if (/= (cdr (assoc 2 ent)) "SN")(geten));;;如果属性标记为SN,则geten
(if (= (member blokn block_list) nil);;;如果blokn不是block_list的成员
(setq block_list (cons blokn block_list));;;则将blokn加到Block_list前部组成一个新表
);end if
(setq ent (subst (cons 1 "") (assoc 1 ent) ent));;;属性值置空
(setq ent (subst (cons 7 "TXT") (assoc 7 ent) ent));;;属性字体式样改为TXT
(setq ent (subst (cons 41 0.7) (assoc 41 ent) ent));;;属性宽度比例改为0.7
(setq ent (subst (cons 50 0.0) (assoc 50 ent) ent));;;属性旋转角度为0
(entmod ent);;;修改属性数据
(entupd ent1);;;更新属性显示
(setq v (1+ v));;;下一个块
);end repeat
(defun geten ()
(setq ent1 (entnext ent1));;;提取下一个属性
(setq ent (entget ent1));;;下一个属性数据
);end geten cabinsummer 发表于 2011-10-17 21:42 static/image/common/back.gif
很感谢 学习了,谢谢!
页:
[1]