yjr111 发表于 2011-9-6 14:30:21

帮忙看看这个改字高的程序怎么回事?

如题:程序如果一步一步在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:44:01

本帖最后由 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:50:28

本帖最后由 sky__tion 于 2011-9-6 14:52 编辑

我也在写一个。。。针对一个文件中的所有单行文字

yjr111 发表于 2011-9-6 14:52:50

哇!真是高人!非常感谢ljpnb !

1993063 发表于 2011-9-9 22:33:54

可以改,但是有时25变52呀.怎么回事?

cabinsummer 发表于 2011-9-18 12:36:06

(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)
)

my258 发表于 2024-3-12 20:17:30

这要是能改字高与颜色就更好
页: [1]
查看完整版本: 帮忙看看这个改字高的程序怎么回事?