Author Topic: [XDrX-PlugIn(115)] Number of text statistics  (Read 141 times)

0 Members and 1 Guest are viewing this topic.

xdcad

  • Swamp Rat
  • Posts: 514
[XDrX-PlugIn(115)] Number of text statistics
« on: April 02, 2024, 10:59:17 AM »
Code: [Select]
(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)
)
« Last Edit: April 02, 2024, 11:06:44 AM by xdcad »
The code I wrote uses XDRX-API,which can be downloaded from github.com and is updated at any time.
===================================
https://github.com/xdcad
https://sourceforge.net/projects/xdrx-api-zip/
http://bbs.xdcad.net