明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 964|回复: 4

[提问] 用Lsp如何实现这个功能:删除字符格式?

[复制链接]
发表于 2020-6-15 11:34:46 | 显示全部楼层 |阅读模式
本帖最后由 mokson 于 2020-6-15 14:03 编辑

当多行文字有多种字体时,可以打开多行文字的编辑状态并选中文本后,选择 “删除格式” > “删除字体格式”,以一键实现将多种字体变为一种字体。这是手工操作的方法,用lisp来实现的话,如何写这个lisp呢?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-6-15 12:26:44 | 显示全部楼层
发表于 2020-10-8 10:56:28 | 显示全部楼层
除了SctipMText 5.0c,Lee Mac也提供了一个 调用 ExgExp 库来处理的函数。
另外还有其他一些人也写了这样的处理函数。
前一段为了处理 Table中的文字去除格式,我参考某个函数,也写了一个直接解析去除的函数。
发表于 2020-10-11 14:03:03 | 显示全部楼层
本帖最后由 wmz 于 2020-10-11 14:12 编辑
e2002 发表于 2020-10-8 10:56
除了SctipMText 5.0c,Lee Mac也提供了一个 调用 ExgExp 库来处理的函数。
另外还有其他一些人也写了这样的 ...

SctipMText 5.0c太过复杂,操作不自由,我试着写一段直观一点的代码;;;;;;;取多行文字函数(e---多行文字图元对象名称,调用MtoT e))
(defun MtoT(e / ee str n n1 nn str0 str1 stra)
    (vl-load-com)
    (setq    n nil nn 0 str0 "" str1 "" stra "")
    (setq   ee (entget e))
    (setq  str (cdr(assoc 1 ee)))
    (while
         (setq   n (vl-string-search ";" str))
         (setq str (substr str (+ n 2))) ;;;;;;取格式符以后的字符串,无格式符则忽略
    )
    (setq  str (vl-string-subst "" "}" str)) ;;;;;去掉尾符号,无格式符则忽略
    (setq   nn (strlen str) n1 1 stra "")
     ;;;;;以下循环去除换行符"\P"但保留不属于换行的大写字符P——高手们可将下面的代码简化或优化
    (repeat nn
         (setq str1 "" str0 "")
         (setq str0 (substr str n1 1) n1 (1+ n1))
         (if (and(> n1 2)(<= n1 nn))(setq str1 (substr str (- n1 2) 1)))
      (cond ((and(= str0 "")(/= str1 "\\"))(setq stra (strcat stra str0)))
            ((and(/= str0 "\\")(/= str0 ""))(setq stra (strcat stra str0)))
      )
    )
       stra ;;;;;单行文字全字符串
)  



点评

这个还需要考虑很多格式代码,没有这么简单哦  发表于 2020-10-11 20:25
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-17 17:27 , Processed in 0.215205 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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