AutoLisp实现通过在图中选择文字对图形字体进行更改


问题的提出

每次接到一个AutoCad文件,总会遇到文件字体与自己系统里的文字字体不匹配的情况,导致每次都会通过字体设置对话框对不匹配的字体文件一通设置,费时费力。

解决办法

这里采用人机交互操作模式,用户指定图中不能正常显示的文字,通过VisualLisp程序对用户所选文字对应的字体类型的字体文件进行重新设定,从而达到对全图形对应字体进行全面更改。

源程序

;ctfs.lsp
;选择文字并将文字对应字体格式修改为tssdeng.shx,hztxt.shx字体。;------------------------------------------------------------------------
;以下函数采用传统顺序编程指令编写:
(defun ctfs-1 ();设置系统变量:(setvar "cmdecho" 0)(setvar "blipmode" 0);加载扩展autolisp函数:(if (null vlax-dump-object) (vl-load-com));取得需要修改的文字对象:(setq sel (entsel "选定要更改的文字:"))(setq obj (vlax-ename->vla-object (car sel)));(prin1 obj));取得对象属性列表:;(vlax-dump-object obj nil))(setq fontstl (vla-get-StyleName obj));设置取得的字体样式为:tssdeng.shx,hztxt.shx两个字体。(prompt "\n将把选定文字的对应字体改为“tssdeng.shx,hztxt.shx”……\n")(command "-style" ;字体类型修改命令。fontstl ;要修改的字体类型名称。"tssdeng.shx,hztxt.shx" ;指定字体文件。"" ;字体高度。"0.7" ;字体宽度因子。"" ;文字倾斜角度。"" ;是否反向显示。"" ;是否颠倒显示。"")(princ));说明:请确保系统字体目录下有tssdeng.shx和hztxt.shx两种字体。

AutoLisp语言是Lisp语言的一个分支,能够进行函数式编程,这样会让代码更简洁:

;ctfs.lsp
;选择文字并将文字对应字体格式修改为tssdeng.shx,hztxt.shx字体。;-------------------------------------------------------------
;函数式编程实现:
(defun C:ctfs ();设置系统变量:(setvar "cmdecho" 0)(setvar "blipmode" 0);加载扩展autolisp函数:(if (null vlax-dump-object) (vl-load-com));取得需要修改的文字对象:(setq fontstl(vla-get-StyleName ;取得文字类型名字。(vlax-ename->vla-object ;取得对象。(car ;取得对象名字。 (entsel "选定要更改的文字:"))))) ;用户选取文字。;设置取得的字体样式为:tssdeng.shx,hztxt.shx两个字体。(prompt "\n将把选定文字的对应字体改为“tssdeng.shx,hztxt.shx”……\n")(command "-style" ;字体类型修改命令。fontstl ;要修改的字体类型名称。"tssdeng.shx,hztxt.shx" ;指定字体文件。"" ;字体高度。"0.7" ;字体宽度因子。"" ;文字倾斜角度。"" ;是否反向显示。"" ;是否颠倒显示。"")(princ));说明:请确保系统字体目录下有tssdeng.shx和hztxt.shx两种字体。

使用方式

  1. 首先,将以上任一个源代码保存成文件(ctfs.lsp),可保存在AutoCAD的支持文件目录中或Windows系统“文档”目录中。
  2. 然后,在AutoCAD命令行中输入:(load “ctfs.lsp”)。
  3. 这样,就可以将”ctfs”做为一个AutoCAD绘图命令使用了。

程序中可进一步改进的内容

  • 如果选择的不是单行文字(text或dtext命令绘制)而是其它图元对象,将导致错误信息(不影响图形内容)。可通过增加判断——所选图形是否属于文字内容——来解决。
  • 如果选择的文字内容是属于多行文字(MText命令绘制),会更改对应字体类型属性内容,但不能更改多行文字对应的书写字体属性。可通过修改多行文字书写字体属性为××或直接更改多行文字书写字体为指定字体来实现。
  • 所有更改的字体仅限为tssdeng.shx和hztxt.shx两种字体,未提供对话框给用户灵活选择字体。

源代码开源在Github上:https://github.com/OnRoadZy/ChangeFontStyle.git

