找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4104|回复: 14

[图块] 块内复制

[复制链接]
发表于 2014-9-28 13:25:35 | 显示全部楼层 |阅读模式
  • 插件名称 : 块内复制
  • 作  者 : SZSU
  • 运行环境 :OpenDCL 
  • 发布时间 :2014-09-28
  • 命令名称 :bcopy
  • 插件介绍 :可任意复制块内的内容
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

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

插件详细内容

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

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

×
(defun c:bcopy (/ e el ss *error*)
  (defun *error* (msg) (command ".erase" ss "") (princ))
  (setq ss (ssadd))
  (while (setq e (nentselp "\n选择块内实体: "))
    (setq el (entget (car e)))
    (cond ((ssmemb (car e) ss)
    (entdel (car e))
   )
   (t
    (entmake el)
    (if (= (length e) 4)
      (vla-transformby
        (vlax-ename->vla-object (entlast))
        (vlax-tmatrix (caddr e))
      )
    )
    (ssadd (entlast) ss)
   )
    )
    (sssetfirst nil ss)
  )
  (cond ((and (> (sslength ss) 0)
       (setq P1 (getpoint "\n指定基点<原位置>:"))
  )
  (command ".move" "non" P1)
  (while (/= 0 (getvar "cmdactive"))
    (command "\\")
  )
)
  )
  (princ)
)
(defun c:add_to_blk (/ blk bn bname mat ss ssl)
  (if (and
(setq bn (nentselp "\n拾取图块: "))
(= (length bn) 4)  ;块
(progn
   (princ "\n选择添加实体...")
   (setq ss (ssget ))
)
      )     ;end and 条件
    (progn
      (setq bname (cdr (assoc 2 (entget (last (last bn))))) ;获取块名
     blk   (vla-item (vla-get-blocks *doc*) bname) ;获取块定义
     mat   (ea:matrix_inverse (caddr bn)) ;获取WCS->OCS矩阵
      )
      (setq ssl (mapcar 'vlax-ename->vla-object (fsxm-ss->enlist ss)))
      (foreach e ssl (vla-transformby e (vlax-tmatrix mat)))
     ;变换到块定义的UCS
      (vlax-invoke *doc* 'CopyObjects ssl blk)
      (vla-regen *doc* acActiveviewport) ;更新Insert
      (foreach e ssl (vla-delete e))
    )
  )
  (princ)
)
(defun ea:matrix_inverse (matrix / m0     m1     m2     m3
     m00  m01 m02    m03    m10    m11
     m12  m13 m20    m21    m22    m23
     _a  ea:determinant       a11    a12
     a21  a22 a33    a34    a41    a42
     a43  a13 a23    a31    a32
    )
  ;;行列式展开,计算代数余子式
  (defun ea:determinant (a00 a01 a02 a10 a11 a12 a20 a21 a22 /)
    (- (+ (* a00 a11 a22)
   (* a01 a12 a20)
   (* a02 a21 a10)
       )
       (* a02 a11 a20)
       (* a01 a10 a22)
       (* a00 a21 a12)
    )
  )
  (setq m0 (car matrix)
m1 (cadr matrix)
m2 (nth 2 matrix)
m3 (last matrix)
  )
  (setq m00 (car m0)
m01 (cadr m0)
m02 (nth 2 m0)
m03 (last m0)
  )
  (setq m10 (car m1)
m11 (cadr m1)
m12 (nth 2 m1)
m13 (last m1)
  )
  (setq m20 (car m2)
m21 (cadr m2)
m22 (nth 2 m2)
m23 (last m2)
  )
  (setq a11 (ea:determinant m11 m12 m13 m21 m22 m23 0.0 0.0 1.0)
a12 (- (ea:determinant m10 m12 m13 m20 m22 m23 0.0 0.0 1.0))
a13 (ea:determinant m10 m11 m13 m20 m21 m23 0.0 0.0 1.0)
a21 (- (ea:determinant m01 m02 m03 m21 m22 m23 0.0 0.0 1.0))
a22 (ea:determinant m00 m02 m03 m20 m22 m23 0.0 0.0 1.0)
a23 (- (ea:determinant m00 m01 m03 m20 m21 m23 0.0 0.0 1.0))
a31 (ea:determinant m01 m02 m03 m11 m12 m13 0.0 0.0 1.0)
a32 (- (ea:determinant m00 m02 m03 m10 m12 m13 0.0 0.0 1.0))
a33 (ea:determinant m00 m01 m03 m10 m11 m13 0.0 0.0 1.0)
a41 (- (ea:determinant m01 m02 m03 m11 m12 m13 m21 m22 m23))
a42 (ea:determinant m00 m02 m03 m10 m12 m13 m20 m22 m23)
a43 (- (ea:determinant m00 m01 m03 m10 m11 m13 m20 m21 m23))
  )
  (list (list a11 a21 a31 a41)
(list a12 a22 a32 a42)
(list a13 a23 a33 a43)
'(0.0 0.0 0.0 1.0)
  )
)

评分

参与人数 1D豆 +10 收起 理由
XDSoft + 10 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2014-10-13 10:50:19 | 显示全部楼层
这个好像就是EXPRESS里的NCOPY吧,高版本CAD已经集成了该命令!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 2 反对 0

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-9-28 13:58:23 | 显示全部楼层
以后发布插件做个动画演示吧,看下链接 : http://bbs.xdcad.net/forum.php?m ... &extra=page%3D1

点评

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2014-9-28 20:33:35 | 显示全部楼层
XDSoft 发表于 2014-9-28 13:58
以后发布插件做个动画演示吧,看下链接 : http://bbs.xdcad.net/forum.php?mod=viewthread&tid=667674&ext ...

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

使用道具 举报

已领礼包: 5601个

财富等级: 富甲天下

发表于 2014-9-29 08:23:28 | 显示全部楼层
c:bcopy中有错误——所选实体不能移出
缺少函数:fsxm-ss->enlist
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 43个

财富等级: 招财进宝

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 812个

财富等级: 财运亨通

发表于 2018-1-22 16:23:21 | 显示全部楼层

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

使用道具 举报

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

使用道具 举报

已领礼包: 47个

财富等级: 招财进宝

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 21:01 , Processed in 0.332813 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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