求一增减字符括号的功能
3个功能:1.能给字符串加外括号,继续点击能删外括号。
2.能给字符加外括号,继续点击能删除所有外括号。
3.直接删除所有外括号。
;;;前后分别加"(" ")"
(defun C:test1 (/ ss)
(defun LM:ss->vla (ss)
;;->Lee Mac 2010
(if ss
((lambda (i / e l)
(while (setq e (ssname ss (setq i (1+ i))))
(setq l (cons (vlax-ename->vla-object e) l))
)
l
)
-1
)
)
)
(setq ss (ssget '((0 . "TEXT"))))
(setq ss (LM:ss->vla ss))
(mapcar
'(lambda (x / str)
(setq str (vl-string-right-trim " " (vla-get-TextString x)))
(setq str (vl-string-left-trim " " str))
(vla-put-TextString x (strcat "(" str ")"))
)
ss
)
(princ)
)
;;;前后分别删"(" ")"
(defun C:test2 (/ ss)
(defun LM:ss->vla (ss)
;;->Lee Mac 2010
(if ss
((lambda (i / e l)
(while (setq e (ssname ss (setq i (1+ i))))
(setq l (cons (vlax-ename->vla-object e) l))
)
l
)
-1
)
)
)
(setq ss (ssget '((0 . "TEXT"))))
(setq ss (LM:ss->vla ss))
(mapcar
'(lambda (x / str)
(setq str (vl-string-right-trim " " (vla-get-TextString x)))
(setq str (vl-string-left-trim " " str))
(if (= (substr str 1 1) "(")
(setq str (substr str 2 (1- (strlen str))))
)
(if (= (substr str (strlen str) 1) ")")
(setq str (substr str 1 (1- (strlen str))))
)
(vla-put-TextString x str)
)
ss
)
(princ)
)
;;;删除所有"(" ")"
(defun C:test3 (/ ss)
(defun LM:ss->vla (ss)
;;->Lee Mac 2010
(if ss
((lambda (i / e l)
(while (setq e (ssname ss (setq i (1+ i))))
(setq l (cons (vlax-ename->vla-object e) l))
)
l
)
-1
)
)
)
(setq ss (ssget '((0 . "TEXT"))))
(setq ss (LM:ss->vla ss))
(mapcar
'(lambda (x / str)
(setq str (vl-string->list(vla-get-TextString x)))
(setq str (vl-remove-if '(lambda(x) (or (= x 40)(= 41 x))) str))
(setq str (vl-list->stringstr))
(vla-put-TextString x str)
)
ss
)
(princ)
) 最好能连续操作 本帖最后由 叮咚 于 2013-5-15 08:44 编辑
不动脑子
vl-vlax-ename->vla-object
vl-string-subst
vl-string-position
这几个函数就行了
期待无聊大师,没事写写 pzweng 发表于 2013-5-14 09:24 static/image/common/back.gif
没达到想要的效果。但没人回,最佳答案就你了 500w008 发表于 2013-8-22 04:34 static/image/common/back.gif
这是上面程序测试效果? 我没仔细测试过。。。看没人回就选择最佳了。。。
页:
[1]