明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 976|回复: 7

[已解答] 求不同图层,不同文字个数,并输出excel

[复制链接]
发表于 2016-4-26 16:18 | 显示全部楼层 |阅读模式
本帖最后由 四啤酒瓶 于 2016-4-26 16:25 编辑

在不同的两个图层:ZN1-2、ZN7-8 分别有不同的线长标记文字如:1m 2m 3m。。。统计不同标记文字的个数,并输出excel。
自个用filter一个一个统计工作量太大了,奈何自个不懂autolisp,研究好几天也弄不出来,请各位大神帮帮忙。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2016-4-26 16:27 | 显示全部楼层
,大神快来,大神快来
发表于 2016-4-26 18:36 | 显示全部楼层
直接用DATAEXTRACTION
发表于 2016-4-26 23:45 | 显示全部楼层
看看下面的这个程序是否符合要求。
加载命令是 : TJGS



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2016-4-27 08:31 | 显示全部楼层
感谢 "highflybir" 分享程序,谢谢!
发表于 2016-4-27 09:15 | 显示全部楼层
能否不用做成组,直接分层统计
 楼主| 发表于 2016-4-27 09:51 | 显示全部楼层
highflybir 发表于 2016-4-26 23:45
看看下面的这个程序是否符合要求。
加载命令是 : TJGS

谢谢      厉害
发表于 2016-4-27 11:07 | 显示全部楼层
本帖最后由 ㄘ丶转裑ㄧ灬 于 2016-4-27 11:54 编辑

