adc
发表于 2014-1-29 22:46:03
自贡黄明儒 发表于 2014-1-14 08:20 static/image/common/back.gif
(atoi (VL-STRING-LEFT-TRIM "N=" "N=45808,M=2547"))=>45808
mark一下~~~
xyp1964
发表于 2014-1-30 08:45:33
;; (aaa "N=45808,M=2547" "=" ",")
(defun aaa (str str1 str2 / m)
(setq m (vl-string-search str1 str))
(substr str (+ m 2) (- (vl-string-search str2 str) m 1))
)
ZZXXQQ
发表于 2014-1-30 12:55:38
(atoi(substr "N=45808,M=2547" 3))
q3_2006
发表于 2014-1-30 15:11:54
(substr "N=45808,M=2547" 3 5)
q3_2006
发表于 2014-1-30 16:39:29
xyp1964 发表于 2014-1-30 08:45 static/image/common/back.gif
如果要返回2547呢...
xyp1964
发表于 2014-1-30 23:16:44
(xyp-Get-HzEngNum "N=45808,M=2547" 3) → ‘("45808" "2547")
zzl9105
发表于 2014-9-23 11:39:05
lyqiezi 发表于 2014-1-18 17:26 static/image/common/back.gif
献丑了,自己平时用的别的lsp改的,因为水瓶有限,所以源码就不放了
图层是根据ftarget文件的,如果文字的 ...
谢谢你,能处理了
可否把源码发我邮箱,363361560@qq.com。
我好用你这个改吧改吧,自已再倒腾一下。
谢谢
lyqiezi
发表于 2014-9-24 22:41:14
……换了公司,有些没拷回来,不过我的都挺简单的,重新弄一个再发给你了
lyqiezi
发表于 2014-9-24 23:49:19
(defun c:smn()
(setq tc (cdr (assoc 8 (entget (car (entsel "\n 选择要处理的图层")))))) ;取图层
(setq ti% 0)
(princ "\n 选择处理的文字")
(if (setq s1 (ssget (list (cons 0 "text") (cons 1 "*,M=*") (cons 8 tc))))
(progn
(while
(<=
ti%
(- (sslength s1) 1)
)
(setq ename (ssname s1 ti%))
(setq e (entget ename)) ;取实体表e
(setq ol (assoc 1 e)) ;获取字体列表
(setq str1 (cdr ol)) ;获取字体内容
(setq sl (strlen str1)) ;获取字体长度
(setq str2 (substr str1 3 (- sl (+ (vl-string-search ",M=" str1) 2))));最终文字
(setq nl (cons 1 str2))
(setq e (subst nl ol e))
(entmod e)
(setq ti% (+ 1 ti%))
);end while
) ;endprogn s1/=nil
);endifs1 /= nil
(prin1)
)
应该比原先的好,原先写的时候刚学没多久
lyqiezi
发表于 2014-9-24 23:50:41
循环还能再简单一点,你自己改吧,这循环是刚开始学的时候套用别人的