设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 209|回复: 9

[统计] 多段线距离编号统计(第二版)

[复制链接]

签到天数: 1194 天

连续签到: 53 天

[LV.10]以坛为家III

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-8-2 23:59:12 | 显示全部楼层 |阅读模式
  • 插件名称 : 距离编号表
  • 作  者 : newer
  • 运行环境 :XDRX API 晓东工具箱 
  • 发布时间 :2018-08-02
  • 命令名称 :XDTB_POLYSUMDIS
  • 插件介绍 :多段线距离编号统计
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

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

插件详细内容

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

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

x
本帖最后由 newer 于 2018-8-3 00:08 编辑


  1. (defun c:XDTB_POLYSUMDIS (/        ang   blk   dir          dis        e     i
  2.                           key        len   ml    p          p1        pnt   prefix
  3.                           scl        ss    str   vertices        x     len w
  4.                          )
  5.   (defun _callback (key)
  6.     (cond
  7.       ((= key "D")
  8.        (if (setq
  9.              len (getreal (xdrx_prompt "\n引线长度<" #dog-len ">:" t))
  10.            )
  11.          (setq #dog-len len)
  12.        )
  13.       )
  14.       ((= key "S")
  15.        (if (setq len
  16.                   (getreal (xdrx_prompt "\n基线水平长度<" #dog-len1 ">:" t)
  17.                   )
  18.            )
  19.          (setq #dog-len1 len)
  20.        )
  21.       )
  22.       ((= key "H")
  23.        (if (setq len
  24.                   (getreal (xdrx_prompt "\n文字高度<" #dog-txtheight ">:" t)
  25.                   )
  26.            )
  27.          (setq #dog-txtheight len)
  28.        )
  29.       )
  30.       ((= key "I")
  31.        (if (/= (setq len (getstring
  32.                            (xdrx_prompt "\n编号前缀<" #dog-prefix ">:" t)
  33.                          )
  34.                )
  35.                ""
  36.            )
  37.          (setq #dog-prefix len)
  38.        )
  39.       )
  40.     )
  41.     (_prompt)
  42.   )
  43.   (defun _prompt ()
  44.     (xdrx_prompt
  45.       "\n当前设置:编号前缀("                      #dog-prefix
  46.       ") 字高("                  #dog-txtheight      ") / 引线长度("
  47.       #dog-len                  ") / 水平段长度("   #dog-len1
  48.       ")"
  49.      )
  50.   )
  51.   (defun _makeMleader (e p str)
  52.     (if        (not (setq blk (xdrx_object_get "block" "_dotblank")))
  53.       (setq blk (xdrx_document_makeablock "_dotblank"))
  54.     )
  55.     (setq dir (xdrx_curve_getfirstderiv e p)
  56.           ang (xdrx_vector_angle dir)
  57.           ang (xd::ucs:angle)
  58.           p1  (polar p (+ ang (/ pi 4.0)) #dog-len)
  59.     )
  60.     (setq ml (xdrx_mleader_make
  61.                p
  62.                p1
  63.                str
  64.                (* #dog-txtheight (xd::var:getratio))
  65.              )
  66.     )
  67.     (xdrx_mtext_make
  68.       '(0 0 0)
  69.       str
  70.       100.0
  71.       (* #dog-txtheight (xd::var:getratio))
  72.     )
  73.     (setq scl (xd::var:getratio))
  74.     (xdrx_setpropertyvalue
  75.       ml
  76.       "mtext"
  77.       (entlast)
  78.       "dogleglength"
  79.       (* #dog-len1 scl)
  80.       "scale"
  81.       (xd::var:getscaleratio)
  82.       "landinggap"
  83.       (* (/ #dog-txtheight 2.0) scl)
  84.       "arrowsize"
  85.       (* (/ #dog-txtheight 1.0) scl)
  86.       "ArrowSymbolId"
  87.       blk
  88.       "textattachmenttype"
  89.       6
  90.     )                                        ;(xdrx_entity_delete (entlast))
  91.   )
  92.   (defun _dim (e)
  93.     (setq vertices (xdrx_getpropertyvalue e "vertices"))
  94.     (setq i -1)
  95.     (xd::text:init 1)
  96.     (xd::dim:init)
  97.     (setq lst nil)
  98.     (repeat (length vertices)
  99.       (setq pnt           (nth (setq i (1+ i)) vertices)
  100.             dis           (if (and (> i 0) (equal pnt (car vertices)))
  101.                      (xdrx_getpropertyvalue e "length")
  102.                      (xdrx_curve_getdistatpoint e pnt)
  103.                    )
  104.             prefix (xdrx_string_format "%s%d" #dog-prefix (1+ i))
  105.             len           (- dis
  106.                       (if (= i 0)
  107.                         0.0
  108.                         (xdrx_curve_getdistatpoint e (nth (1- i) vertices))
  109.                       )
  110.                    )
  111.             len           (xdrx_string_format "%.1f" len)
  112.             dis           (xdrx_string_format "%.1f" dis)
  113.             str           (strcat "\\pxqc;" prefix "\\P\\pq*;" len "\\P\\pq*;" dis)
  114.             lst           (cons (list (1+ i) prefix len dis) lst)
  115.       )
  116.       (_makeMleader e pnt str)
  117.       (if (and (> i 0) (equal pnt (car vertices) 1e-5))
  118.         (xdrx_setpropertyvalue (entlast) "Quadrant" 2)
  119.       )
  120.     )
  121.     (if        (setq pt (getpoint "\n表格插入点<退出>:"))
  122.       (progn (setq lst (reverse lst))
  123.              (setq lst (cons (list "多段线顶点距离编号统计表" nil nil nil)
  124.                              (cons (list "顶 点" "编 号" "本段长度" "距 离") lst)
  125.                        )
  126.              )
  127.              (setq w (* (xd::var:getratio) #dog-txtheight))
  128.              (xd::table:makefromlist lst pt w (/ w 2.0))
  129.       )
  130.     )
  131.     (princ)
  132.   )
  133.   (xd::doc:checkacadversion '> "17.0" "")
  134.   (xdrx_begin)
  135.   (xdrx_initssget
  136.     "\n选取要标注的多段线[编号前缀(I)/字高(H)/引线长度(D)/水平长度(S)]<退出>:"
  137.     "H I D S"
  138.     ""
  139.     "_callback"
  140.   )
  141.   (xdrx_initget "H I D S")
  142.   (if (not #dog-len)
  143.     (setq #dog-len 10.0)
  144.   )
  145.   (if (not #dog-len1)
  146.     (setq #dog-len1 2.0)
  147.   )
  148.   (if (not #dog-prefix)
  149.     (setq #dog-prefix "A")
  150.   )
  151.   (if (not #dog-txtheight)
  152.     (setq #dog-txtheight 3.5)
  153.   )
  154.   (_prompt)
  155.   (if (setq ss (xdrx_ssget '((0 . "LWPOLYLINE"))))
  156.     (progn
  157.       (mapcar '(lambda (x) (_dim x)) (xdrx_pickset->ents ss))
  158.     )
  159.   )
  160.   (xdrx_end)
  161.   (princ)
  162. )


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

签到天数: 104 天

连续签到: 1 天

[LV.6]常住居民II

已领礼包: 61个

财富等级: 招财进宝

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

使用道具 举报

签到天数: 104 天

连续签到: 1 天

[LV.6]常住居民II

已领礼包: 61个

财富等级: 招财进宝

发表于 2018-8-3 08:30:56 | 显示全部楼层
本帖最后由 zhangfaren 于 2018-8-3 08:34 编辑

报告N版,刚刚试用了一下,发现多段线编号貌似都是用字母A来编号的,能不能改成以数字顺序从小到大的方式来编号,比如按照A、B、C。。。的顺序。
TIM截图20180803082819.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 47 天

连续签到: 3 天

[LV.5]常住居民I

已领礼包: 68个

财富等级: 招财进宝

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

使用道具 举报

签到天数: 570 天

连续签到: 5 天

[LV.9]以坛为家II

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-8-3 09:32:11 | 显示全部楼层
zhangfaren 发表于 2018-8-3 08:30
报告N版,刚刚试用了一下,发现多段线编号貌似都是用字母A来编号的,能不能改成以数字顺序从小到大的方式来 ...

运行时候,看命令行提示,输入I,改前缀

点评

您说的这个我看到了,每根多段线单独统计的时候可以这样子,多根一起批量统计的时候,貌似就不行了!  详情 回复 发表于 2018-8-3 10:31
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 701 天

连续签到: 186 天

[LV.9]以坛为家II

已领礼包: 1595个

财富等级: 堆金积玉

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

使用道具 举报

签到天数: 73 天

连续签到: 2 天

[LV.6]常住居民II

已领礼包: 99个

财富等级: 招财进宝

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

使用道具 举报

签到天数: 104 天

连续签到: 1 天

[LV.6]常住居民II

已领礼包: 61个

财富等级: 招财进宝

发表于 2018-8-3 10:31:56 | 显示全部楼层
marting 发表于 2018-8-3 09:32
运行时候,看命令行提示,输入I,改前缀

您说的这个我看到了,每根多段线单独统计的时候可以这样子,多根一起批量统计的时候,貌似就不行了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 1211 天

连续签到: 192 天

[LV.10]以坛为家III

已领礼包: 3358个

财富等级: 富可敌国

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

使用道具 举报

签到天数: 27 天

连续签到: 1 天

[LV.4]偶尔看看III

已领礼包: 25个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2018-12-13 20:44 , Processed in 0.114214 second(s), 48 queries , Gzip On, WinCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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