帮忙看看这个改字高的程序怎么回事?
如题:程序如果一步一步在CAD命令行调试,可以改字高,整体运行的话也没有错误,可是就是没有任何效果(不改动字高),请大大们帮忙瞧瞧哪个地方的BUG?(defun c:gzg(/ h s1 ss1 n e1 e2 )
(setq h(getdist"\n 输入文本新的字高:"))
(setq ss1 (ssget))
(setq sl (sslength ss1))
(setq n 0)
(repeat sl
(setq e1 (ssname ss1 n))
(setq e2 (entget e1))
(if (or(= "text" (cdr (assoc 0 e2)))(= "mtext" (cdr (assoc 0 e2))))
(progn
(setq e2(subst(cons 40 h)(assoc 40 e2)e2))
(entmod e2)
)
)
(setq n ( 1+ n))
)
(princ)
)
本帖最后由 ljpnb 于 2011-9-6 14:47 编辑
“text"和"mtext"改成大写,缩减了一下
(defun c:gzg (/ h ss n ent)
(setq h (getdist "\n 输入文本新的字高:"))
(setq ss (ssget '((0 . "TEXT,MTEXT"))))
(setq n 0)
(repeat (sslength ss)
(setq ent (entget (ssname ss n)))
(setq ent (subst (cons 40 h) (assoc 40 ent) ent))
(entmod ent)
(setq n (1+ n))
)
(princ)
)
本帖最后由 sky__tion 于 2011-9-6 14:52 编辑
我也在写一个。。。针对一个文件中的所有单行文字 哇!真是高人!非常感谢ljpnb ! 可以改,但是有时25变52呀.怎么回事? (defun c:gzg(/ h sl ss n ename edata )
(setq h (getdist "\n 输入文本新的字高:"))
(setq ss (ssget "x" '((-4 . "<OR")(0 . "TEXT")(0 . "MTEXT")(-4 . "OR>"))));;;框选过滤所有TEXT和MTEXT实体
(setq sl (sslength ss));;;求选择集中元素个数
(setq n 0)
(repeat sl
(setq ename (ssname ss n));;;选择集中第n个元素的实体名
(setq edata (entget ename));;;选择集中第n个实体的数据
(setq edata (subst (cons 40 h)(assoc 40 edata) edata));;;替换新字高
(entmod edata);;;更新图形数据
(entupd ename);;;立即更新显示,很多人都不加这一条。其实这个很有用,能马上看见效果,否则要用命令regen更新
(setq n (1+ n))
)
(princ)
)
这要是能改字高与颜色就更好
页:
[1]