设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 734|回复: 7

[图块] 交互提取块内实体轮廓线

[复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2016-11-22 20:58:41 | 显示全部楼层 |阅读模式
  • 插件名称 : 块内轮廓
  • 作  者 : Lispboy
  • 运行环境 :XDRX API 晓东工具箱 
  • 发布时间 :2016-11-22
  • 命令名称 :XDTB_BlockSingleBound
  • 插件介绍 :交互提取块内实体轮廓线
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

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

插件详细内容

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

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

x
本帖最后由 Lispboy 于 2016-11-22 21:01 编辑

[sell]
(defun c:XDTB_BlockSingleBound (/ blk bound bound1 e el el1 ents mat mat-b2w
                                  mat-w2b pts1 pts2 scr ss1 tf wid x yon
                               )
  (defun _getent (e / bound x)
    (mapcar
      '(lambda (x)
         (if (xdrx_entity_boundingboxintersectwith x e)
           (progn
             (xdrx_curve_union x e t)
             (xdrx_setpropertyvalue (entlast) "constantwidth" wid)
             (xdrx_object_swapid (entlast) e)
             (xdrx_entity_delete (list x (entlast)))
           )
         )
       )
      ents
    )
  )
  (xdrx_begin)
  (if (not #block_wid)
    (setq #block_wid 0.0)
  )
  (if (not #block_color)
    (setq #block_color 7)
  )
  (if (not #block_gen)
    (setq #block_gen "是")
  )
  (setq scr (xdrx_system_screenMetrics)
        scr (cadr scr)
        scr (/ scr 100)
  )
  (setq tf t)
  (xdrx_setmark)
  (setq ents nil)
  (while tf
    (xdrx_initget "C W G")
    (xdrx_prompt "\n当前设置:颜色(" #block_color ") / 宽度(" #block_wid
                 ") / 所有块生成(" #block_gen ")"
    )
    (if (setq e (nentsel "\n拾取块中要提取轮廓的多段线[颜色(C)宽度(W)/生成(G)]<退出>:"))
      (cond
        ((= e "W")
          (if (setq wid (getreal (xdrx_prompt "\n输入轮廓线宽度<" #block_wid
                                              ">:" t
                                 )
                        )
              )
            (setq #block_wid wid)
          )
        )
        ((= e "G")
          (setq yon (xdrx_yesorno "\n是否所有块生成轮廓线" 1))
          (if (= yon 1)
            (setq #block_gen "是")
            (setq #block_gen "否")
          )
        )
        ((= e "C")
          (setq #block_color (xdrx_color_select #block_color))
        )
        ((= (type e) 'LIST)
          (setq blk (car (last e))
                e (car e)
                mat-b2w (xdrx_matrix_block2wcs blk)
                pts1 (xdrx_getpropertyvalue e "vertices")
                pts2 (xdrx_points_transform pts1 mat-b2w)
          )
          (if (setq bound1 (xdrx_geom_searchoutline e wid))
            (progn
              (xdrx_entity_transform bound1 mat-b2w)
              (_getent bound1)
              (setq ents (cons bound1 ents))
              (xdrx_entity_setproperty ents "color" 1 "constantwidth" scr)
            )
            (xdrx_prompt "\n选择的实体不能生成轮廓,重选.")
          )
        )
      )
      (setq tf nil)
    )
  )
  (setq ss1 (xdrx_getss 9)
        el1 (xdrx_pickset->ents ss1)
  )
  (xdrx_entity_setproperty ss1 "color" #block_color "constantwidth" wid)
  (if (and
        ss1
        (= #block_gen "是")
      )
    (progn
      (setq el (xdrx_getpropertyvalue blk "BlockReferenceEntities"))
      (setq mat-w2b (xdrx_matrix_inverse mat-b2w))
      (mapcar
        '(lambda (x)
           (setq mat (xdrx_matrix_block2wcs x)
                 mat (xdrx_matrix_product mat mat-w2b)
           )
           (xdrx_entity_transformedcopy ss1 mat)
         )
        el
      )
    )
  )
  (xdrx_end)
  (if (setq ss1 (xdrx_getss))
    (sssetfirst nil ss1)
  )
  (princ)
)

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

已领礼包: 1304个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 87个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 6466个

财富等级: 富甲天下

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

使用道具 举报

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

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

使用道具 举报

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

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2021-3-7 16:52 , Processed in 0.153618 second(s), 37 queries , Gzip On, WinCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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