两个全局变量是一样的写法一个正常,一个不正常,帮一下
www.dimcax.com
两个全局变量是一样的写法一个正常,一个不正常,帮一下
(defun c:qq (/ fil len n sum e ed et ln tzb sm sumst str in)
(princ"\n程序功能:统计所输入的字符串标记打头的所有数据的相加值")
(vl-load-com)
(command "redraw")
(if (null strjj) (setq strjj "="))
(setq str (getstring (strcat "\n请输入要统计数字前面的那个字符标记<" strjj ">:")))
(if (null str) (setq str strjj)) (setq strjj str)
(if (null nit) (setq nit 3))
(setq in (getint (strcat "\n请输入小数位精度:<" (rtos nit 2) ">")))
(if (null in) (setq in nit)) (setq nit in)
(setq fil (ssget '((0 . "text"))))
(setq len (sslength fil))
(setq n 0)
(setq sum 0)
(while (<= n (1- len))
(setq e (ssname fil n))
(if (= "text" (cdr (assoc 0 (setq ed (entget e)))))
(progn
(setq et (dxf 1 ed))
(if (wcmatch et (strcat "*" strjj "*"))
(progn
(setq ln(+ (+ (strlen strjj) 1) (vl-string-search strjj et)))
(setq sm(substr et ln))
(setq sum (+ sum (atof sm)))
)
)
)
)
(setq n (1+ n))
)
(setq sumst (rtos sum 2 nit))
(princ (strcat "\n" strjj sumst))
)
各位大哥,我里面的两个全局变量strjj和nit,便nit的显示是正常的,但为什么strjj 在程序第二次运行时却看不到啦变成一个空字符串啦,我的两个变量都是一样的写法,就是不知道strjj的问题出在那啦,麻烦,各路大哥,高抬贵手帮我看看,谢谢
d
是(setq str (getstring (strcat "\n请输入要统计数字前面的那个字符标记<" strjj ">:"))) 如果直接回车
应有 str="" 而不是 str=nil 则(null str)=false
导致下文 (if (null str) (setq str strjj)) (setq strjj str) 将""赋给strjj ,下一次运行时strjj自然为""
d
解决了
d