找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4549|回复: 29

[工具] 统计相同曲线(复制)数量并制表

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-3-10 19:04:38 | 显示全部楼层 |阅读模式
  • 插件名称 : 形状统计
  • 作  者 : st788796
  • 运行环境 :XDRX API 
  • 发布时间 :2014-03-10
  • 命令名称 :XDTB_CalCurve
  • 插件介绍 :对复制的Pline相同形状统计
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

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

插件详细内容

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

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

×
  1. ;;str -- string
  2. ;;h   -- height
  3. ;;scl -- 宽度比例
  4. (defun XD::String:ActualWidth (str sty h scl)
  5.   (and
  6.     (or        (not sty)
  7.         (= sty "")
  8.         (not (tblsearch "style" sty))
  9.     )
  10.     (setq sty (getvar "textstyle"))
  11.   )
  12.   (abs (car (apply
  13.               'mapcar
  14.               (cons '-
  15.                     (textbox (list (cons 1 str)
  16.                                    (cons 7 sty)
  17.                                    (cons 40 h)
  18.                                    (cons 41 scl)
  19.                              )
  20.                     )
  21.               )
  22.             )
  23.        )
  24.   )
  25. )
  26. (defun XD::String:MaxActualWidth (strl sty h scl)
  27.   (apply 'max
  28.          (mapcar '(lambda (x)
  29.                     (XD::String:ActualWidth x sty h scl)
  30.                   )
  31.                  strl
  32.          )
  33.   )
  34. )
  35. (defun XD::Table:Make (lst         p           RowHeight height
  36.                        /         _ColumnWidths             tb
  37.                        i         _widthL   _spa
  38.                       )
  39.   (defun _ColumnWidths (lst h / mL nl)
  40.     (setq mL (apply 'max (mapcar 'length lst))
  41.           nL (mapcar '(lambda (x)
  42.                         (XD::List:FillGap x " " mL)
  43.                       )
  44.                      lst
  45.              )
  46.     )
  47.     (mapcar '(lambda (x)
  48.                (XD::String:MaxActualWidth x "" h 1.)
  49.              )
  50.             (apply 'mapcar (cons 'list nL))
  51.     )
  52.   )
  53.   (if (or (null height) (= height ""))
  54.     (setq height (* RowHeight 0.4))
  55.   )
  56.   (setq        tb        (xdrx_table_make
  57.                   p
  58.                   (1+ (length lst))
  59.                   RowHeight
  60.                   (apply 'max (mapcar 'length lst))
  61.                   10.
  62.                 )
  63.         _WidthL        (_ColumnWidths lst height)
  64.         _spa        (* 4 (xdrx_table_horzCellMargin tb))
  65.   )
  66.   (XD::Table:Begin tb)
  67.   (xdrx_entity_scale tb p 0.1)
  68.   (setq i -1)
  69.   (mapcar '(lambda (x)
  70.              (xdrx_table_setcolumnwidth tb (setq i (1+ i)) x)
  71.            )
  72.           (mapcar '(lambda (a) (+ _spa a)) _WidthL)
  73.   )
  74.   (xdrx_table_setrowheight tb RowHeight)
  75.   (xdrx_table_settextheight tb 7 height)
  76.   (xdrx_table_setalignment tb 1 5)
  77.   (xdrx_table_SetGridVisibility tb 2 41 nil)
  78.   (setq i 0)
  79.   (mapcar
  80.     '(lambda (x / j)
  81.        (setq j -1
  82.              i (1+ i)
  83.        )
  84.        (mapcar '(lambda        (a)
  85.                   (xdrx_table_settextstring tb i (setq j (1+ j)) a)
  86.                 )
  87.                x
  88.        )
  89.      )
  90.     lst
  91.   )
  92.   (XD::Table:End tb)
  93.   tb
  94. )
  95. (defun c:XDTB_CalCurve (/ ss lst i p)
  96.   (princ "\n选择多义线.....")
  97.   (if (setq ss (ssget '((0 . "*polyline"))))
  98.     (progn
  99.       (setq lst        (mapcar        '(lambda (x / bp)
  100.                            (setq bp (car (xdrx_entity_box x)))
  101.                            (list (mapcar '(lambda (p)
  102.                                             (mapcar '- p bp)
  103.                                           )
  104.                                          (xdrx_entity_getstretchpoint x)
  105.                                  )
  106.                                  x
  107.                            )
  108.                          )
  109.                         (xdrx_pickset->ents ss)
  110.                 )
  111.             lst        (xd::list:groupbyindex lst 1)
  112.             lst        (mapcar 'cdr lst)
  113.       )
  114.       (XD::Begin)
  115.       (setq i        64 ;_编号数量不大於 52 个 A-Z a-z
  116.             lst        (mapcar        '(lambda (x / box p)
  117.                            (if (> 97 i 90)
  118.                              (setq i 96)
  119.                            )
  120.                            (setq i (1+ i))
  121.                            (mapcar '(lambda (a)
  122.                                       (setq box        (xdrx_entity_box a)
  123.                                             p        (xdrx_line_midp (car box) (caddr box))
  124.                                       )
  125.                                       (xdrx_text_make
  126.                                         p
  127.                                         (chr i)
  128.                                         (getvar "textsize")
  129.                                         0.
  130.                                       )
  131.                                     )
  132.                                    x
  133.                            )
  134.                            (list (chr i) (itoa (length x)))
  135.                          )
  136.                         lst
  137.                 )
  138.       )
  139.       (if (setq p (getpoint "\n插入点<回车显示>: "))
  140.         (XD::Table:make
  141.           (cons '("编号" "数量") lst)
  142.           p
  143.           8.
  144.           3.
  145.         )
  146.         (foreach x lst
  147.           (princ "\n")
  148.           (princ x)
  149.         )
  150.       )
  151.       (XD::End)
  152.     )
  153.   )
  154.   (princ)
  155. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2014-3-11 20:51:31 | 显示全部楼层
好程序,强烈支持。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-3-11 21:19:02 | 显示全部楼层
命令: xdtb
选择多义线.....
选择对象: 指定对角点: 找到 10 个

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 163个

财富等级: 日进斗金

发表于 2014-3-12 16:47:12 | 显示全部楼层
本帖最后由 西楚河神 于 2014-3-12 17:57 编辑

大师 再造一个构件统计吧DWG图纸链接
输入L或Q或者输入Z统计柱子.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-3-12 17:06:36 来自手机 | 显示全部楼层
西楚河神 发表于 2014-3-12 16:47
大师 再造一个构件统计吧

什么构件?
用GroupByIndex Table:Make造这样的表应该是一种程式了,可以自己试着写一个

点评

职业是预算.翻样 这个.......我是搞不懂.写不出 这个表是精品世家的构件统计来的....它那个要注册不太方便  详情 回复 发表于 2014-3-12 17:14
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 163个

财富等级: 日进斗金

发表于 2014-3-12 17:14:41 | 显示全部楼层
st788796 发表于 2014-3-12 17:06
什么构件?
用GroupByIndex Table:Make造这样的表应该是一种程式了,可以自己试着写一个

{:soso_e127:}职业是预算.翻样 这个.......我是搞不懂.写不出   这个表是精品世家的构件统计来的....它那个要注册不太方便
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-3-12 17:46:01 来自手机 | 显示全部楼层
西楚河神 发表于 2014-3-12 17:14
职业是预算.翻样 这个.......我是搞不懂.写不出   这个表是精品世家的构件统计来的....它那 ...

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

使用道具 举报

已领礼包: 163个

财富等级: 日进斗金

发表于 2014-3-12 18:01:00 | 显示全部楼层
7楼有样图链接  现在再附上个动画 录的有点大了,压缩了下传上来

查找,合计成表,连线定位.rar

3.49 MB, 下载次数: 27

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-3-12 18:23:57 来自手机 | 显示全部楼层
西楚河神 发表于 2014-3-12 18:01
7楼有样图链接  现在再附上个动画 录的有点大了,压缩了下传上来

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-3-12 19:14:11 | 显示全部楼层
西楚河神 发表于 2014-3-12 18:01
7楼有样图链接  现在再附上个动画 录的有点大了,压缩了下传上来

你这个还是文字统计,论坛上写过很多,用最新的 Table:Make 函数就可以出表格,连线的写过程序

当然完全仿这个也没有问题,这些文字要有一定的特征,L 包括了 Lxxxx KLxxxx LLxxx,Q 是 Q开头匹配文字,Z应该是 Z 匹配文字了

点评

只要查找后成汇总表就行 连线的不考虑, 有汇总表后的连线插件有请 Free-Lancer[/backcolor]大师 已经给写好了,在7楼的样图链接里找过去就可见插件了[/backcolor]  详情 回复 发表于 2014-3-12 22:00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-3-12 20:09:31 | 显示全部楼层
本帖最后由 st788796 于 2014-3-12 20:15 编辑
西楚河神 发表于 2014-3-12 18:01
7楼有样图链接  现在再附上个动画 录的有点大了,压缩了下传上来

统计 L 并制表
  1. (defun c:L (/ ss h lst p i tb)
  2.   (if (and (setq ss (ssget '((0 . "text") (1 . "*L*"))))
  3.            (setq p (getpoint "\nInsert Point: "))
  4.       )
  5.     (progn
  6.       (sssetfirst nil ss)
  7.       (setq h        (xdrx_getpropertyvalue (ssname ss 0) "height")
  8.             lst        (mapcar        '(lambda (x)
  9.                            (list (xdrx_getpropertyvalue x "Textstring")
  10.                                  x
  11.                            )
  12.                          )
  13.                         (xdrx_pickset->ents ss)
  14.                 )
  15.             lst        (XD::List:GroupByIndex lst 0)
  16.             i        0
  17.             lst        (mapcar        '(lambda (x)
  18.                            (list (itoa (setq i (1+ i)))
  19.                                  (car x)
  20.                                  (itoa (length (cdr x)))
  21.                            )
  22.                          )
  23.                         lst
  24.                 )
  25.             tb        (XD::Table:make
  26.                   (cons '("编号" "构件名称" "数量") lst)
  27.                   p
  28.                   (* 2.25 h)
  29.                   h
  30.                 )
  31.       )
  32.     )
  33.   )
  34.   (princ)
  35. )

把 "*L*" 换成 "Q*" 就是统计 Q

点评

刚试了 只能是查找后会亮显 要效果是:查找到后先亮显,这样可以先目测大体可检查下看看是否有漏选的,目测检查完毕后左键指定放置统计表的位置 (最好是手动输入要查找的构件关键字 比如任意形式的梁,输入"L" 任  详情 回复 发表于 2014-3-12 21:52
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 163个

财富等级: 日进斗金

发表于 2014-3-12 21:52:38 | 显示全部楼层
st788796 发表于 2014-3-12 20:09
统计 L 并制表

把 "*L*" 换成 "Q*" 就是统计 Q

刚试了 只能是查找后会亮显  要效果是:查找到后先亮显,这样可以先目测大体可检查下看看是否有漏选的,目测检查完毕后左键指定放置统计表的位置     (最好是手动输入要查找的构件关键字  比如任意形式的梁,输入"L"  任意的柱,输入"Z",只要是单行文字里包含任意输入的字母都统计汇总成表)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 20:34 , Processed in 0.253267 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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