乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 72|回复: 16

[编程交流] 需要紧急更改lisp

[复制链接]

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 08:46:51 | 显示全部楼层 |阅读模式
嘿伙计们
我需要一个紧急Lisp程序,改变所有的字体的一个字体。例如,dwg中有10种不同的文本样式,但我希望所有这些样式都是罗马文字。
 
提前谢谢。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:52:11 | 显示全部楼层
遍历文档对象的TextStyles集合,并更改每个样式对象的FontFile属性。
回复

使用道具 举报

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 08:54:46 | 显示全部楼层
感谢您的快速回复。我发现了这一点,但我怎样才能把它们全部改成浪漫风格呢?有些字体风格保持不变,我认为它们超出了范围。
 
  1. (vl-load-com)
  2. (defun c:updateTextstyles (/ new)
  3. (setq new (strcat (getenv "systemroot") "[url="file://\\Fonts\\romandtw.shx"]\\Fonts\\romandtw.shx[/url]"))
  4. (vlax-map-collection
  5. (vla-get-textstyles
  6. (vla-get-activedocument
  7. (vlax-get-acad-object)))
  8. '(lambda (x / font)
  9. (setq font (strcase (vla-get-fontfile x)))
  10. (if (wcmatch font "ROMANS.SHX,SIMPLEX.SHX,TXT.SHX")
  11. (vla-put-fontfile x new)))
  12. )
  13. (princ)
  14. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 09:01:51 | 显示全部楼层
我第一次尝试更改字体测试样式。。。
 
  1. (defun c:Test nil
  2. (vl-load-com)
  3. ;; Tharwat 04. 07. 2011
  4. (vlax-for x (vla-get-textstyles
  5.                (vla-get-activedocument (vlax-get-acad-object))
  6.              )
  7.    (if (not (eq (vla-get-fontfile x) "romans.shx"))
  8.      (vlax-put-property x 'fontfile "romans.shx")
  9.    )
  10. )
  11. (vla-regen (vla-get-ActiveDocument (vlax-get-acad-object))
  12.             acAllViewports
  13. )
  14. (princ)
  15. )

 
塔瓦特
回复

使用道具 举报

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 09:04:36 | 显示全部楼层
这太完美了,我们可以添加一条线,将宽度因子更改为0.7吗?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 09:08:48 | 显示全部楼层
 
  1. (defun c:ChangeWidth nil
  2. (vl-load-com)
  3. ;; Tharwat 05. 07. 2011
  4. (vlax-for x (vla-get-textstyles
  5.                (vla-get-activedocument (vlax-get-acad-object))
  6.              )
  7.    (if (not (eq (vla-get-width x) 0.7))
  8.      (vlax-put-property x 'width 0.7)
  9.    )
  10. )
  11. (vla-regen (vla-get-ActiveDocument (vlax-get-acad-object))
  12.             acAllViewports
  13. )
  14. (princ)
  15. )

 
享受吧,伙计。
 
塔瓦特
回复

使用道具 举报

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 09:12:25 | 显示全部楼层
谢谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 09:14:13 | 显示全部楼层
 
随时欢迎你。
 
塔瓦特
回复

使用道具 举报

18

主题

58

帖子

41

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
91
发表于 2022-7-6 09:19:45 | 显示全部楼层
 
尊敬的先生:,
有一个问题,我想要很少的文本。7和少量文本。9
回复

使用道具 举报

0

主题

2

帖子

2

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 09:22:28 | 显示全部楼层
  1. (defun C:TW ()
  2. (setq p (SSGET "X" '((0 . "TEXT")(8 . "TEXT STYLE NAME"))))  ;CHANGE "TEXT STYLE NAME" TO YOUR TEXT STYLE THAT YOU WANT AT 0.7 WIDTH
  3. (setq nwidth 0.7)                                     ;sets widths equal to 0.7
  4. (if (/= p nil)
  5. (progn
  6. (setq l 0
  7. n (sslength p))
  8. (while (< l n)
  9. (setq e (entget (ssname p l)))
  10. (entmod (setq e(subst (cons 41 nwidth) (assoc 41 e) e))
  11. )
  12. (setq l (1+ l))))
  13. )
  14. ;REPEATED FROM ABOVE FOR 0.9 WIDTH
  15. (setq p (SSGET "X" '((0 . "TEXT")(8 . "TEXT STYLE NAME"))))  ;CHANGE  "TEXT STYLE NAME" TO YOUR TEXT STYLE THAT YOU WANT AT 0.9 WIDTH
  16. (setq nwidth 0.9)                                     ;sets widths equal to 0.9
  17. (if (/= p nil)
  18. (progn
  19. (setq l 0
  20. n (sslength p))
  21. (while (< l n)
  22. (setq e (entget (ssname p l)))
  23. (entmod (setq e(subst (cons 41 nwidth) (assoc 41 e) e))
  24. )
  25. (setq l (1+ l))))
  26. )
  27. (princ)
  28. )
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 08:05 , Processed in 0.547047 second(s), 83 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表