AutoLisp实现通过在图中选择文字对图形字体进行更改相关推荐

  1. lisp 改图元字体式样_GitHub - OnRoadZy/ChangeFontStyle: AutoLisp实现通过在图中选择文字对图形字体进行更改。...

    AutoLisp实现通过在图中选择文字对图形字体进行更改 问题的提出 每次接到一个AutoCad文件,总会遇到文件字体与自己系统里的文字字体不匹配的情况,导致每次都会通过字体设置对话框对不匹配的字体文 ...

  2. 怎么样在迅捷CAD编辑器的图中输入文字

    在随着CAD在日常生活中被使用的越来越多,CAD文件也变得越来越复杂.在一般的CAD图纸文件中都会是有这个文字的,因为我们需要使用不同的文本,来对CAD里的图案来进行不同的标注,那么该怎么在CAD文件 ...

  3. 怎么在GIF动图中添加文字?一个方法教你快速完成GIF加字

    日常生活中我们使用表情包越来越频繁,而gif表情包占大多数.那么,当我们想要给gif动图添加上合适的文字的时候应该如何操作呢?这时只需要使用[GIF中文网]的gif加字(https://www.gif ...

  4. python3识别图中的文字_Python3.x:如何识别图片上的文字

    Python3.x:如何识别图片上的文字 安装pytesseract库,必须先安装其依赖的PIL及tesseract-ocr,其中PIL为图像处理库,而后面的tesseract-ocr则为google ...

  5. python contourf色阶_python – pyplot.contourf如何从色彩图中选择颜色?

    我一直在使用from_levels_and_colors函数,因此我可以在pcolormesh图上使用扩展颜色条,类似于contourf.这是我的示例contourf plot: import num ...

  6. java 屏幕识别_Java课程设计:捕获图片以及识别图中的文字

    package屏幕捕捉以及识别;importjava.awt.Color;importjava.awt.FlowLayout;import java.awt.event.*;importjava.aw ...

  7. quartus模块图中模块文字显示不全

    解决方法: 关闭quartus程序,右键程序图标,点击属性 =>兼容性=>更改高DPI设置 打勾 替代高DPI缩放行为,缩放执行 选择 系统(增强) 确定后重新打开 问题解决啦

  8. 修改eps矢量图中的文字

    http://blog.sciencenet.cn/blog-709597-804085.html https://dl.pconline.com.cn/html_2/1/111/id=11038&a ...

  9. matlab图中插入文字,如何在Matlab画图中加入字符等图形标示

    简介 在进行Matalb绘图时,需要对图片里面的内容进行说明,就需要添加必要的说明.如何进行标示字符的添加呢. 方法 下面通过绘制二阶系统阶跃响应,综合演示图形标识.本例比较综合,涉及的指令较广.请耐 ...

最新文章

  1. 厉害了我的VR!老师们用VR来教历史
  2. jstl fn:replace替换换行符
  3. ubuntu添加dvd光盘源
  4. SQL语句快速回忆——SQL基础知识点汇总
  5. resteasy经验谈
  6. 常见Eclipse SVN插件报错解决方法
  7. python面向对象教程_Python入门系列教程3-面向对象
  8. 微软官方首度回应黑屏恐慌:不强制 不诉讼
  9. 循环遍历java属性_java中循环遍历实体类的属性和数据类型以及属性值
  10. 数据结构与算法python—14.排序之九种排序详解
  11. Java经典设计模式(3):十一种行为型模式(附实例和详解)
  12. 数学建模与数学实验4.4习题2
  13. 刚入职就写了个bug,把几万用户搞蓝屏了···
  14. 自动登录163邮箱发送邮件(Python+Selenium)
  15. 三菱FX2N:PC与PLC建立通讯的几种方式(SC-09通讯电缆+FX2N-485-BD通讯板)
  16. 谷歌gmail注册入口_将Gmail设置为Google Chrome中mailto链接的默认应用程序
  17. 《缠中说禅108课》79:分型的辅助操作与一些问题的再解答
  18. 一个30岁转行IT行业从小兵到主管的崎岖成长之路
  19. 网络基础之DNS、网关
  20. dnf台服空白mysql文件夹_关于雨泪大神的架设教程遇到的各种问题的解决办法

热门文章

  1. SPOJ - COT Count on a tree [LCA+主席树]【数据结构】
  2. OUC-SE-GROUP09-BLOG1
  3. 黑客攻防学习笔记 准备工作
  4. 【漏洞复现】phpStudy 小皮 Windows面板 RCE漏洞
  5. 解决安装visual studio installer 报错,无法下载安装文件的问题
  6. shiro用户加密默认方式_shiro中的加密、解密的几种方式
  7. 【郑轻邀请赛 G】密室逃脱
  8. 论高可靠性系统中软件容错技术的应用
  9. 比FlashGet好用的FlashGet
  10. self_drive car_学习笔记--第7课:HD MAP高精地图 V2X