找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2332|回复: 12

(完成)[编程申请]:去除文字实体内部的空格...

[复制链接]

已领礼包: 20个

财富等级: 恭喜发财

发表于 2002-8-9 11:08:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
晓东,EACHY谢谢你们前几天写的程序,同事们用了都说很方便。

1、我们以前画的图中,为了让英文和汉字不同高,很多图都把汉字中间留有空格,然后在中间空格处另外写上英文字,现在如果我要把这些字用程序连接起来,或者排版的时候,就出现问题了,有空格的文字是一个实体,这样和英文连接就错误了,看下面图,希望给大家写个能把一个有空格的文字的实体把空格去掉,变成两个文字,并且屏幕上显示的位置不要变化

2、另外希望把文字处理进一步完善,再提供比如:文字拆成单个字、修改多行TEXT文字的行距、多行TEXT文字(每行里面可能由多个文字组成)按照原来顺序拷贝到剪切板、修改已有的文字字型(做成刷子最好)、宽度、角度、缩放、文字下部对齐(用在一行里面有多个文字)等等

上面是我想出的,高手们又要累了:),不过,我认为如果都写完,可以说是目前见到的最完善的文字处理工具集了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 6530个

财富等级: 富甲天下

发表于 2002-8-9 15:15:45 | 显示全部楼层
我也写过一些关于文本的程序(Ju.lsp、Wr.lsp等),本想继续下去,后来有些其它原因就耽搁了,不过已经有一些思路,可供大家参考:
1.按实体Y值分行,vla-GetBoundingBox函数好像是不错的。
2.判别文本是否有空格,如有空格将文本分断,利用Textbox函数求出各段文本基点(DXF=10)。
3.按文本基点给每行文本排序。
4.连接文本。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-8-9 20:19:10 | 显示全部楼层
程序写好了,请试用...


                               
登录/注册后可看大图



  1. [FONT=courier new]
  2. ;|
  3.    命令:txt_rspace
  4.    
  5.    功能:去掉文字实体里面的空格,文字保持显示位置不变
  6.    
  7.    说明:解决一些朋友为了输入英文,把汉字留空格,以后编辑不方便的问题。
  8.         程序可以处理多个文字实体,输入ALL,全图处理。
  9.            
  10.         程序配合XDRX_API build 20630+版本使用,朋友们可以把这个LISP拷贝到“晓东工具箱”的安装的
  11.         LISP目录,自己加入到菜单里面就可以非常方便的使用了。
  12.         关于程序的建议请到“晓东CAD空间-编程申请”论坛
  13.         [url]http://www.xdcad.net/forum留言[/url]         
  14.    
  15. |;
  16. (defun $xdlsp_text_position (e pos / ed dm p10 a old new ed1 box d1 px)
  17.   (setq ed (entget e)
  18.         dm (caadr (textbox ed))
  19.         p10 (cdr (assoc 10 ed))
  20.         a (cdr (assoc 50 ed))
  21.         old (assoc 1 ed)
  22.         new (cdr old)
  23.         new (xdrx_string_trimLeft (substr new (1+ pos)))
  24.         ed1 (subst
  25.               (cons 1 new)
  26.               old
  27.               ed
  28.             )
  29.         box (textbox ed1)
  30.         d1 (caadr box)

  31.         px (polar p10 a (- dm d1))
  32.   )
  33. )
  34. (defun $xdlsp_text_rspace (e / $text_rspace1 pos px ed ed1 e)
  35.   (defun $text_rspace1 (e / txt p10 a box old dm d1 len)
  36.     (setq ed (entget e)
  37.           old (assoc 1 ed)
  38.           txt (xdrx_getentdxf 1)
  39.           len (strlen txt)
  40.           txt (xdrx_string_trimLeft txt)
  41.           $len_p (+ $len_p (- len (strlen txt)))
  42.           len (strlen txt)
  43.           txt (xdrx_string_trimRight txt)
  44.           $len_s (+ $len_s (- len (strlen txt)))
  45.           p10 (xdrx_getentdxf 10)
  46.           a (xdrx_getentdxf 50)
  47.           dm (caadr (textbox (entget e)))
  48.           ed1 (subst
  49.                 (cons 1 (xdrx_string_trimLeft txt))
  50.                 old
  51.                 ed
  52.               )
  53.           d1 (caadr (textbox ed1))
  54.           p10 (polar p10 a (- dm d1))
  55.     )
  56.     (xdrx_modent 1 txt 10 p10)
  57.     (xdrx_string_findOneOf txt " ")
  58.   )
  59.   (while (setq pos ($text_rspace1 e))
  60.     (setq $len_m (1+ $len_m)
  61.           px ($xdlsp_text_position e pos)
  62.           ed (entget e)
  63.           txt (cdr (assoc 1 ed))
  64.           ed1 (subst
  65.                 (cons 10 px)
  66.                 (assoc 10 ed)
  67.                 ed
  68.               )
  69.           ed1 (subst
  70.                 (cons 1 (xdrx_string_trimLeft (substr txt (1+ pos))))
  71.                 (assoc 1 ed1)
  72.                 ed1
  73.               )
  74.           ed (subst
  75.                (cons 1 (substr txt 1 pos))
  76.                (assoc 1 ed)
  77.                ed
  78.              )
  79.     )
  80.     (entmod ed)
  81.     (entmake ed1)
  82.     (setq e (entlast))
  83.     (xdrx_setenttodb e)
  84.   )
  85. )
  86. (defun c:txt_rspace (/ ss e $len_s $len_p $len_m)
  87.   (prompt "\n请选取要去除空格的文字[All-全选]<退出>:")
  88.   (if (setq ss (ssget '((0 . "text"))))
  89.     (progn
  90.       (setq $len_s 0
  91.             $len_m 0
  92.             $len_p 0
  93.       )
  94.       (xdrx_setsstodb ss 0)
  95.       (prompt "\n处理中...")
  96.       (while (setq e (xdrx_getentdata 0))
  97.         ($xdlsp_text_rspace e)
  98.       )
  99.       (prompt "\n处理完毕...")
  100.       (prompt (strcat "\n共处理了 " (itoa (sslength ss))
  101.                       " 个文字实体,去除了 " (itoa $len_p) " 个前导空格, "
  102.                       (itoa $len_s) " 个尾部空格, " (itoa $len_m)
  103.                       " 处中间空格"
  104.               )
  105.       )
  106.     )
  107.   )
  108.   (princ)
  109. )
  110. [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-8-9 20:35:02 | 显示全部楼层

Re: [编程申请]:去除文字实体内部的空格...

最初由 marting 发布
[B]晓东,EACHY谢谢你们前几天写的程序,同事们用了都说很方便。

1、我们以前画的图中,为了让英文和汉字不同高,很多图都把汉字中间留有空格,然后在中间空格处另外写上英文字,现在如果我要把这些字用程序连接起来... [/B]


谢谢你的建议,其他的程序正在整体考虑中,陆续会提炼组合,提供给大家。

也希望大家有什么好主意,贴到论坛来!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-28 21:48:45 | 显示全部楼层
最初由 marting 发布
晓东,EACHY谢谢你们前几天写的程序,同事们用了都说很方便。

1、我们以前画的图中,为了让英文和汉字不同高,很多图都把汉字中间留有空格,然后在中间空格处另外写上英文字,现在如果我要把这些字用程序连接起来
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-29 08:06:57 | 显示全部楼层
一般我使用按行连接,字体选中英文等高的,将原来的中文中有空格的替换为原位置的英文的字母。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-29 20:06:10 | 显示全部楼层
不错的程序。 我有空时作一个更好用的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 194个

财富等级: 日进斗金

发表于 2006-5-9 12:09:18 | 显示全部楼层
在2004中不能用,我试过了,看看这个程序,很不错的,可以去掉多行文字和单行文字的空格!
这个程序在2004中试过,可以用!
命令:test
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2006-5-9 12:33:40 | 显示全部楼层
shuaier楼主的程序测试过了,不错耶。谢谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-12 00:25:38 | 显示全部楼层
XD的能不能写一个不用通用程序的呀?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-12 10:41:47 | 显示全部楼层
现在我用不上,我想以后会用的上.下载先
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-31 15:37:00 | 显示全部楼层
我总觉得本论坛`上的程序有点偏长,没必要整那些个arx、vlx高深的东西,其实好多用lisp就解决了,对于这种帖子我看也不看。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

发表于 2008-12-17 09:44:03 | 显示全部楼层
对于文字为左对齐的可以,对于居中的文字就不行。为什么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-6-10 11:18 , Processed in 0.419221 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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