明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7091|回复: 22

【文本】文本去空格程序

    [复制链接]
发表于 2012-11-21 10:42 | 显示全部楼层 |阅读模式
各位好!
       前几天看到一个帖子,需要将文本去掉空格,但显示位置不变,这种程序本人以前也研究过,因为文字占位的算法问题,总是不能如意,这次又看到这种帖子,仔细考虑了一下,决定借用ExpressTools的函数acet-tjust(修改文本对齐方式)来实现,于是有了下面一段程序。
       好久不动Lisp了,命令多记不住了,所以一边翻书、一边构思、一边成文,多少有些凌乱,好在简单测试,目的可以达到。因为不是常用程序,也不准备再作完善了。
  1. (defun c:ttrim(/ ss i l0 en ne eg ng e0 e1 j)
  2.   (command ".color" (getvar "cecolor"))
  3.   (princ "\n选择需要去空格的文本: ")
  4.   (setq ss(ssget '((0 . "TEXT") (1 . "* *"))))
  5.   (if ss
  6.     (progn
  7.       (setq l0 (sslength ss)
  8.      i -1
  9.       )
  10.       (acet-tjust ss "R")
  11.     )
  12.   )
  13.   (repeat l0
  14.     (setq i (1+ i)
  15.    en (ssname ss i)
  16.    eg (entget en)
  17.    e1 (cdr (assoc 1 eg))
  18.     )
  19.     (if (wcmatch e1 " *")
  20.       (progn
  21. (setq e1 (vl-string-left-trim " " e1)
  22.        eg (subst (cons 1 e1) (assoc 1 eg) eg)
  23. )
  24. (entmod eg)
  25.       )
  26.     )
  27.     (if (wcmatch e1 "* ")
  28.       (progn
  29. (acet-tjust (ssadd en) "S")
  30. (setq eg (entget en)
  31.        e1 (cdr (assoc 1 eg))
  32.        e1 (vl-string-right-trim " " e1)
  33.        eg (subst (cons 1 e1) (assoc 1 eg) eg)
  34. )
  35. (entmod eg)
  36.       )
  37.       (acet-tjust (ssadd en) "S")
  38.     )
  39.     (while (wcmatch e1 "* *")
  40.       (setq eg (entget en)
  41.      ng (entmake eg)
  42.      ne (entlast)
  43.      ng (entget ne)
  44.      e0 (cdr (assoc 1 ng))
  45.      e0 (substr e0 1 (setq j (vl-string-search " " e0)))
  46.      ng (subst (cons 1 e0) (assoc 1 ng) ng)
  47.       )
  48.       (entmod ng)
  49.       (acet-tjust (ssadd en) "R")
  50.       (setq eg (entget en)
  51.      e1 (cdr (assoc 1 eg))
  52.      e1 (vl-string-left-trim " " (substr e1 (+ j 1)))
  53.      eg (subst (cons 1 e1) (assoc 1 eg) eg)
  54.       )
  55.       (entmod eg)
  56.       (setq eg (entget en)
  57.      e1 (cdr (assoc 1 eg))
  58.       )
  59.       (acet-tjust (ssadd en) "S")
  60.     )
  61.   )
  62.   (princ)
  63. )

评分

参与人数 1明经币 +1 金钱 +20 收起 理由
bzhjl + 1 + 20 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

发表于 2017-11-20 10:37 | 显示全部楼层
  1. (defun RemoveSpace (str)
  2.   (apply 'strcat (mapcar 'vl-prin1-to-string (read (strcat "(" str ")"))))
  3. )
  4. ;;;示例
  5. (RemoveSpace "ABC DEF GHI")
  6. ;;;返回"ABCDEFGHI"

点评

(RemoveSpace "b.谢谢楼主,支持下")返回值是“B”  发表于 2020-6-3 17:31
偶然看见,觉得不太理想,比如对于这句话  发表于 2020-6-3 17:31
发表于 2018-7-18 17:02 | 显示全部楼层

删除全部空格,好东西!
发表于 2019-2-25 09:53 | 显示全部楼层
谢谢楼主分享,楼主是个热心人!
发表于 2012-11-21 13:07 | 显示全部楼层
支持一下.........
发表于 2012-11-29 12:01 | 显示全部楼层
acet-tjust 是什么?justifytext不可以吗?
发表于 2012-11-29 12:07 来自手机 | 显示全部楼层
支持一下。
 楼主| 发表于 2012-11-29 13:43 | 显示全部楼层
gaics 发表于 2012-11-29 12:01
acet-tjust 是什么?justifytext不可以吗?

acet-tjust就是Justify text所使用的内部函数,是随着ET的加载而加载的。
发表于 2012-11-29 18:21 | 显示全部楼层
ll_j 发表于 2012-11-29 13:43
acet-tjust就是Justify text所使用的内部函数,是随着ET的加载而加载的。

是Justify text所使用的内部函数为什么还要额外加载?
发表于 2012-12-31 18:36 | 显示全部楼层
学习了,,,,,,
发表于 2012-12-31 22:35 | 显示全部楼层
楼主乃高人,学习了。
发表于 2013-11-3 10:25 | 显示全部楼层
学习鸟
发表于 2013-11-4 22:43 | 显示全部楼层
需要ET支持。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 00:53 , Processed in 0.280047 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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