(defun c:xdtb_tjtxtsl (/ i lst lst1 pt ss str txt val x y)
(xdrx-begin)
(xd::var:getdouble "#xd-tongji-textheight" 4.0)
(if (setq
val (getreal
(xdrx_prompt (xdrx-string-multilanguage "\n输入字高<" "\nInput Text Height<") #xd-tongji-textheight ">:" t)
)
)
(xd::var:setdouble "#xd-tongji-textheight" val)
)
(xd::var:getint "#xd_var_global_bits" 1)
(if (setq val (getint
(xdrx_prompt (xdrx-string-multilanguage "\n小数位数<" "\nDecimal places<") #xd_var_global_bits ">:" t)
)
)
(xd::var:setint "#xd_var_global_bits" val)
)
(if (setq ss (xdrx_ssget (xdrx-string-multilanguage "\n选择带数字的文字<退出>:" "\nSelect text with numbers <Exit>:") '((0 . "*text"))))
(progn
(setq lst nil)
(mapcar '(lambda (x)
(setq txt (xdrx_getpropertyvalue x "textstring"))
(if (setq str (xdrx_string_regexps
(strcat "(?<=" ".*[ ]*)[0-9.]+(?=.*$)")
txt
)
)
(progn (setq cl (car (xdrx_string_regexps
"^.+?(?=[ ]*[0-9]+)"
txt
)
)
lst (cons (list (if (XD::String:IsNum cl)
""
cl)
(apply '+ (mapcar 'atof str))
)
lst
)
)
)
)
)
(xdrx_pickset->ents ss)
)
(setq lst (xd::list:groupbyindex lst 0.1))
(setq
lst (vl-sort
lst
'(lambda (x y) (xdrx-string-logical< (car x) (car y)))
)
)
(setq i 0)
(setq lst (mapcar '(lambda (x)
(list (itoa (setq i (1+ i)))
(car x)
(length (cdr x))
(apply '+ (cdr x))
)
)
lst
)
)
(setq
lst (append
lst
(list
(list (xdrx-string-multilanguage "合 计" "Sum")
nil
(apply '+ (mapcar '(lambda (x) (nth 2 x)) lst))
(apply '+ (mapcar '(lambda (x) (nth 3 x)) lst))
)
)
)
)
(setq
lst (cons
(list (xdrx-string-multilanguage "序 号" "No")
(xdrx-string-multilanguage "类 别" "Category")
(xdrx-string-multilanguage "数 量" "Amount")
(xdrx-string-multilanguage "总 量" "Total Number")
)
lst
)
)
(setq lst (cons (list (xdrx-string-multilanguage "文字算量统计表" "Text calculation statistics table") nil nil nil) lst))
(if (setq pt (getpoint (xdrx-string-multilanguage "\n表格插入点<退出>:" "\nTable insertion point<Exit>:")))
(progn (xd::text:init 1)
(xd::table:makefromlist
lst
pt
#xd-tongji-textheight
(/ #xd-tongji-textheight 2.0)
)
)
)
)
)
(xdrx-end)
(princ)
)