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

循环还能再简单一点,你自己改吧,这循环是刚开始学的时候套用别人的
页: 1 [2] 3
查看完整版本: 截去某个字符后面的文字,留下前面的字符