德哥 发表于 2005-3-7 18:08:00

桩号转换成数字

在lisp 语言中如何把K12+325.65转换成12325.65,即把公路上专业表达桩号转换成数字型桩号?



                       (defun c:zh(/ zh zh1 zh2 zh3 zh4 zh5 zh6 zh7 zh8 nn mm1 mm mm2 aa2)<BR>                                       (setq zh8 (car (entsel "选择规格")))<BR>                       (setq zh1 (cdr (assoc 1 (entget zh8))));取出字串<BR>                       (setq len (strlen zh1));测量字长度<BR>                       (setq zh2 zh1);予存原串<BR>                               (setq nn 1);记置<BR>                               (setq mm1 1)<BR>                               (setq mm 0)<BR>                               (setq mm2 0)<BR>                               (setq zh5 "")<BR>                               (while (&lt; nn len)<BR>                                               (setq zh3 (ascii zh2));求第n个字符asc11<BR>                                               (setq zh2 (substr zh2 2 (- len nn)));截去串<BR>                                               (if (&gt; mm2 0) (progn (setq zh6 (substr zh1 (+ mm1 1) mm2))<BR>                                                                                                       (setq zh3 (atof zh6))<BR>                                                                                                                                                                                                                       (setq zh5 (strcat zh6 zh5))<BR>                                               )<BR>                                               )<BR>                                               (setq mm1 mm)<BR>                                               (setq mm2 0)<BR>                                               (if (or (&lt; zh3 46) (&gt; zh3 57)) (progn (setq mm nn)<BR>                                                                       (setq mm2       (- (- mm mm1) 1))<BR>                                        )<BR>                                               )<BR>                                               (setq nn (1+ nn))<BR>                               )<BR>                                                       (setq aa2 (- len mm))<BR>                                                       (setq zh4 (substr zh1 (+ mm 1) aa2));截去串<BR>                                                       (setq zh (strcat zh5 zh4))<BR>                                                                       (setq qq (entget zh8));选象<BR>                                                                       (setq qq (subst (cons 1 zh) (assoc 1 qq) qq))<BR>                                                                       (entmod qq)<BR>                                                               (princ)<BR>                                       )<BR>

meflying 发表于 2005-3-7 19:54:00

(defun c:test( / str)<BR>       (setq str "K12+325.65")<BR>       (strcat (substr str 2 2) (substr str 5 (- (strlen str) 4)))<BR>)


(defun c:test( / str)<BR>       (setq str "K12+325.65")<BR>       (setq str (vl-string-subst "" "+" str))<BR>       (setq str (vl-string-subst "" "K" str))<BR>)
页: [1]
查看完整版本: 桩号转换成数字