本帖最后由 llsheng_73 于 2023-9-3 18:12 编辑
宋体是比较常用的字体,但它在CAD里边比较另类,首先它实际使用的字体文件是TTC,其它黑体什么的都是TTF,其实这倒无所谓,麻烦在于试图通过DXF数据来创建或修改字体样式使用宋体无法成功,但别的字体基本无这个烦恼,比如,可以很容易通过ENTMOD修改使用仿宋的字体样式去使用黑体,通过ENTMAKE也可以很容易的创建一个字体样式来使用仿宋体。。。但要想修改已有样式的字体为宋体却只能失败,相信不少人试过,我也折腾过,但没成功过。失败的原因也比较怪异:使用宋体的字体样式,它的fontFile属性、DXF的3组为空。。。
废话了半天,改用VLA方法,主要是满足不想用COMMAND的强迫症,其实通过style命令来收拾根本就没问题
- (defun tt(f / styles *doc);;;强制修改所有字体样式使用宋体,f为NIL时重生成所有视口,否则不重生成(不自动更新显示)
- (vl-load-com)
- (setq *doc(vlax-get-property(vlax-get-acad-object)'activedocument)
- styles(vlax-get-property *doc 'textstyles))
- (or(VL-CATCH-ALL-ERROR-P(VL-CATCH-ALL-APPLY'vlax-invoke-method(list(vlax-invoke-method(vlax-get-property *doc 'TextStyles)'item 0)'SetFont"宋体":vlax-false :vlax-false 0 0)));;;检测宋体是否可用,虽然一般无必要,防万一吧
- (vlax-for x styles(vlax-invoke-method x 'SetFont"宋体" :vlax-false :vlax-false 0 0))
- f(vlax-invoke-method *doc'Regen acAllViewports)))
|