明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1973|回复: 6

用text写的字体放大

[复制链接]
发表于 2004-2-10 15:33:00 | 显示全部楼层 |阅读模式
我编了一个改变字高的程序,这个程序对mtext的字很好用,可是对于text写的字却不管用。因为若用text写了多行字,再用此程序放大字体,字就会挤在一起,不知如何解决?可能一张图纸上有多处用text写的多行字。 (defun c:sct (/ ss texthight i ent ents ents_new)
(prompt "Select text...")
(setq ss (ssget '((0 . "TEXT,MTEXT"))))
(setq texthight (getreal "\nEnter text hight:"))
(setq i 0)
(repeat (sslength ss)
(setq ent (ssname ss i))
(setq ents (entget ent))
(setq ents_new (subst (cons 40 texthight) (assoc 40 ents) ents))
(entmod ents_new)
(setq i (1+ i))
);end repeat
(princ)
) (princ)
(prompt "\nType sct to run")
(princ)
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2004-2-10 16:18:00 | 显示全部楼层
按比例挪一下位置不就可以了吗
 楼主| 发表于 2004-2-10 16:34:00 | 显示全部楼层
我也这样想过,但也不行,有的地方text写的字为3行,而有的地方用text写的字有5行。他们需要移的距离是不同的。
发表于 2004-2-10 16:51:00 | 显示全部楼层
算一个行距,有几行,在第几行就乘几倍行距不就行了?
 楼主| 发表于 2004-2-10 17:18:00 | 显示全部楼层
是这样的飞版主,我有一张图纸,在很多地方都有TEXT,而且其行数都不一样,


我想把他们一下子变成同样的高度,此高度就是键盘输入的值。不知怎么实现?


谢谢。


       

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2004-2-10 18:24:00 | 显示全部楼层
前面不已经说了吗,按你的程序修改,然后挪一下位置。
发表于 2004-2-10 18:54:00 | 显示全部楼层
参考一下,根据你自己的需要进行修改,如需要,最后还可将其炸开
  1. (defun MakeText(pt1 str h lay style / ptInsert TextDxf)
  2.    (setq TextDxf '(
  3.        (0 . "MTEXT")
  4.        (100 . "AcDbEntity")
  5.        (100 . "AcDbMText")
  6.            )
  7.    )
  8.    (setq TextDxf (append TextDxf (list
  9.            (cons 10 pt1)
  10.            (cons 1 str)
  11.            (cons 40 h)
  12.            (cons 7   style)
  13.            (cons 8 lay)
  14.         )
  15.     )
  16.    )
  17.    (entmake TextDxf)
  18.    (princ)
  19. )
  20. (defun text->Mtext(ent_Texts h / h1   i ent_Text ents pt str lay style)
  21.    (setq i 1)
  22.    (setq ent_Texts (vl-sort ent_Texts
  23.            '(lambda (e1 e2) (> (cadr (cdr (assoc 10 (entget e1)))) (cadr (cdr (assoc 10 (entget e2))))))))
  24.    (setq ent_Text (car ent_Texts))
  25.    (setq ents (entget ent_Text))
  26.    (setq pt (cdr (assoc 10 ents)))
  27.    (setq h1 (cdr (assoc 40 ents)))
  28.    (setq pt (list (car pt) (+ (cadr pt) h1) (last pt)))
  29.    (setq str (cdr (assoc 1 ents)))
  30.    (setq lay (cdr (assoc 8 ents)))
  31.    (setq style (cdr (assoc 7 ents)))
  32.    (repeat (1- (length ent_Texts))
  33.        (setq ents (entget (nth i ent_Texts)))
  34.        (setq str (strcat str "\n" (cdr (assoc 1 ents))))
  35.        (setq i (1+ i))
  36.    )
  37.    (mapcar 'entdel ent_Texts)
  38.    (MakeText pt str h lay style)
  39. )(defun main( / ss i ent_Texts h)
  40.    (setq ss (ssget '((0 . "text"))))
  41.    (setq i 0)
  42.    (setq ent_Texts nil)
  43.    (repeat (sslength ss)
  44.        (setq ent_Texts (append ent_Texts (list (ssname ss i))))
  45.        (setq i (1+ i))
  46.    )
  47.    (setq h (getreal "输入字高:"))
  48.    (text->Mtext ent_Texts h)
  49. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-27 14:41 , Processed in 0.179981 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表