怎样根据已有文字样式创建一个新样式?
本帖最后由 wharan 于 2022-6-15 14:20 编辑AutoCAD的已有文字样式,根据已有样式创建一个新字体,仅仅改变宽度因子。比如系统已有文字样式“Standard",字体文件分别是“txt.shx”和“hztxt.shx”,根据这个文字样式创建一个新样式“Standard01",只改变“Standard"的宽度因子,其他定义参数如字体、大小、效果等保持不变。
怎样用简单程序完成上述功能?
我用了一个笨方法:取得已有文字样式参数,重建一个新样式。代码亟待优化。
;;以已有文字样式为模板创建新文字样式
(defun Style2Style (Ostyle Nstyle width /
styleObj name BigFontFilefontfile
Height width TextGenerationFlag
obj
)
(vl-load-com)
(if (tblobjname "STYLE" Nstyle)
(progn
(setq
styleObj (vlax-ename->vla-object (tblobjname "style" Nstyle))
)
(vla-put-Width styleObj width)
)
(progn
(setq
styleObj (vlax-ename->vla-object (tblobjname "style" Ostyle))
)
(setq name (vla-get-name styleObj))
(setq BigFontFile (vla-get-BigFontFile styleObj))
(setq fontfile (vla-get-fontfile styleObj))
(setq Height (vla-get-Height styleObj))
(setq TextGenerationFlag (vla-get-TextGenerationFlag styleObj))
(setq
obj (vla-add (vla-get-TextStyles
(vla-get-ActiveDocument (vlax-get-acad-object))
)
Nstyle
)
)
(vla-put-Width Obj width)
(vla-put-BigFontFile Obj BigFontFile)
(vla-put-fontfile Obj fontfile)
(vla-put-Height Obj Height)
(vla-put-TextGenerationFlag Obj TextGenerationFlag)
)
)
)
直接修改字体样式宽度因子就好啦,修改字体很难的 没有简单程序。如果一定要做,要反编译形文件,看里面具体怎么写的。如果运气好,形文件里用了通用的高宽代码,那么修改这一段即可,否则就要修改每一个字符。然后再编译形文件。 本帖最后由 wharan 于 2022-6-15 10:08 编辑
mikewolf2k 发表于 2022-6-15 09:50
没有简单程序。如果一定要做,要反编译形文件,看里面具体怎么写的。如果运气好,形文件里用了通用的高宽代 ...可能没能理解我的意思 Ostyle如果己经存在,是不是要先删除? 自贡黄明儒 发表于 2022-6-17 22:22
Ostyle如果己经存在,是不是要先删除?
不需要删除,做这个的目的是为了修改AutoCAD和天正的多行文字。
页:
[1]