找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: Lisphk

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

[复制链接]

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2014-12-8 09:00:35 | 显示全部楼层
newer 发表于 2014-12-7 18:46
谢谢ST,写了个函数,清除中文空格,西文空格,文字断开后位置不变

谢谢N斑竹,完美。不知道能不能再扩展下,任意字符都给删除掉还保持位置,换句话说,做成的函数给个参数,参数指定的删除掉。

点评

是不是这样: 下面函数给了个开关,T时候是删除掉你输入的字符串,NIL时候是保留你输入的删除其他的,当然位置都是不变的。看演示,删除西文空格和CEF [attachimg]11949[/attachimg] 测试命令:  详情 回复 发表于 2014-12-8 19:59
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

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

我记得不是这样,和形定义有关,你看看自定义手册中shx定义规则

点评

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-8 11:14:08 | 显示全部楼层
iLisp 发表于 2014-12-8 10:28
我记得不是这样,和形定义有关,你看看自定义手册中shx定义规则

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-8 19:59:02 | 显示全部楼层
Lisphk 发表于 2014-12-8 09:00
谢谢N斑竹,完美。不知道能不能再扩展下,任意字符都给删除掉还保持位置,换句话说,做成的函数给个参数 ...

是不是这样:

下面函数给了个开关,T时候是删除掉你输入的字符串,NIL时候是保留你输入的删除其他的,当然位置都是不变的。看演示,删除西文空格和CEF

xdrx_textsplitby.gif

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



测试命令:

  1. (defun c:tt ()
  2.   (if (and
  3.         (/= (setq match (getstring "\n输入要删除的字符<退出>:")))
  4.         (progn
  5.           (prompt "\n选取要处理的字符串<退出>:")
  6.           t
  7.         )
  8.         (setq ss (ssget '((0 . "TEXT"))))
  9.       )
  10.     (progn
  11.       (if (= 1 (xdrx_yesorno "删除" 1))
  12.          (setq mode t)
  13.          (setq mode nil)
  14.       )
  15.       (mapcar
  16.         '(lambda (x)
  17.            (xd::text:splitby x match mode)
  18.          )
  19.         (xdrx_pickset->ents ss)
  20.       )
  21.     )
  22.   )
  23.   (princ)
  24. )


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 22:51 , Processed in 0.437522 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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