找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2107|回复: 7

[求助] 统计属性块

[复制链接]

已领礼包: 862个

财富等级: 财运亨通

发表于 2014-11-22 15:30:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 zhangq_cai1 于 2014-11-22 16:24 编辑

帮忙修改一下程序,能统计属性块。
  1. (defun c:tt ()        ;/ ss lst p tb nlst i)
  2.   (xd::Begin)
  3.   (defun qsxz (sna)
  4.     (setq att (vlax-invoke
  5.     (vlax-ename->vla-object sna)
  6.     "GetAttributes"
  7.         )
  8.     )
  9.     (setq jgb (mapcar '(lambda (aobj)
  10.        (list (vlax-get aobj "TagString")
  11.              (vlax-get aobj "TextString")
  12.        )
  13.            )
  14.           att
  15.         )
  16.     )
  17.     (setq sbm (list (cdr (assoc "A" jgb)) sna))
  18.   )
  19.   (if (setq ss (ssget '((0 . "insert") (66 . 1))))
  20.     (progn
  21.       (setq lst   (mapcar '(lambda (x)
  22.           (qsxz x)
  23.         )
  24.        (xdrx_pickset->ents ss)
  25.      )
  26.       lst   (XD::List:GroupByIndex lst 0)
  27.       nlst (mapcar 'caddr lst)
  28.       i   0
  29.       lst   (mapcar '(lambda (x)
  30.           (list (itoa (setq i (1+ i)))
  31.           " "
  32.           (caar x)
  33.           (itoa (length (cdr x)))
  34.           " "
  35.           )
  36.         )
  37.        lst
  38.      )
  39.       )
  40.       (if (setq p (getpoint "\nInsert Point: "))
  41.   (progn
  42.     (setq  lst (cons '("序号" "图块" "图块名" "数量" "备注")
  43.         lst
  44.         )
  45.     tb  (XD::Table:Make lst p 8. 3.)
  46.     i   1
  47.     )
  48.     (XD::Table:begin tb)
  49.     (xdrx_table_setcolumnwidth
  50.       tb
  51.       2
  52.       (+ (xdrx_table_columnwidth tb 2) 4.)
  53.     )
  54.     (vl-catch-all-apply
  55.       'vla-put-RepeatTopLabels
  56.       (list (vlax-ename->vla-object tb) :vlax-true)
  57.     ) ;_重复标题
  58.     (xdrx_table_settextstring tb 0 0 "数量统计表")
  59.     (mapcar '(lambda (x)
  60.          (xdrx_table_setblockid
  61.            tb
  62.            (setq i (1+ i))
  63.            1
  64.            x
  65.            t
  66.          )
  67.        )
  68.       nlst
  69.     )
  70.     (XD::Table:end tb)
  71.   )
  72.       )
  73.     )
  74.   )
  75.   (XD::End)
  76.   (princ)
  77. )
想把图块也插入表格
QQ截图20141122152558.png
QQ截图20141122152628.png

自动统计属性块.rar

15.83 KB, 下载次数: 32, 下载积分: D豆 -1 , 活跃度 1

