找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 44772|回复: 324

[统计] 增强的填充面积统计报表插件

 火... [复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2016-10-31 20:46:41 | 显示全部楼层 |阅读模式
  • 插件名称 : 填充统计
  • 作  者 : Lispboy
  • 运行环境 :XDRX API 晓东工具箱 
  • 发布时间 :2016-10-31
  • 命令名称 :XDTB_TJHATCH
  • 插件介绍 :强大的填充面积统计工具
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

晓东温馨提示 1、运行环境为 晓东工具箱XDRX API 的插件,请下载最新版本的 晓东工具箱XDRX API开发环境 一键安装
2、在ACAD中如何加载插件,请看 论坛插件使用方法
3、如果您有要求需要定制插件,请到 编程申请 论坛发帖求助

插件详细内容

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

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

×
强大的填充面积统计工具,可以根据模式,图层,颜色分类统计并生成图例及统计结果。

[it618postdisplay>0][sell=30]
(defun c:XDTB_TJHATCH (/ blk clr e ha hascl head height keyword ln lst lyr
                         mode name pt row scl ss str tarea tb x y
                      )
  (defun _prompt ()
    (xdrx_prompt "\n统计方式:按*" (cond
                                     ((= #mode 0)
                                       (setq head (list "图  例" "图  层"
                                                        "数 量" "总面积"
                                                  )
                                       )
                                       "图层"
                                     )
                                     ((= #mode 1)
                                       (setq head (list "图  例" "颜色号"
                                                        "数 量" "总面积"
                                                  )
                                       )
                                       "颜色"
                                     )
                                     (t
                                       (setq head (list "图  例" "模  式"
                                                        "数 量" "总面积"
                                                  )
                                       )
                                       "模式"
                                     )
                                   ) "*"
    )
  )
  (defun _keyword (keyword)
    (cond
      ((= keyword "TC")
        (setq #mode 0)
      )
      ((= keyword "YS")
        (setq #mode 1)
      )
      (t
        (setq #mode 2)
      )
    )
    (_prompt)
  )
  (defun _name (x mode)
    (cond
      ((= mode "layer")
        (car (xdrx_getpropertyvalue x mode))
      )
      ((= mode "color")
        (setq ln (xdrx_getpropertyvalue x mode))
        (if (= ln 256)
          (progn
            (setq lyr (cadr (xdrx_getpropertyvalue x "layer")))
            (xdrx_getpropertyvalue lyr "color")
          )
          ln
        )
      )
      (t
        (xdrx_getpropertyvalue x mode)
      )
    )
  )
  (defun _maketuli (clr mode)
    (setq e (xdrx_polyline_make (xd::pnt:getrecpnts '(0 0 0) (* scl 10.)
                                                    (* 5 scl)
                                ) t
            )
    )
    (xdrx_setpropertyvalue e "constantwidth" (* scl 0.3) "color" 7)
    (setq ha (xdrx_hatch_make e))
    (xdrx_setpropertyvalue ha "color" clr "patternname" mode)
    (setq name (xdrx_prompt "XD-TJ-HA-" mode "-" clr t))
    (if (not (setq blk (xdrx_object_get "block" name)))
      (progn
        (xdrx_block_make (strcase name) (list e ha) '(0 0 0.) t)
        (xdrx_entity_delete (entlast))
        (setq blk (xdrx_object_get "block" name))
        (xdrx_draworder->back (setq ha (car (xdrx_block_getentities blk '
                                                                    (
                                                                     (0 . "HATCH")
                                                                    )
                                            )
                                       )
                              )
        )
        (if (= #mode 2)
          (progn
            (setq hascl (XD::Hatch:GetSclByGap mode (* 1.414 scl)))
            (xdrx_setpropertyvalue ha "PatternScale" hascl "patternname"
                                   (list 1 mode)
            )
          )
        )
      )
    )
    blk
  )
  (defun _makelst (ss mode)
    (setq lst (mapcar
                '(lambda (x)
                   (list (_name x mode) x)
                 )
                (xdrx_pickset->ents ss)
              )
    )
  )
  (defun _getHa (str)
    (cond
      ((= #mode 0)
        (setq e (ssget "x" (list (cons 8 str) '(0 . "HATCH")))
              e (ssname e 0)
              clr (xdrx_getpropertyvalue e "color" t)
        )
        (_makeTuLi clr "SOLID")
      )
      ((= #mode 1)
        (_makeTuLi str "SOLID")
      )
      (t
        (setq e (ssget "x" (list (cons 2 str)))
              e (ssname e 0)
              clr (xdrx_getpropertyvalue e "color" t)
        )
        (_makeTuLi clr str)
      )
    )
  )
  (defun _data ()
    (cond
      ((= #mode 0)
        (setq lst (_makelst ss "layer"))
      )
      ((= #mode 1)
        (setq lst (_makelst ss "color"))
      )
      (t
        (setq lst (_makelst ss "patternname"))
      )
    )
    (setq lst (xd::list:groupbyindex lst 1e-3)
          lst (vl-sort lst '(lambda (x y)
                              (< (car x) (car y))
                            )
              )
          lst (mapcar
                '(lambda (x)
                   (list (_getHa (car x)) (car x) (length (cdr x))
                         (rtos (apply
                                 '+
                                 (mapcar
                                   '(lambda (y)
                                      (xdrx_getpropertyvalue y "area")
                                    )
                                   (cdr x)
                                 )
                               ) 2 1
                         )
                   )
                 )
                lst
              )
          lst (cons head lst)
          lst (cons (list "填充面积统计表" "" "" "") lst)
          tarea (mapcar
                  'last
                  lst
                )
          tarea (apply
                  '+
                  (mapcar
                    'atof
                    (cddr tarea)
                  )
                )
          lst (append
                lst
                (list (list "" "合  计" "" (rtos tarea 2 1)))
              )
    )
  )
  (defun _table ()
    (if (setq pt (getpoint "\n表格插入点<退出>:"))
      (progn
        (xd::text:init 1)
        (setq tb (XD::Table:MakeFromList lst pt #height (/ #height 2.0)))
        (setq row (1- (length lst)))
        (xdrx_table_MergeCells tb row row 0 1)
        (xdrx_table_SetTextString tb row 0 "合    计")
        (xdrx_setpropertyvalue tb "color" 7)
      )
    )
  )
  (xdrx_begin)
  (xdrx_sysvar_push '("dimzin" 0))
  (if (not #mode)
    (setq #mode 0)
  )
  (if (not #height)
    (setq #height 4.)
  )
  (setq scl (* (xd::var:getratio) (xd::var:getscaleratio)))
  (if (setq height (getreal (strcat (xdrx_prompt "\n表格字高<" #height ">:"
                                                 t
                                    )
                            )
                   )
      )
    (setq #height height)
  )
  (if (and
        (_prompt)
        (xdrx_initssget "\n选取要统计的填充[图层(TC)/颜色(YS)/模式(MS)]<退出>:"
                        "TC YS MS" "移除不统计的填充[添加(A)]<退出>:"
                        "_keyword" ""
        )
        (setq ss (xdrx_ssget '((0 . "HATCH"))))
      )
    (progn
      (setq lst (_data))
      (_table)
    )
  )
  (xdrx_sysvar_pop)
  (xdrx_end)
  (princ)
)

[/sell][/it618postdisplay]

点评

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

已领礼包: 34个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 8612个

财富等级: 富甲天下

发表于 2016-10-31 23:13:11 | 显示全部楼层
本帖最后由 liuyj 于 2016-10-31 23:15 编辑

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-10-31 23:18:07 | 显示全部楼层

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

使用道具 举报

已领礼包: 8991个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 1757个

财富等级: 堆金积玉

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

使用道具 举报

已领礼包: 678个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 66个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 770个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 1304个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 112个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 1441个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 161个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 464个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 13个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 18:17 , Processed in 0.528048 second(s), 65 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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