求把一串文字中的空格替换为逗号,把乘号x替换为*
如有字符 你好 我好x他好替换后为你好,我好*他好(defun c:ss( / ss osmode i name ent size size_new size_all bak_cecolor)
(setvar "cmdecho" 0)
;(setq osmode (getvar "osmode"))
(setq i 0)
(princ "\n選擇尺寸")
(if(setq ss(ssget '((0 . "DIMENSION"))))
(progn
(setq bak_dimzin(getvar 'dimzin))
(setvar 'dimzin 8)
(while (setq name (ssname ss 0))
(setq i (1+ i))
(setq ent (entget name))
(setq size (cdr (assoc 42 ent)))
(if (= i 1)
(setq num_all size)
(setq num_all (+ num_all size))
)
(setq size_new (rtos(* size 0.001) 2 3))
(if (= i 1)
(setq size_all size_new)
(setq size_all (strcat size_all "+" size_new ))
)
(setq ss(ssdel name ss))
)
(setq bak_cecolor(getvar 'cecolor))
(set-clip-string size_all);複製到剪貼簿 (不含括號)
(setvar 'cecolor "1")
(setq size_all(strcat "(" size_all ")"))
(vl-cmdf "_.text" "j" "mc" (getpoint "\n文本放置點") "250" "0" size_all)
(and bak_cecolor (setvar 'cecolor bak_cecolor))
(and bak_dimzin (setvar 'dimzin bak_dimzin))
)
)
;(setvar "osmode" osmode)
(setvar "cmdecho" 1)
(princ)
)
;;剪貼簿函數
(defun set-clip-string (str / html result)
(and
(= (type str) 'str)
(setq html (vlax-create-object "htmlfile"))
(setq result (vlax-invoke (vlax-get (vlax-get html 'parentwindow)
'clipboarddata
) 'setdata "Text" str
)
)
(vlax-release-object html)
)
)
bluefcc1 发表于 2018-7-9 15:50
不好意思!我沒有QQ
大侠看下这段程序最后生成的文字如何复制到粘贴板
(defun c:ss( / ss osmode i name ent size size_new size_all bak_cecolor)
(setvar "cmdecho" 0)
;(setq osmode (getvar "osmode"))
(setq i 0)
(princ "\n选择尺寸")
(if(setq ss(ssget '((0 . "DIMENSION"))))
(progn
(setq bak_dimzin(getvar 'dimzin))
(setvar 'dimzin 8)
(while (setq name (ssname ss 0))
(setq i (1+ i))
(setq ent (entget name))
(setq size (cdr (assoc 42 ent)))
(if (= i 1)
(setq num_all size)
(setq num_all (+ num_all size))
)
(setq size_new (rtos(* size 0.001) 2 3))
(if (= i 1)
(setq size_all size_new)
(setq size_all (strcat size_all "+" size_new ))
)
(setq ss(ssdel name ss))
)
(setq bak_cecolor(getvar 'cecolor))
(setvar 'cecolor "1")
(setq size_all(strcat "(" size_all ")"))
(vl-cmdf "_.text" "j" "mc" (getpoint "\n文本放置点") "250" "0" size_all)
(and bak_cecolor (setvar 'cecolor bak_cecolor))
(and bak_dimzin (setvar 'dimzin bak_dimzin))
)
)
;(setvar "osmode" osmode)
(setvar "cmdecho" 1)
(princ)
) 本帖最后由 bluefcc1 于 2018-7-9 11:31 编辑
(defun c:tt ( / e22 e2 sn1 sn2 sn3 i) (setq e22nil) (while(or (= e22 nil) (/= (cdr (assoc '0 (entget (car e22)))) "TEXT")) (setq e22 (entsel "\n点选文字:")) ) (setqe2 (entget (car e22))) (setqsn1 (cdr (assoc '1e2))) (alert(strcat "\n文字替换前:"sn1)) (setq i1) (setqsn3 "") (repeat(strlen sn1) (cond ((= (substr sn1 i 1) " ")(setq sn2 ",")) ((= (substr sn1 i 1) "x") (setq sn2 "*")) (t (setq sn2 (substr sn1 i 1))) );end cond (setq sn3 (strcat sn3 sn2)) (setq i (+ i 1)) ) (entmod(setq e2 (subst (cons 1 sn3) (assoc 1 e2) e2))) ;直接更新 (alert (strcat "\n文字替换后:"sn3)) )
bluefcc1 发表于 2018-7-9 10:45
(defun c:tt ( / e22 e2 sn1 sn2 sn3 i) (setq e22nil) (while(or (= e22 nil) (/= (cdr (assoc ' ...
大哥能不能把最后形成的文字弄到粘贴板,以便我可以复制 本帖最后由 664571221 于 2018-7-9 11:38 编辑
bluefcc1 发表于 2018-7-9 10:45
(defun c:tt ( / e22 e2 sn1 sn2 sn3 i) (setq e22nil) (while(or (= e22 nil) (/= (cdr (assoc ' ...
大哥怎么用不起来 ,是不是哪里错了,直接 警告! 程序已经退出! 本帖最后由 bluefcc1 于 2018-7-9 11:50 编辑
((= (substr sn1 i 1)"x") (setq sn2 "*"))"x"是小写的X,不是╳。╳ 我这边CAD无法识别我把图面里的文字 改成 "我好 你好x他好"
本帖最后由 664571221 于 2018-7-9 13:12 编辑
bluefcc1 发表于 2018-7-9 11:46
((= (substr sn1 i 1)"x") (setq sn2 "*"))"x"是小写的X,不是╳。╳ 我这边CAD无法识别我把图面里的文 ...
主要是程序拖入cad就提示警告 程序已退出 不能用 是哪里错了
bluefcc1 发表于 2018-7-9 11:46
((= (substr sn1 i 1)"x") (setq sn2 "*"))"x"是小写的X,不是╳。╳ 我这边CAD无法识别我把图面里的文 ...
是程序本身哪里错了吗
測試沒問題。 本帖最后由 bluefcc1 于 2018-7-9 14:19 编辑
bluefcc1 发表于 2018-7-9 14:17
可以了大侠,两个有啥不同呀,非常感谢