用Lsp如何实现这个功能:删除字符格式?
本帖最后由 mokson 于 2020-6-15 14:03 编辑当多行文字有多种字体时,可以打开多行文字的编辑状态并选中文本后,选择 “删除格式” > “删除字体格式”,以一键实现将多种字体变为一种字体。这是手工操作的方法,用lisp来实现的话,如何写这个lisp呢?
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=82857&highlight=%B6%E0%D0%D0%CE%C4%D7%D6%2B%B8%F1%CA%BD
搜一下,挺多的 除了SctipMText 5.0c,Lee Mac也提供了一个 调用 ExgExp 库来处理的函数。
另外还有其他一些人也写了这样的处理函数。
前一段为了处理 Table中的文字去除格式,我参考某个函数,也写了一个直接解析去除的函数。 本帖最后由 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))
(setqstr (cdr(assoc 1 ee)))
(while
(setq n (vl-string-search ";" str))
(setq str (substr str (+ n 2))) ;;;;;;取格式符以后的字符串,无格式符则忽略
)
(setqstr (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 "P")(/= str1 "\\"))(setq stra (strcat stra str0)))
((and(/= str0 "\\")(/= str0 "P"))(setq stra (strcat stra str0)))
)
)
stra ;;;;;单行文字全字符串
)
页:
[1]