zhu320211 发表于 2011-1-7 21:50:11

请教:怎么用lisp更改选定文字的样式?



这是书后面的一道习题,要求
1 以ssget取得选择集ss
2以getreal取得文字新高度newhh
3以getangle 取得新倾斜角newang
4配合repeat循环,自动完成所求
想了很久,没想明白,最主要是倾斜角,是更新mtext的组码7吗,还是有其它什么办法?
请高手赐教!

Gu_xl 发表于 2011-1-7 22:26:33

组吗7是字体样式,组码50是旋转角,51是倾斜角,40是字高,这些你查看cad帮组文档都可以知道!mtext的倾斜由字符串值控制,比如字符串"AAAA"倾斜7°表示为:{\Q7;AAAA}

ZZXXQQ 发表于 2011-1-8 09:19:40

组码50文字转角的角度单位是弧度。

zhu320211 发表于 2011-1-8 20:33:09

谢谢两位版主了,有劳哪位帮我具体写一下程序,行吗?

Gu_xl 发表于 2011-1-8 20:51:08

回复 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))
        )
      )
    )

       
)

zhu320211 发表于 2011-1-9 21:13:28

谢谢G版了,待会儿来测试一下

zhu320211 发表于 2011-1-9 21:41:39

G版,误会我的意思了,是要倾斜文字,不是旋转文字,新建字体样式,更改组码7,昨天在命令行下试了一下是可以的,如果不新建字体,怎样在LISP中用字符串值更新,可以写个代码吗

zlq1318 发表于 2011-3-17 23:43:14

刚刚看了源代码 学习了!!

jackynine 发表于 2011-3-18 13:33:49

试试这个:
(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) "个点" ))
)

tm20038175 发表于 2012-5-4 09:56:53

好帖,顶一个…………
页: [1]
查看完整版本: 请教:怎么用lisp更改选定文字的样式?