文字统计(数量统计和求和统计)
(defun c:XDTB_TJTEXT( / hz i key lst pt ss txt val x xw y)
(defun _prompt ()
(xdrx_prompt
"\n当前方式:"
(if (= 0 #xd-tongji-text-mode)
"文字自身统计"
"文字内数字求和"
)
)
(princ)
)
(defun _KEYWORD (key)
(cond
((= key "D")
(if (= 1 #xd-tongji-text-mode)
(setq #xd-tongji-text-mode 0)
(setq #xd-tongji-text-mode 1)
)
)
)
(_prompt)
)
(xdrx_begin)
(if (not #xd-tongji-textheight)
(setq #xd-tongji-textheight 3.5)
)
(if (not #xd-tongji-text-mode)
(setq #xd-tongji-text-mode 0)
)
(if (setq val (getreal
(xdrx_prompt "\n字高<" #xd-tongji-textheight ">:" t)
)
)
(setq #xd-tongji-textheight val)
)
(_prompt)
(xdrx_initget "D")
(if (and (xdrx_initssget
"\n选取要统计的文字[统计方式(D)]<退出>"
"D"
""
"_KEYWORD"
)
(setq ss (xdrx_ssget '((0 . "*TEXT"))))
)
(progn
(setq lst (xdrx_entity_getproperty ss "textstring"))
(if (= 0 #xd-tongji-text-mode)
(progn
(setq
lst (xd::list:groupbyindex lst 1.0)
lst (mapcar '(lambda (x) (list (car x) (length (cdr x))))
lst
)
lst (vl-sort lst '(lambda (x y) (< (car x) (car y))))
)
)
(progn
(xdrx_sysvar_push '("dimzin" 0))
(setq lst (mapcar
'(lambda (x)
(setq txt (xdrx_getpropertyvalue x "textstring"))
(if (and
(setq hz (xd::string:regexps
"[\\u4e00-\\u9fa5]{0,}"
txt
""
)
)
(setq xw (xd::string:regexps
"(-?+)(\\.+)?"
txt
""
)
)
)
(list (car hz) (atof (car xw)))
)
)
(xdrx_pickset->ents ss)
)
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
)
)
)
)
(setq i 0
lst (mapcar '(lambda (x) (cons (itoa (setq i (1+ i))) x))
lst
)
)
(setq lst (cons (list "序 号" "名 称" "数 量") lst)
lst (cons (list "统 计 表" nil nil)
lst
)
)
(if (setq pt (getpoint "\n表格插入点<退出>:"))
(progn
(xd::text:init 1)
(xd::table:makefromlist
lst
pt
#xd-tongji-textheight
(/ #xd-tongji-textheight 2.0)
)
)
)
)
)
(xdrx_end)
(princ)
)
好东西!对数字求和很方便。 版主一出必是精品。 有点意思,谢谢分享
版主一出必是精品。 厉害了!这是多行文本?还是单行文本?还是块属性? 谢谢分享! 看着还不错的样子,不知如何下载和使用 谢谢分享! 如何下载啊 多谢分享! {:1_13:} 感谢楼主分享程序 版主一出必是精品 {:1_21:}{:1_14:}{:1_11:}{:1_7:} 感谢分享,这个绝了