找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2023|回复: 18

[求助] 中间带空格的一个文字,如何去掉空格变成3个单独的文字,位置位置保持不变?

[复制链接]

已领礼包: 19个

财富等级: 恭喜发财

发表于 2014-12-7 15:21:24 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 Lisphk 于 2014-12-7 15:23 编辑

中间带空格的一个文字,如何去掉空格变成3个单独的文字,位置位置保持不变?

QQ截图20141207152305.png



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

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-7 15:51:26 | 显示全部楼层
本帖最后由 newer 于 2014-12-7 15:58 编辑

看图,红线是文字a最小包围盒,xdrx_text_box,也就是LISP函数textbox求得,黄线是文字a实体包围盒,xdrx_entity_box求得,品红线是文字b包围盒,xdrx_entity_box求得,青色线是文字ab包围盒,xdrx_entity_box求得。

可见,第二个文字B的实体包围盒的左下点是上一个文字实体包围盒的右下点。

QQ截图20141207154724.png

点评

我记得不是这样,和形定义有关,你看看自定义手册中shx定义规则  详情 回复 发表于 2014-12-8 10:28
谢谢斑竹,那问题来了,有什么代码求出一个文字有几个空格,几个非空格和他们的位置呢?  详情 回复 发表于 2014-12-7 16:06
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2014-12-7 16:06:10 | 显示全部楼层
newer 发表于 2014-12-7 15:51
看图,红线是文字a最小包围盒,xdrx_text_box,也就是LISP函数textbox求得,黄线是文字a实体包围盒,xdrx_en ...

谢谢斑竹,那问题来了,有什么代码求出一个文字有几个空格,几个非空格和他们的位置呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-7 16:07:30 | 显示全部楼层
a 和 g 在一起时如何

点评

st大师来了,能帮看看上面的问题,比如文字:“ abc de g " ==>(" " "abc" " " "g" " ") 给写个代码吗?  详情 回复 发表于 2014-12-7 16:18
ag重合是,移动g是按文字角度方向,移动a包围盒右下-左下点的向量距离。  详情 回复 发表于 2014-12-7 16:13
实体包围盒第二三点确定的线是第二个文字所在的线,文字高度不影响。  详情 回复 发表于 2014-12-7 16:11
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-7 16:11:13 | 显示全部楼层
st788796 发表于 2014-12-7 16:07
a 和 g 在一起时如何

实体包围盒第二三点确定的线是第二个文字所在的线,文字高度不影响。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-7 16:13:44 | 显示全部楼层
st788796 发表于 2014-12-7 16:07
a 和 g 在一起时如何

ag重合时候,移动g是按文字角度方向,移动a包围盒右下-左下点的向量距离。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2014-12-7 16:18:48 | 显示全部楼层
st788796 发表于 2014-12-7 16:07
a 和 g 在一起时如何

st大师来了,能帮看看上面的问题,比如文字:“   abc  de g " ==>("   " "abc" "  " "g" " ") 给写个代码吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-7 16:46:42 | 显示全部楼层
Lisphk 发表于 2014-12-7 16:18
st大师来了,能帮看看上面的问题,比如文字:“   abc  de g " ==>("   " "abc" "  " "g" " ") 给写个代 ...

_$ (xdrx_string_regexps "[ ]+|[^ ]+" "    a  a b dddd ")
("    " "a" "  " "a" " " "b" " " "dddd" " ")
_$ (xdrx_string_regexps "[ ]+|[^ ]+" "a  a b dddd ")
("a" "  " "a" " " "b" " " "dddd" " ")
_$ (xdrx_string_regexps "[ ]+|[^ ]+" "   abc  de g ")
("   " "abc" "  " "de" " " "g" " ")
_$

点评

哇,正则,能支持中文空格吗?就是所有空白的字符了。  详情 回复 发表于 2014-12-7 16:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-7 16:49:57 | 显示全部楼层
这个里面应该包含这个算法

