桩号转换成数字
在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 (< nn len)<BR> (setq zh3 (ascii zh2));求第n个字符asc11<BR> (setq zh2 (substr zh2 2 (- len nn)));截去串<BR> (if (> 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 (< zh3 46) (> 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> (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]