找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 30897|回复: 193

[多段线] 多段线(根据线型、线宽、图层、颜色)分类统计生成 表格

 火.. [复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2016-10-21 01:07:46 | 显示全部楼层 |阅读模式
  • 插件名称 : 线长统计
  • 作  者 : Lispboy
  • 运行环境 :XDRX API 晓东工具箱 
  • 发布时间 :2016-10-21
  • 命令名称 :XDTB_TJPLINE
  • 插件介绍 :根据颜色、图层、线宽、线型分类统计多段线长度
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

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

插件详细内容

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

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

×
本帖最后由 Lispboy 于 2016-11-11 15:03 编辑

根据颜色、图层、线宽、线型分类统计多段线长度,颜色随层、线型随层的按层的设置的实际颜色和线型进行统计。

用到的函数 XD::Table:ListIndexValues 有更新,下载地址:http://bbs.xdcad.net/thread-704753-1-1.html

[it618postdisplay>0][sell=20]
(defun c:XDTB_TJPLINE (/  #mode head height keyword ln lst lyr mode pt ss x y)
  (defun _prompt ()
    (xdrx_prompt "\n统计方式:按*" (cond
                                     ((= #mode 0)
                                       (setq head (list "图  层" "数 量"
                                                        "总 长"
                                                  )
                                       )
                                       "图层"
                                     )
                                     ((= #mode 1)
                                       (setq head (list "颜色号" "数 量"
                                                        "总 长"
                                                  )
                                       )
                                       "颜色"
                                     )
                                     ((= #mode 2)
                                       (setq head (list "宽  度" "数 量"
                                                        "总 长"
                                                  )
                                       )
                                       "宽度"
                                     )
                                     (T
                                       (setq head (list "线  型" "数 量"
                                                        "总 长"
                                                  )
                                       )
                                       "线型"
                                     )
                                   ) "*"
    )
  )
  (defun _keyword (keyword)
    (cond
      ((= keyword "TC")
        (setq #mode 0)
      )
      ((= keyword "YS")
        (setq #mode 1)
      )
      ((= keyword "KD")
        (setq #mode 2)
      )
      (t
        (setq #mode 3)
      )
    )
    (_prompt)
  )
  (defun _name (x mode)
    (cond
      ((= mode "layer")
        (car (xdrx_getpropertyvalue x mode))
      )
      ((= mode "linetype")
        (setq ln (car (xdrx_getpropertyvalue x mode)))
        (if (= ln "ByLayer")
          (progn
            (setq lyr (cadr (xdrx_getpropertyvalue x "layer")))
            (car (xdrx_getpropertyvalue lyr "linetype"))
          )
          ln
        )
      )
      ((= 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 _makelst (ss mode)
    (setq lst (mapcar
                '(lambda (x)
                   (list (_name x mode) x)
                 )
                (xdrx_pickset->ents ss)
              )
    )
  )
  (defun _data ()
    (cond
      ((= #mode 0)
        (setq lst (_makelst ss "layer"))
      )
      ((= #mode 1)
        (setq lst (_makelst ss "color"))
      )
      ((= #mode 2)
        (setq lst (_makelst ss "ConstantWidth"))
      )
      (t
        (setq lst (_makelst ss "linetype"))
      )
    )
    (setq lst (xd::list:groupbyindex lst 1e-3)
          lst (vl-sort lst '(lambda (x y)
                              (< (car x) (car y))
                            )
              )
          lst (mapcar
                '(lambda (x)
                   (list (vl-princ-to-string (car x)) (vl-princ-to-string (length (cdr x))) (rtos (apply
                                                          '+
                                                          (mapcar
                                                            '
                                                            (lambda
                                                              (y)
                                                              (xdrx_getpropertyvalue y "length")
                                                            )
                                                            (cdr x)
                                                          )
                                                        ) 2 1
                                                  )
                   )
                 )
                lst
              )
          lst (cons head lst)
          lst (cons (list "多段线长度统计" "" "") lst)
    )
  )

  (defun _table ()
    (if (setq pt (getpoint "\n表格插入点<退出>:"))
      (progn
        (xd::text:init 1)
        (setq lxd lst)
        (XD::Table:MakeFromList lst pt #height (/ #height 2.0))
      )
    )
  )
  (xdrx_begin)
  (xdrx_sysvar_push '("dimzin" 0))
  (if (not #mode)
    (setq #mode 0)
  )
  (if (not #height)
    (setq #height 4.)
  )
  (if (setq height (getreal (strcat (xdrx_prompt "\n表格字高<" #height ">:"
                                                 t
                                    )
                            )
                   )
      )
    (setq #height height)
  )
  (while (and
           (_prompt)
           (xdrx_initssget "\n选取要统计的多段线[图层(TC)/颜色(YS)/宽度(KD)/线型(XS)]<退出>:"
                           "TC YS KD XS"
                           "移除不统计的多段线[添加(A)]<退出>:" "_keyword"
                           ""
           )
           (setq ss (xdrx_ssget '((0 . "*POLYLINE") (-4 . ">=")
                                 (43 . 0)
                                )
                    )
           )
         )
    (setq lst (_data))
    (_table)
  )
  (xdrx_sysvar_pop)
  (xdrx_end)
  (princ)
)
[/sell][/it618postdisplay]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1757个

财富等级: 堆金积玉

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

使用道具 举报

已领礼包: 8611个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 1304个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 13个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 8727个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 770个

财富等级: 财运亨通

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 77个

财富等级: 招财进宝

发表于 2016-10-27 08:43:40 | 显示全部楼层

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

使用道具 举报

已领礼包: 496个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

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

使用道具 举报

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

使用道具 举报

已领礼包: 46个

财富等级: 招财进宝

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 02:24 , Processed in 0.467522 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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