稍微修改了下,不限于数字开头文本,并附上其它几个统计类程序:
  1. ;;
  2. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;文字统计
  3. ;;;;;先用“cdbs-文字重叠变色”检查编号(请查看其注意事项)
  4. ;;;;;结果显示在CAD的文本窗口,可复制后粘贴至CAD或EXCEL中,然后用EXCEL的“分列”功能进行数据排版
  5. (defun c:ct ()
  6.   (setvar "cmdecho" 0)
  7.   (setq ss (ssget '((0 . "text,mtext"))));;;;;;若需统计多行文本,则把"text"改为"text,mtext"
  8.   (setq i 0)
  9.   (setq tsort '())
  10.   (repeat (sslength ss)
  11.     (setq ename (ssname ss i))
  12.     (setq endate (entget ename))
  13.     (setq txt (cdr (assoc 1 endate)))
  14.     (setq tsort (cons txt tsort))
  15.     (setq i (+ i 1))
  16.   )
  17.   (setq tsort (vl-sort tsort '<))
  18.   (setq j 0)
  19.   (setq k 1)
  20.   (repeat (length tsort)
  21.     (setq trtj (nth j tsort))
  22.     (if        (/= j (length tsort))
  23.       (setq trtn (nth (+ j 1) tsort))
  24.     )
  25.     (if        (= trtj trtn)
  26.       (setq k (+ k 1))
  27.       (progn
  28.         (print (strcat trtj "=" (rtos k 2 0)))
  29.         (setq k 1)
  30.       )
  31.     )
  32.     (setq j (+ j 1))
  33.   )
  34.   (princ "\n编号总数:")
  35.   (princ j)
  36.   (textscr)
  37.   (princ)
  38. )
  39. ;
  40. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;文字统计并输出至Excel
  41. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;by:highflybir
  42. ;;Excel至CAD的tab表格:在Excel中复制数据,在CAD中输入PASTESPEC,选择“AutoCAD图元”,确定后输入t,再空格/回车确定,指定基点。
  43. ;;CAD的Tab表格转为Excel:输入TABLEEXPORT,选择Tab表格,将保存为CSV文件,可用Excel打开后存为其它格式。
  44. ;
  45. ;;;;;忘记高飞设了收币了,现只将改动部分显示
  46.         ;(if (numberp (read (setq num (substr str 1 (1- (strlen str))))));;统计内容为数字的文本
  47.           (setq lst (cons (cons (vla-get-layer obj) str) lst))
  48.         ;)

  49. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*************************文字重叠变色
  50. ;;;;;;;;;;;;;;;;;;;;默认改为蓝色,所以请注意原编号中不要有蓝色文字
  51. ;;;;;;;;;;;;;;;;;;;;框选时不要把视图缩放到很小,可分几个区域单独操作;视图过小会全改颜色
  52. ;;晓东 zxq0220 2014.6.12世界杯前夜
  53. (defun c:cdbs ()
  54. (vl-load-com)   ;加载vlisp函数
  55. (if (setq ss (ssget '((0 . "TEXT")))) (progn ;选择操作对象
  56.   (setq i 0)                                  ;定义索引号
  57.   (repeat (sslength ss)                       ;遍历选集
  58.    (setq en (ssname ss i)                     ;图元名
  59.          ent (entget en)                      ;关联表
  60.          obj (vlax-ename->vla-object en))     ;转化成VLA对象
  61.    (vla-getboundingbox obj 'pt1 'pt2)         ;文字对象外框
  62.    (setq pt1 (vlax-safearray->list pt1)       ;转化为坐标
  63.          pt2 (vlax-safearray->list pt2))
  64.    (if (setq ss1 (ssget "c" pt1 pt2 '((0 . "TEXT"))));TEXT对象
  65.     (if (> (sslength (ssdel en ss1)) 0)       ;去掉原字串
  66.      (if (assoc 62 ent)                       ;判断是否设定颜色
  67.       (entmod (subst '(62 . 5) (assoc 62 ent) ent));改色
  68.       (entmod (append ent '((62 . 5))))
  69.      )
  70.     )
  71.    )
  72.    (setq i (1+ i))
  73.   )
  74. ))
  75. (princ)
  76. )
  77. ;;
  78. ;;
  79. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;********************统计属性文字
  80. ;;;;;;;;;*************************(单个属性块有多个属性的请用CAD的数据提取:dataextraction)
  81. ;;
  82. ;;
  83. ;;-----------------=={ Count Attribute Values }==-------------;;
  84. ;;                                                            ;;
  85. ;;  Counts the number of occurrences of attribute values in a ;;
  86. ;;  selection of attributed blocks. Displays result in an     ;;
  87. ;;  AutoCAD Table object.                                     ;;
  88. ;;------------------------------------------------------------;;
  89. ;;  Author: Lee Mac, Copyright ?2011 - www.lee-mac.com       ;;
  90. ;;------------------------------------------------------------;;

  91. (defun c:CAV nil (c:CountAttributeValues))

  92. (defun c:CountAttributeValues ( / _Dxf _Assoc++ _SumAttributes ss i alist )

  93.   (defun _Dxf ( key alist ) (cdr (assoc key alist)))

  94.   (defun _Assoc++ ( key alist )
  95.     (
  96.       (lambda ( pair )
  97.         (if pair
  98.           (subst (list key (1+ (cadr pair))) pair alist)
  99.           (cons  (list key 1) alist)
  100.         )
  101.       )
  102.       (assoc key alist)
  103.     )
  104.   )

  105.   (defun _SumAttributes ( entity alist )
  106.     (while
  107.       (not
  108.         (eq "SEQEND"
  109.           (_dxf 0
  110.             (entget
  111.               (setq entity
  112.                 (entnext entity)
  113.               )
  114.             )
  115.           )
  116.         )
  117.       )
  118.       (setq alist (_Assoc++ (_Dxf 1 (reverse (entget entity))) alist))
  119.     )
  120.   )

  121.   (cond
  122.     (
  123.       (not
  124.         (vlax-method-applicable-p
  125.           (setq space
  126.             (vlax-get-property
  127.               (setq doc
  128.                 (vla-get-ActiveDocument (vlax-get-acad-object))
  129.               )
  130.               (if (= 1 (getvar 'CVPORT)) 'Paperspace 'Modelspace)
  131.             )
  132.           )
  133.           'AddTable
  134.         )
  135.       )

  136.       (princ "\n** 这个版本的AutoCAD不支持此功能 **")
  137.     )
  138.     (
  139.       (and (setq ss (ssget '((0 . "INSERT") (66 . 1))))
  140.         (repeat (setq i (sslength ss))
  141.           (setq alist (_SumAttributes (ssname ss (setq i (1- i))) alist))
  142.         )
  143.         (setq pt (getpoint "\n指定表格左上角所在点: "))
  144.       )
  145.      
  146.       (LM:AddTable space (trans pt 1 0) "属性统计"
  147.         (cons '("编号" "总计")
  148.           (vl-sort
  149.             (mapcar
  150.               (function
  151.                 (lambda ( pair )
  152.                   (list (car pair) (itoa (cadr pair)))
  153.                 )
  154.               )
  155.               alist
  156.             )
  157.             (function (lambda ( a b ) (< (strcase (car a)) (strcase (car b)))))
  158.           )
  159.         )
  160.       )
  161.     )
  162.   )

  163.   (princ)
  164. )

  165. ;;---------------------=={ Add Table }==----------------------;;
  166. ;;                                                            ;;
  167. ;;  Creates a VLA Table Object at the specified point,        ;;
  168. ;;  populated with title and data                             ;;
  169. ;;------------------------------------------------------------;;
  170. ;;  Author: Lee Mac, Copyright ?2011 - www.lee-mac.com       ;;
  171. ;;------------------------------------------------------------;;
  172. ;;  Arguments:                                                ;;
  173. ;;  space - VLA Block Object                                  ;;
  174. ;;  pt    - Insertion Point for Table                         ;;
  175. ;;  title - Table title                                       ;;
  176. ;;  data  - List of data to populate the table                ;;
  177. ;;------------------------------------------------------------;;
  178. ;;  Returns:  VLA Table Object                                ;;
  179. ;;------------------------------------------------------------;;

  180. (defun LM:AddTable ( space pt title data / _itemp ) (vl-load-com)

  181.   (defun _itemp ( collection item )
  182.     (if
  183.       (not
  184.         (vl-catch-all-error-p
  185.           (setq item
  186.             (vl-catch-all-apply 'vla-item (list collection item))
  187.           )
  188.         )
  189.       )
  190.       item
  191.     )
  192.   )

  193.   (
  194.     (lambda ( table ) (vla-put-StyleName table (getvar 'CTABLESTYLE)) (vla-SetText table 0 0 title)
  195.       (
  196.         (lambda ( row )
  197.           (mapcar
  198.             (function
  199.               (lambda ( rowitem ) (setq row (1+ row))
  200.                 (
  201.                   (lambda ( column )
  202.                     (mapcar
  203.                       (function
  204.                         (lambda ( item )
  205.                           (vla-SetText table row
  206.                             (setq column (1+ column)) item
  207.                           )
  208.                         )
  209.                       )
  210.                       rowitem
  211.                     )
  212.                   )
  213.                   -1
  214.                 )
  215.               )
  216.             )
  217.             data
  218.           )
  219.         )
  220.         0
  221.       )
  222.       table
  223.     )
  224.     (
  225.       (lambda ( textheight )
  226.         (vla-AddTable space (vlax-3D-point pt) (1+ (length data)) (length (car data)) (* 1.8 textheight)
  227.           (* textheight
  228.             (apply 'max
  229.               (cons (/ (strlen title) (length (car data)))
  230.                 (mapcar 'strlen (apply 'append data))
  231.               )
  232.             )
  233.           )
  234.         )
  235.       )
  236.       (vla-getTextHeight
  237.         (_itemp
  238.           (_itemp
  239.             (vla-get-Dictionaries
  240.               (vla-get-ActiveDocument (vlax-get-acad-object))
  241.             )
  242.             "ACAD_TABLESTYLE"
  243.           )
  244.           (getvar 'CTABLESTYLE)
  245.         )
  246.         acDataRow
  247.       )
  248.     )
  249.   )
  250. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-18 21:02 , Processed in 0.354897 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表