本帖最后由 wharan 于 2022-6-15 14:20 编辑
AutoCAD的已有文字样式,根据已有样式创建一个新字体,仅仅改变宽度因子。比如系统已有文字样式“Standard",字体文件分别是“txt.shx”和“hztxt.shx”,根据这个文字样式创建一个新样式“Standard01",只改变“Standard"的宽度因子,其他定义参数如字体、大小、效果等保持不变。
怎样用简单程序完成上述功能?
我用了一个笨方法:取得已有文字样式参数,重建一个新样式。代码亟待优化。
- ;;以已有文字样式为模板创建新文字样式
- (defun Style2Style (Ostyle Nstyle width /
- styleObj name BigFontFile fontfile
- 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)
- )
- )
- )
|