测试文件

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-22 16:11:02 | 显示全部楼层
先凑合用吧,
  1. (defun c:tt (/ ss lst p tb nlst i)
  2.   (xd::Begin)
  3.   (if (setq ss (ssget '((0 . "insert") (66 . 1))))
  4.     (progn
  5.       (setq lst         (mapcar
  6.                    '(lambda (x)
  7.                       (list (xdrx_getpropertyvalue
  8.                               (car (xdrx_getpropertyvalue
  9.                                      x
  10.                                      "AttributeEntities"
  11.                                    )
  12.                               )
  13.                               "textstring"
  14.                             )
  15.                             x
  16.                       )
  17.                     )
  18.                    (xdrx_pickset->ents ss)
  19.                  ) ;_构造表
  20.             lst         (xd::list:groupbyindex lst 0) ;_分组
  21.             nlst (mapcar 'cadr lst)
  22.             lst         (mapcar '(lambda (x)
  23.                             (list (car x) (itoa (length (cdr x))))
  24.                           )
  25.                          lst
  26.                  )
  27.       )
  28.       (if (setq p (getpoint "\nInsert Point: "))
  29.         (progn
  30.           (setq        i   1
  31.                 lst (mapcar '(lambda (x / l)
  32.                                (setq l (list (itoa i) " " (car x) (cadr x) " ")
  33.                                      i (1+ i)
  34.                                )
  35.                                i
  36.                                1
  37.                                l
  38.                              )
  39.                             lst
  40.                     )
  41.                 lst (cons '("序号" "图块" "图块名" "数量" "备注") lst)
  42.                 tb  (XD::Table:Make lst p 800. 300.)
  43.           )
  44.           (XD::Table:begin tb)
  45.           (xdrx_table_setcolumnwidth
  46.             tb
  47.             2
  48.             (+ (xdrx_table_columnwidth tb 2) 400.)
  49.           )
  50.           (xdrx_table_setcolumnwidth
  51.             tb
  52.             1
  53.             (+ (xdrx_table_columnwidth tb 2) 200.)
  54.           )
  55.           (xdrx_table_setcolumnwidth
  56.             tb
  57.             0
  58.             (+ (xdrx_table_columnwidth tb 2) 2.)
  59.           )
  60.           (xdrx_table_setcolumnwidth
  61.             tb
  62.             3
  63.             (+ (xdrx_table_columnwidth tb 2) 2.)
  64.           )
  65.           (xdrx_table_setcolumnwidth
  66.             tb
  67.             4
  68.             (+ (xdrx_table_columnwidth tb 2) 10.)
  69.           )
  70.           (xdrx_table_setalignment (entlast) 1 5)
  71.           (xdrx_table_setalignment (entlast) 4 5)
  72.           (vl-catch-all-apply
  73.             'vla-put-RepeatTopLabels
  74.             (list (vlax-ename->vla-object tb) :vlax-true)
  75.           ) ;_重复标题
  76.           (xdrx_table_settextstring tb 0 0 "数量统计表")
  77.           (setq i 1)
  78.           (mapcar
  79.             '(lambda (x)
  80.                (xdrx_table_setblockid tb (setq i (1+ i)) 1 x t)
  81.              )
  82.             (mapcar
  83.               '(lambda (a)
  84.                  (cadr (xdrx_getpropertyvalue a "BlockTableRecord"))
  85.                )
  86.               nlst
  87.             )
  88.           )
  89.           (XD::Table:end tb)
  90.         )
  91.       )
  92.     )
  93.   )
  94.   (XD::End)
  95.   (princ)
  96. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

 楼主| 发表于 2014-11-22 16:28:39 | 显示全部楼层
谢谢~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

 楼主| 发表于 2014-11-22 16:49:50 | 显示全部楼层
  1. (mapcar '(lambda (x)  (xdrx_table_setblockid  tb  (setq i (1+ i))  1   x   t )  )  nlst )
nlst为图元名表为什么要转换成
  1. (mapcar
  2.               '(lambda (a)
  3.                  (cadr (xdrx_getpropertyvalue a "BlockTableRecord"))
  4.                )
  5.               nlst
  6.             )
复制代码
才可以?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-22 17:04:48 | 显示全部楼层
前面的图元表是 AcDbBlockReference ,Table 中插入块需要 AcDbBlockTableRecord
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2018-10-27 15:41:02 | 显示全部楼层
谢谢~~~~~~~~~~~~~~~~~~~~~~~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2018-10-31 00:04:36 | 显示全部楼层
感谢分享。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2018-11-2 09:53:18 | 显示全部楼层
如果不是块能不能分类统计?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-23 16:15 , Processed in 0.370133 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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