找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2501|回复: 10

[图块] 增强Ncopy命令,从XREF,INSERT里面多选“抠出”实体

[复制链接]

已领礼包: 145个

财富等级: 日进斗金

发表于 2018-7-21 15:55:43 | 显示全部楼层 |阅读模式
  • 插件名称 : 抠出实体
  • 作  者 : XDSoft
  • 运行环境 :XDRX API 晓东工具箱 
  • 发布时间 :2018-07-21
  • 命令名称 :xdtb_copyn
  • 插件介绍 :增强Ncopy命令,从XREF,INSERT里面多选“抠出”实体
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

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

插件详细内容

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

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

×
  1. (defun XD::Block:Select        (ent   pts   sel   filter      /     box
  2.                          cname e     elist lst         m_b2w m_w2b n
  3.                          ob    pts2  x
  4.                         )
  5.   (if (and (setq cname (xdrx_object_classname ent))
  6.            (eq (car cname) "INSERT")
  7.       )
  8.     (progn
  9.       (setq m_b2w (xdrx_matrix_block2wcs ent)
  10.             m_w2b (xdrx_matrix_inverse m_b2w)
  11.             pts          (mapcar '(lambda (x) (trans x 1 0)) pts)
  12.             pts2  (mapcar
  13.                     '(lambda (x) (trans (xdrx_point_transform x m_w2b) 0 1))
  14.                     pts
  15.                   )
  16.             lxd          pts2
  17.       )
  18.       (setq blk          (cadr (xdrx_getpropertyvalue ent "blocktablerecord"))
  19.             elist (xdrx_block_getentities blk)
  20.       )
  21.       (foreach n elist
  22.         (if
  23.           (or (not filter)
  24.               (and filter
  25.                    (vl-every '(lambda (x) (member x (entget e))) filter)
  26.               )
  27.           )                                ; 过滤表
  28.            (progn
  29.              (setq box (xdrx_entity_box n))
  30.              (cond
  31.                ((= "C" (strcase sel))        ; _ 交叉窗交
  32.                 (if (vl-some '(lambda (x) (xdrx_point_isinside x pts2))
  33.                              box
  34.                     )                        ; _ 文字四角点中任一点落在多边形内即被选中
  35.                   (progn (setq lst (cons n lst)))
  36.                 )
  37.                )
  38.                (t
  39.                 (if (vl-every
  40.                       '(lambda (x) (apply 'xdrx_isinside (cons x pts2)))
  41.                       box
  42.                     )                        ; _ 文字四角点全部落在多边形内即被选中
  43.                   (setq lst (cons n lst))
  44.                 )
  45.                )
  46.              )
  47.            )
  48.         )
  49.       )
  50.     )
  51.   )
  52.   lst
  53. )
  54. (defun c:XDTB_CopyN
  55.        (/ e elist m_b2w n p1 p2 pt4 pts4 sel ss e1 box pj mat)
  56.   (xdrx_begin)
  57.   (if
  58.     (and
  59.       (setq e (car (xdrx_entsel
  60.                      "\n拾取要拷贝的INSERT或XREF实体<退出>: "
  61.                      '((0 . "insert"))
  62.                    )
  63.               )
  64.       )
  65.       (setq m_b2w (xdrx_matrix_block2wcs e))
  66.       (progn
  67.         (xdrx_initget "C W S")
  68.         (if (not (setq sel (getkword
  69.                              "\n选择方式[交叉(C)/窗口(W)/拾取多边形(S)]<C>"
  70.                            )
  71.                  )
  72.             )
  73.           (setq sel "C")
  74.         )
  75.         t
  76.       )
  77.       (cond ((= sel "S")
  78.              (if (and (setq e1 (car (xdrx_entsel
  79.                                       "\n拾取曲线作为边界<退出>:"
  80.                                       '((0 . "*line,arc,circle,ellipse"))
  81.                                     )
  82.                                )
  83.                       )
  84.                       (setq pts4 (xdrx_getsamplept e1))
  85.                  )
  86.                (progn (if (and (xdrx_initget "Y N")
  87.                                (= (xdrx_yesorno "\n交叉CP?" 1) 1)
  88.                           )
  89.                         (setq sel "C")
  90.                         (setq sel "W")
  91.                       )
  92.                  (setq pts4 (xd::pnts:wcs2ucs pts4))
  93.                )
  94.                (progn (princ "\n没有选择到曲线.") nil)
  95.              )
  96.             )
  97.             (t
  98.              (setq p1 (getpoint "\n拷贝范围窗口第一点<退出>:"))
  99.              (setq p2 (getcorner p1 "\n窗口第二点<退出>:"))
  100.              (setq pts4
  101.                     (list p1
  102.                           (mapcar '+ p1 (list (car (mapcar '- p2 p1)) 0 0))
  103.                           p2
  104.                           (mapcar '+ p1 (list 0 (cadr (mapcar '- p2 p1)) 0))
  105.                     )
  106.              )
  107.             )
  108.       )
  109.       (setq elist (XD::Block:Select e pts4 sel nil))
  110.     )
  111.      (progn (setq ss (ssadd))
  112.             (foreach n elist
  113.               (xdrx_entity_transformedcopy n m_b2w)
  114.               (ssadd (entlast) ss)
  115.             )
  116.             (xdrx_pickset_redraw ss)
  117.             (xd::drag:simpleMove ss "\n拾取插入点<退出>:" 5 t)
  118.      )
  119.   )
  120.   (xdrx_end)
  121.   (princ)
  122. )


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

使用道具 举报

已领礼包: 34个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 160个

财富等级: 日进斗金

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

使用道具 举报

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

使用道具 举报

已领礼包: 14个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 14个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 201个

财富等级: 日进斗金

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

使用道具 举报

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

使用道具 举报

已领礼包: 5个

财富等级: 恭喜发财

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 20:09 , Processed in 0.210548 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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