找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3073|回复: 2

[工具] 自动标注剪力墙边缘构件详图表中纵向钢筋的面积

[复制链接]

已领礼包: 199个

财富等级: 日进斗金

发表于 2020-6-22 17:50:34 | 显示全部楼层 |阅读模式
  • 插件名称 : 自动标注剪力墙边缘构件详图表中纵向钢筋的面积
  • 作  者 : dyjwyqz950803
  • 运行环境 :XDRX API 
  • 发布时间 :2020-06-22
  • 命令名称 :mj-jlqzj
  • 插件介绍 :自动寻找每个详图中最下面的纵向钢筋进行面积标注
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

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

插件详细内容

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

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

×
本帖最后由 dyjwyqz5221 于 2020-6-23 08:05 编辑

使用的前提条件:
1、表格边框均为闭合多段线:’((0 . "LWPOLYLINE")(8 . "0-表格线框")(90 . 4)(-4 . "&=")(70 . 1))
2、纵向钢筋符号的格式应为:"%%132%%140R%%141|%%130%%140RH%%141|%%130|%%131|%%132|%%133"中的一种。
不是这种格式时,可以更换字体并替换。有空再发钢筋符号的替换程序。

每个详图仅标注最下面的钢筋面积,其余均不标注。

[Actionscript3] 纯文本查看 复制代码
(defun c:mj-jlqzj(/ ss-tab)
        ;;;钢筋圆面积
        (defun Circle_Area(dia)
                (* pi dia dia 0.25)
        );;;defun
        ;;;计算钢筋面积字符串,里面有多个及括号时,均适用,+、/号时相加
        (defun yqz::reBarArea(e / str lst)
                (setq str (xdrx_string_regexpr "\\s+|[\\(\\(\\[\\{\\<\\《\\{\\【]([^%]+)[\\)\\)\\]\\}\\>\\》\\}\\】]" (xdrx_text_string e) "" "")
                        str (xdrx_string_regexpr "%%132%%140R%%141|%%130%%140RH%%141|%%130|%%131|%%132|%%133" str "x" "")
                        str (xdrx_string_regexps "[^\\(\\)\\[\\]\\{\\}\\<\\>\\;\\(\\)\\【\\】\\《\\》\\{\\}\\;]+" str "")
                        lst
                        (vl-remove nil
                                (mapcar
                                        '(lambda(x)
                                                 (mapcar 'atoi (xdrx_string_regexps "[0-9]+" x ""))
                                        );;;lambda(x)        
                                        str
                                );;;mapcar
                        );;;vl
                );;;setq
                (XD::LIST->STRING
                        (mapcar
                                '(lambda(x)
                                        (rtos
                                                (apply '+
                                                        (mapcar 
                                                                '(lambda(a b) 
                                                                        (* a (Circle_Area b))
                                                                )
                                                                (XD::List:ODD x) (XD::List:Even x)
                                                        );;;mapcar        
                                                );;;apply
                                                2 0
                                        );;;rtos
                                );;;lambda
                                lst
                        );;;mapcar
                        ";"
                )        
        );;;defun        
        (defun _pross(ss-tab / lst)
                (xdrx_begin)
                (xdrx_sysvar_push '("osmode" 0 "cmdecho" 0));;;捕捉和命令关闭
                (xdrx_runtime t)
                (mapcar
                        '(lambda(x / box ss-zj)
                                (setq box (xdrx_entity_box x)
                                        ss-zj (ssget "wp" box '((0 . "text")(1 . "~*[@NG-]*")(1 . "*%%*")))
                                );;;setq
                                (if ss-zj
                                        (setq e-zj
                                                (car
                                                        (vl-sort (xdrx_pickset->ents ss-zj)
                                                                '(lambda(a b)
                                                                        (< (cadr (xdrx_GetPropertyValue a "position"))
                                                                                (cadr (xdrx_GetPropertyValue b "position"))
                                                                        )
                                                                )
                                                        )
                                                )
                                                lst (cons e-zj lst)
                                        );;;setq
                                );;;if
                        );;;lambda
                        (xdrx_pickset->ents ss-tab)
                );;;mapcar
                (if lst
                        (progn
                                (xdrx_setmark)
                                (mapcar
                                        '(lambda(x / box)
                                                (setq box (xdrx_text_box x));;;文字的世界坐标系实际包围盒
                                                (XD::Text:Make 
                                                                (list (xdrx_line_midp (car box) (cadr box)));;;取下面两个点的中点
                                                                (yqz::reBarArea x)
                                                                "yqz-style"
                                                                250.
                                                                0.70
                                                                (xdrx_GetPropertyValue x "rotation")
                                                                "TC";;;与前面的选点中上对齐
                                                )        
                                        );;;lambda(x)
                                        lst
                                );;;mapcar
                                (xdrx_entity_setproperty (xdrx_getss) "layer" "mj-jlqzj" "color" 2)
                                (xdrx_prompt "\n恭喜:共标注 "(length lst)" 处纵向钢筋面积!用时 "(xdrx_runtime)" 秒。")
                        );;;progn
                        (xdrx_prompt "\n敬告:未找到纵向钢筋!用时 "(xdrx_runtime)" 秒。")
                );;;if
                (xdrx_sysvar_pop)
                (xdrx_end)
                (princ)
        );;;while
        (while (setq ss-tab (xdrx-ssget "\n框选剪力墙边缘构件详图<右键退出>:" ":L" '((0 . "LWPOLYLINE")(8 . "0-表格线框")(90 . 4)(-4 . "&=")(70 . 1))))
                (_pross ss-tab)
        );;;while
        (princ)
);;;defun

测试图_t3.rar

1.01 MB, 下载次数: 8, 下载积分: D豆 -1 , 活跃度 1

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

已领礼包: 166个

财富等级: 日进斗金

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 21:26 , Processed in 0.445158 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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