 - (defun c:tt (/ hz lst pt ss txt txt1 var x xw y)
- (if (and
- (xdrx_initssget "\n选取要统计的文字<退出>:")
- (setq ss (xdrx_ssget '((0 . "TEXT"))))
- )
- (progn
- (xdrx_begin)
- (xdrx_sysvar_push '("dimzin" 0))
- (setq lst (mapcar
- '(lambda (x)
- (setq txt (xdrx_getpropertyvalue x "textstring"))
- (setq txt1 (xd::string:regexps "[\\u4e00-\\u9fa5]{1,}[0-9.]+"
- txt ""
- )
- )
- (if txt1
- (setq lst (mapcar
- '(lambda (y)
- (setq hz (xd::string:regexps "[\\u4e00-\\u9fa5]{0,}"
- y ""
- )
- )
- (setq xw (xd::string:regexps "(-?[0-9]+)(\\.[0-9]+)?"
- y ""
- )
- )
- (list (car hz) (atof (car xw)))
- )
- txt1
- )
- )
- )
- )
- (xdrx_pickset->ents ss)
- )
- lst (apply
- 'append
- lst
- )
- lst (xd::list:groupbyindex lst 0.1)
- lst (vl-sort lst '(lambda (x y)
- (< (car x) (car y))
- )
- )
- lst (mapcar
- '(lambda (x)
- (list (car x) (rtos (apply
- '+
- (cdr x)
- ) 2 1
- )
- )
- )
- lst
- )
- lst (append lst (list (list "合计" (rtos (apply '+ (mapcar '(lambda(x)(atof (cadr x))) lst)) 2 1))))
- lst (append
- (list (list "统计表" nil) '("名 称" "数 量"))
- lst
- )
- )
- (if (not #miaomu-tj-height)
- (setq #miaomu-tj-height 3.5)
- )
- (if (setq var (getreal (xdrx_prompt "\n字高<" #miaomu-tj-height ">:" t)))
- (setq #miaomu-tj-height var)
- )
- (if (setq pt (getpoint "\n表格插入点:"))
- (progn
- (xd::text:init 1)
- (XD::Table:MakeFromList lst pt #miaomu-tj-height (/ #miaomu-tj-height
- 2.0
- )
- )
- )
- )
- (xdrx_sysvar_pop)
- (xdrx_end)
- )
- )
- (princ)
- )
|