明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1110|回复: 5

[提问] 怎样根据已有文字样式创建一个新样式?

  [复制链接]
发表于 2022-6-14 21:37:11 | 显示全部楼层 |阅读模式
本帖最后由 wharan 于 2022-6-15 14:20 编辑

AutoCAD的已有文字样式,根据已有样式创建一个新字体,仅仅改变宽度因子。比如系统已有文字样式“Standard",字体文件分别是“txt.shx”和“hztxt.shx”,根据这个文字样式创建一个新样式“Standard01",只改变“Standard"的宽度因子,其他定义参数如字体、大小、效果等保持不变。


怎样用简单程序完成上述功能?
我用了一个笨方法:取得已有文字样式参数,重建一个新样式。代码亟待优化。
  1. ;;以已有文字样式为模板创建新文字样式
  2. (defun Style2Style (Ostyle   Nstyle        width     /
  3.         styleObj   name        BigFontFile  fontfile
  4.         Height   width        TextGenerationFlag
  5.         obj
  6.        )
  7.   (vl-load-com)
  8.   (if (tblobjname "STYLE" Nstyle)
  9.     (progn
  10.       (setq
  11.   styleObj (vlax-ename->vla-object (tblobjname "style" Nstyle))
  12.       )
  13.       (vla-put-Width styleObj width)
  14.     )
  15.     (progn
  16.       (setq
  17.   styleObj (vlax-ename->vla-object (tblobjname "style" Ostyle))
  18.       )
  19.       (setq name (vla-get-name styleObj))
  20.       (setq BigFontFile (vla-get-BigFontFile styleObj))
  21.       (setq fontfile (vla-get-fontfile styleObj))
  22.       (setq Height (vla-get-Height styleObj))
  23.       (setq TextGenerationFlag (vla-get-TextGenerationFlag styleObj))

  24.       (setq
  25.   obj (vla-add (vla-get-TextStyles
  26.            (vla-get-ActiveDocument (vlax-get-acad-object))
  27.          )
  28.          Nstyle
  29.       )
  30.       )
  31.       (vla-put-Width Obj width)
  32.       (vla-put-BigFontFile Obj BigFontFile)
  33.       (vla-put-fontfile Obj fontfile)
  34.       (vla-put-Height Obj Height)
  35.       (vla-put-TextGenerationFlag Obj TextGenerationFlag)
  36.     )
  37.   )
  38. )




"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-6-15 09:37:11 | 显示全部楼层
直接修改字体样式宽度因子就好啦,修改字体很难的
发表于 2022-6-15 09:50:44 | 显示全部楼层
没有简单程序。如果一定要做,要反编译形文件,看里面具体怎么写的。如果运气好,形文件里用了通用的高宽代码,那么修改这一段即可,否则就要修改每一个字符。然后再编译形文件。
 楼主| 发表于 2022-6-15 10:02:46 | 显示全部楼层
本帖最后由 wharan 于 2022-6-15 10:08 编辑
mikewolf2k 发表于 2022-6-15 09:50
没有简单程序。如果一定要做,要反编译形文件,看里面具体怎么写的。如果运气好,形文件里用了通用的高宽代 ...
可能没能理解我的意思
发表于 2022-6-17 22:22:01 来自手机 | 显示全部楼层
Ostyle如果己经存在,是不是要先删除?
 楼主| 发表于 2022-6-17 23:34:17 | 显示全部楼层
自贡黄明儒 发表于 2022-6-17 22:22
Ostyle如果己经存在,是不是要先删除?

不需要删除,做这个的目的是为了修改AutoCAD和天正的多行文字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-15 06:43 , Processed in 0.148858 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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