请教:怎么用lisp更改选定文字的样式?
这是书后面的一道习题,要求
1 以ssget取得选择集ss
2以getreal取得文字新高度newhh
3以getangle 取得新倾斜角newang
4配合repeat循环,自动完成所求
想了很久,没想明白,最主要是倾斜角,是更新mtext的组码7吗,还是有其它什么办法?
请高手赐教!
组吗7是字体样式,组码50是旋转角,51是倾斜角,40是字高,这些你查看cad帮组文档都可以知道!mtext的倾斜由字符串值控制,比如字符串"AAAA"倾斜7°表示为:{\Q7;AAAA} 组码50文字转角的角度单位是弧度。 谢谢两位版主了,有劳哪位帮我具体写一下程序,行吗? 回复 zhu320211 的帖子
(defun c:tt(/ ss en enl n h ang)
(setq ss (ssget '((0 . "*text"))))
(if ss
(progn
(setq h (getreal "\n新字高:")
ang (getreal "\n旋转角(弧度):")
n 0
)
(repeat (sslength ss)
(setq en (ssname ss n)
enl (entget en)
)
(if h (setq enl (subst (cons 40 h) (assoc 40 enl) enl)))
(if ang (setq enl (subst (cons 50 ang) (assoc 50 enl) enl)))
(entmod enl)
(setq n (1+ n))
)
)
)
)
谢谢G版了,待会儿来测试一下 G版,误会我的意思了,是要倾斜文字,不是旋转文字,新建字体样式,更改组码7,昨天在命令行下试了一下是可以的,如果不新建字体,怎样在LISP中用字符串值更新,可以写个代码吗 刚刚看了源代码 学习了!! 试试这个:
(defun c:tt ()
(setvar "cmdecho" 0)
(setq name (getstring "\n请输入你需要的字体样式名:"))
(if (setq ss (ssget '((0 . "text"))))
(progn
(setq i -1 )
(while (setq s1 (ssname ss (setq i (1+ i))))
(setq s2 (entget s1))
(setq s2 (subst (cons 7 name) (assoc 7 s2) s2))
(entmod s2)
)
)
)
(princ (strcat "\n" "共处理" (itoa i) "个点" ))
) 好帖,顶一个…………
页:
[1]