明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: pzweng

批量改文字高度

    [复制链接]
发表于 2012-7-19 15:51:57 | 显示全部楼层
本帖最后由 print1985 于 2012-7-19 15:54 编辑

凑个热闹,带对话框的,以前写的。DCL文件请放到cad支持目录下,命令zg。

本帖子中包含更多资源

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

x
发表于 2012-7-21 23:28:51 | 显示全部楼层
本帖最后由 1993063 于 2012-7-21 05:30 编辑

  1. (DEFUN C:TH (/ SSET I TXTHEIGHT TEXTSIZE)   (VL-LOAD-COM) (SETQ I 0)
  2.   (SETQ SSET (SSGET ":s" '((-4 . "<OR") (0 . "MTEXT") (0 . "TEXT") (-4 . "OR>"))))
  3.   (IF SSET
  4.     (PROGN
  5.       (SETQ TEXTSIZE (* (GETVAR "DIMTXT") (GETVAR "DIMSCALE")))
  6.       (SETQ TXTHEIGHT (GETDIST (STRCAT "\n指定文字的高度 字高:<< " (RTOS TEXTSIZE) " >> ")))
  7.       (IF (= TXTHEIGHT NIL)(SETQ TXTHEIGHT TEXTSIZE))
  8.       (REPEAT (SSLENGTH SSET)
  9.         (VLA-PUT-HEIGHT (VLAX-ENAME->VLA-OBJECT (SSNAME SSET I)) TXTHEIGHT)
  10.         (SETQ I (1+ I))
  11.       )
  12.     )
  13.   )(if (= nil sset)(princ"\n*没选择文字*"))
  14.   (PRINC)
  15. ) ;改字高到当前标注文字高度



发表于 2012-7-22 00:24:20 | 显示全部楼层

  1. (defun c:tt ()
  2.   (setq th (Udist 7 "" "字高<输入或鼠标直接量取>" th nil))
  3.   (if (setq ss (ssget '((0 . "*TEXT"))))
  4.     (xyp-SubUpd ss 40 th)
  5.   )
  6.   (princ)
  7. )
 楼主| 发表于 2012-7-22 09:28:00 | 显示全部楼层
xyp1964 发表于 2012-7-22 00:24

简洁了,用了一个2个自定义函数

点评

虽然用了2个自定义函数,却可以变化出更多的功能——比如字型、字宽、字角等等  发表于 2012-7-23 20:20
 楼主| 发表于 2012-7-22 09:30:53 | 显示全部楼层
1993063 发表于 2012-7-21 23:28


这个思路不错
 楼主| 发表于 2012-7-22 09:31:27 | 显示全部楼层
print1985 发表于 2012-7-19 15:51
凑个热闹,带对话框的,以前写的。DCL文件请放到cad支持目录下,命令zg。

嗯,还不错,我可以学学
发表于 2012-7-23 19:45:56 | 显示全部楼层
x_s_s_1 发表于 2012-7-18 09:56
支持源码,搞了一个短点的,但是只针对text,共同学习

    (entmod(reverse(cons new_num (reverse  ent))))
请教 上句是做什么用的? 是把new_num放至ent联合列表的末尾么?这样会不会ent联合列表里有两个new_num点对表?这样的话 entmod后的效果是什么样的?不明白~  
发表于 2012-7-23 20:59:15 | 显示全部楼层
很好的程序,感谢楼主分享!提个小建议:1.“选取两点(D)”这个选项选择之后,两点之间的高差(y坐标差值)应该就是想要的字高,但如果选择两点的高差比较小(比如200),得到的字体最终高度貌似大于200;2.能不能增加个动态字体大小选项?
发表于 2012-7-23 21:58:05 | 显示全部楼层
1993063 发表于 2012-7-21 23:28

这个不错,看来还是要多用用vla函数,真简洁
发表于 2012-7-23 21:59:42 | 显示全部楼层
x_s_s_1 发表于 2012-7-18 09:56
支持源码,搞了一个短点的,但是只针对text,共同学习

(apply '(lambda (x) (ch_dxf x 40 ww))
应该不需要apply函数,直接(ch_dxf (ssname SS (setq N (1- N))) 40 ww)不是也可以么
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-15 14:36 , Processed in 0.178778 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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