http://bbs.xdcad.net/thread-672037-1-1.html
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2014-12-7 16:51:00 | 显示全部楼层
st788796 发表于 2014-12-7 16:46
_$ (xdrx_string_regexps "[ ]+|[^ ]+" "    a  a b dddd ")
("    " "a" "  " "a" " " "b" " " "dddd"  ...

哇,正则,能支持中文空格吗?就是所有空白的字符了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-7 17:16:39 | 显示全部楼层
Lisphk 发表于 2014-12-7 16:51
哇,正则,能支持中文空格吗?就是所有空白的字符了。

_$ (xdrx_string_regexps "[ ]+|[^ \\u3000]+|[\\u3000]+" "   abc   %%cde g %%Udd    ")
("   " "abc" " " "  " "%%cde" " " "g" " " "%%Udd" "    ")
_$

点评

%%cde g %%Udd 这个代表什么? |[^ \\u3000]+|[\\u3000]+ 这个又是什么?  详情 回复 发表于 2014-12-7 17:29
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2014-12-7 17:29:24 | 显示全部楼层
st788796 发表于 2014-12-7 17:16
_$ (xdrx_string_regexps "[ ]+|[^ \\u3000]+|[\\u3000]+" "   abc   %%cde g %%Udd    ")
("   "  ...

%%cde g %%Udd 这个代表什么?


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

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2014-12-7 17:38:50 来自手机 | 显示全部楼层
本帖最后由 iLisp 于 2014-12-7 17:46 编辑

u3000中文全角空格
%%u下划线开
%%c直径符号

匹配意义

西文空格+ | [非西文或中文空格]+ | 中文空格+

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-7 18:46:18 | 显示全部楼层
本帖最后由 newer 于 2014-12-7 19:03 编辑

谢谢ST,写了个函数,清除中文空格,西文空格,文字断开后位置不变
xdrx_entremovespace.gif

  1. (defun XD::Text:SplitBySpace (ent / ang basept box ent2 n nrm pt ss str strl)
  2.   (if (and
  3.         (setq str (xdrx_getpropertyvalue ent "textstring"))
  4.         (xdrx_string_regexps "[\\s\\u3000]" str)
  5.         (setq str (xdrx_string_regexpr "[\\s\\u3000]+$" str ""))
  6.         (setq strl (xdrx_string_regexps "([\\s\\u3000]+)|[^\\s\\u3000]+" str))
  7.       )
  8.     (progn
  9.       (xdrx_begin)
  10.       (xdrx_setmark)
  11.       (setq pt (xdrx_getpropertyvalue ent "position")
  12.             basept pt
  13.             nrm (xdrx_getpropertyvalue ent "normal")
  14.             ang (xdrx_getpropertyvalue ent "rotation")
  15.       )
  16.       (foreach n strl
  17.         (setq ss (xdrx_entity_copy ent)
  18.               ent2 (entlast)
  19.         )
  20.         (xdrx_setpropertyvalue ent2 "textstring" n "rotation" 0.0 "position"
  21.                                pt
  22.         )
  23.         (setq box (xdrx_entity_box ent2)
  24.               pt (mapcar
  25.                    '+
  26.                    pt
  27.                    (mapcar
  28.                      '-
  29.                      (cadr box)
  30.                      (car box)
  31.                    )
  32.                  )
  33.         )
  34.         (if (xdrx_string_regexps "[\\s\\u3000]" n)
  35.           (entdel ent2)
  36.           (xdrx_entity_rotate ent2 ang basept nrm)
  37.         )
  38.       )
  39.       (entdel ent)
  40.       (xdrx_end)
  41.       (xdrx_getss)
  42.     )
  43.   )
  44. )

点评

谢谢N斑竹,完美。不知道能不能再扩展下,任意字符都给删除掉还保持位置,换句话说,做成的函数给个参数,参数指定的删除掉。  详情 回复 发表于 2014-12-8 09:00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2014-12-8 08:54:02 | 显示全部楼层
自己计算文本包围盒的确麻烦,我曾经在明经发过一个使用acet函数的去空格程序:http://bbs.mjtd.com/thread-99236-1-1.html
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 05:19 , Processed in 0.616474 second(s), 71 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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