马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
 - ;|
- 删除指定的字符串(支持正则表达式)而文字实体位置不变。
- 参数: ent --- 文字(TEXT)实体名
- match-- 匹配字符串,支持正则表达式,如: \s 空白字符
- mode -- 操作模式, T, 删除 NIL 删除其他
- 返回值:选择集 or nil
- |;
- (defun XD::Text:SplitBy (ent match mode / ang basept box ent2 n nrm pt ss str strl tf)
- (if (and
- (setq str (xdrx_getpropertyvalue ent "textstring"))
- (xdrx_string_regexps (strcat "[" match "]+") str)
- (setq str (xdrx_string_regexpr "[\\s\\u3000]+$" str ""))
- (setq strl (xdrx_string_regexps (strcat "[" match "]+|[^" match "]+")
- str
- )
- )
- )
- (progn
- (xdrx_begin)
- (xdrx_setmark)
- (setq pt (xdrx_getpropertyvalue ent "position")
- basept pt
- nrm (xdrx_getpropertyvalue ent "normal")
- ang (xdrx_getpropertyvalue ent "rotation")
- )
- (foreach n strl
- (setq ss (xdrx_entity_copy ent)
- ent2 (entlast)
- )
- (xdrx_setpropertyvalue ent2 "textstring" n "rotation" 0.0 "position"
- pt
- )
- (setq box (xdrx_entity_box ent2)
- pt (mapcar
- '+
- pt
- (mapcar
- '-
- (cadr box)
- (car box)
- )
- )
- )
- (if mode
- (setq tf (xdrx_string_regexps (strcat "[" match "]") n))
- (setq tf (not (xdrx_string_regexps (strcat "[" match "]") n)))
- )
- (if tf
- (entdel ent2)
- (xdrx_entity_rotate ent2 ang basept nrm)
- )
- )
- (entdel ent)
- (xdrx_end)
- (xdrx_getss)
- )
- )
- )
测试命令:
 - (defun c:tt ()
- (if (and
- (/= (setq match (getstring "\n输入要删除的字符<退出>:")))
- (progn
- (prompt "\n选取要处理的字符串<退出>:")
- t
- )
- (setq ss (ssget '((0 . "TEXT"))))
- )
- (progn
- (if (= 1 (xdrx_yesorno "删除" 1))
- (setq mode t)
- (setq mode nil)
- )
- (mapcar
- '(lambda (x)
- (xd::text:splitby x match mode)
- )
- (xdrx_pickset->ents ss)
- )
- )
- )
- (princ)
- )
|