lucas_3333 发表于 2014-2-22 17:22:19

求可记忆的修改文字与标注文字高度的代码

明经朋友们,你们好!
求助一个支持框选改文字高度同标注文字高度的代码,修改字高后能记忆,下次输入文字和标注时自动沿用上次记忆的高度,但不要将没有选中的文字高度同标注文字高度改变!非常感谢!

http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 lucas_3333的微博

lucas_3333 发表于 2014-2-23 22:03:43

可怜啊,没人帮助啊

lucas_3333 发表于 2014-2-24 18:45:36

找了一下论坛,只有这些
改字高的:
(defun C:GZG ()
(setvar "CMDECHO" 0)
(prompt "\nSelection window")
(setq p1 (getpoint "\n第一角点: "))
(setq p2 (getcorner p1 "\n反向的角点: "))
(setq XTX (ssget "W" p1 p2))
(setq i -1)
(setq TSZ (getreal "\n输入字高 :"))
(repeat (sslength XTX)
(setq i (1+ i))
;;;Changing textsize:
(setq SZ (cons 40 TSZ))
(setq ed (entget (ssname XTX i)))
(setq ed (subst SZ (assoc 40 ed) ed ))
(entmod ed)
);repeat
(princ)
);eof

lucas_3333 发表于 2014-2-24 23:58:29

一无所获啊,高手就帮帮忙呗

lucas_3333 发表于 2014-2-25 19:25:07

本帖最后由 lucas_3333 于 2014-5-19 15:58 编辑

可是对单行与多行文字有效,对标注文字没有效果,默认标注时字高都是2.5,运行程序将标注文字高度改到1后,再次标注,还是2.5的字高
(defun c:tt (/ hi ss)
(fy:begin)
(if (setq hi (getdist      (strcat      "\nTextSize<"
                              (vl-princ-to-string (getvar "textsize"))
                              ">: "
                        )
               )
      )
    (setvar "textsize" hi)
    (setq hi (getvar "textsize"))
)
(if (ssget '((0 . "*Text,Dim*")))
    (mapcar
      '(lambda (x / typ)
         (if (wcmatch (strcase (vla-get-objectname x))
                      "*DIM*"
             )
         (vlax-put x "TextHeight" hi)
         (vlax-put x "Height" hi)
         )
       )
      (fy:cset->objs)
    )
)
(fy:end)
(princ)
)



edata 发表于 2014-2-25 22:42:41

我先理一下思路。
实现目的1,提示选择文本标注改字高2,将文本和标注 默认字高变量改变。
文本有系统变量控制,而标注只能新建替换样式实现。

edata 发表于 2014-2-25 23:02:02

简单一句改
如果当前标注文字的样式字高不为0.00则失效,无论是标注或者文字都一样。
(defun c:tt (/ hi ss)
(fy:begin)
(if (setq hi (getdist      (strcat      "\nTextSize<"
                              (vl-princ-to-string (getvar "textsize"))
                              ">: "
                        )
               )
      )
    (setvar "textsize" hi)
    (setvar "dimtxt" hi)
    (setq hi (getvar "textsize"))
)
(if (ssget '((0 . "*Text,Dim*")))
    (mapcar
      '(lambda (x / typ)
         (if (wcmatch (strcase (vla-get-objectname x))
                      "*DIM*"
             )
         (vlax-put x "TextHeight" hi)
         (vlax-put x "Height" hi)
         )
       )
      (fy:cset->objs)
    )
)
(fy:end)
(princ)
)

lucas_3333 发表于 2014-2-25 23:50:53

edata 发表于 2014-2-25 23:02 static/image/common/back.gif
简单一句改
如果当前标注文字的样式字高不为0.00则失效,无论是标注或者文字都一样。

E大师,加载时显示“错误: 语法错误”
没想到标注这么难搞,我用燕秀工具箱时,有一个修改标注文字高度命令yx_dth ,使用后,再使用工具箱里的标注加强工具就能达到这个效果,用CAD自个的标注不行,不知这是什么原理?

429014673 发表于 2014-2-26 08:36:59

这样画图不觉得累吗,画图要规范,你的图如果别人接手画,别人画得比你更累

edata 发表于 2014-2-26 12:45:45

lucas_3333 发表于 2014-2-25 23:50 static/image/common/back.gif
E大师,加载时显示“错误: 语法错误”
没想到标注这么难搞,我用燕秀工具箱时,有一个修改标注文字高度命 ...

没注意看代码;
(defun c:tt (/ hi ss)
(fy:begin)
(if (setq hi (getdist      (strcat      "\nTextSize<"
                              (vl-princ-to-string (getvar "textsize"))
                              ">: "
                        )
               )
      )
    (progn
    (setvar "textsize" hi)
    (setvar "dimtxt" hi)
    )
    (setq hi (getvar "textsize"))
)
(if (ssget '((0 . "*Text,Dim*")))
    (mapcar
      '(lambda (x / typ)
         (if (wcmatch (strcase (vla-get-objectname x))
                      "*DIM*"
             )
         (vlax-put x "TextHeight" hi)
         (vlax-put x "Height" hi)
         )
       )
      (fy:cset->objs)
    )
)
(fy:end)
(princ)
)
页: [1] 2 3
查看完整版本: 求可记忆的修改文字与标注文字高度的代码