找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5139|回复: 21

[原创] 个人编的,外部参照命令集合

[复制链接]

已领礼包: 202个

财富等级: 日进斗金

发表于 2013-9-29 10:21:25 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 sixthsixth 于 2013-10-1 18:45 编辑

个人编的,外部参照命令集合,更新了下,现在命令全了 1.png
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:外部参照命令集合-全-130930更新.rar 
下载次数:116  文件大小:6.57 KB 
下载权限: 不限 以上  [免费赚D豆]


源码如下:
Xref_V2.3.lsp

;Xref 命令:
;Reload/重载        Unload/卸载        Detach/拆离        Bind/绑定

;XFR        重载选定
;XFRA        重载所有
;XFX        卸载选定
;XFXA        卸载所有
;XFD        拆离选定
;XFDA        拆离所有
;XFB        绑定选定
;XFBA        绑定所有

; -------------------- Reload selected reference files ---------------------
; XFR  
; --------------------------------------------------------------------------
(Defun C:XFR ( )        ;定義“重载选定参照文件”命令

        (setvar "cmdecho" 0)        ;命令执行过程不回显提示和输入

          (princ "\nSelect  objects on the reference file to be Reloaded:")

          (if (setq SS (ssget))
                    (progn
                              (setq Rnames "")
                              (repeat
                                (setq I (sslength SS))
                                (setq E (ssname SS (setq I (1- I))))
                                (setq ELIST (entget E))
                                (setq Rname (cdr (assoc 2 ELIST))) ;_参照名
                                (command "-xref" "R" Rname)
                                (setq Rnames (strcat Rname ", " Rnames)) ;_strcat 连接成字符串
                              );end repeat
                              (prompt "\nFiles have been Reloaded:")
                              (princ Rnames)
                    );end progn
          );end if
        (princ)
)

(prompt "\n<重载选定参照文件> 命令:XFR  ------by sixth 2010-11-17")         ;提示如何执行程序



; ------------------- Reload all reference files ---------------------
; XFRA
; --------------------------------------------------------------------
(Defun C:XFRA ( )          ;定義“重新加载所有外部参照”命令
        (setvar "cmdecho" 0)                ;命令执行过程不回显提示和输入
        (command "-xref" "R" "*")
          (princ)
)

(prompt "\n<重新加载所有外部参照> 命令:XFRA  ------by sixth 2010-10-13")         ;提示如何执行程序



; -------------------- Unload selected reference files ---------------------
; XFX
; --------------------------------------------------------------------------
(Defun C:XFX ( )        ;定義“卸载选定参照文件”命令

        (setvar "cmdecho" 0)        ;命令执行过程不回显提示和输入

          (princ "\nSelect  objects on the reference file to be Unloaded:")

          (if (setq SS (ssget))
                    (progn
                              (setq Rnames "")
                              (repeat
                                (setq I (sslength SS))
                                (setq E (ssname SS (setq I (1- I))))
                                (setq ELIST (entget E))
                                (setq Rname (cdr (assoc 2 ELIST))) ;_参照名
                                (command "-xref" "U" Rname)
                                (setq Rnames (strcat Rname ", " Rnames)) ;_strcat 连接成字符串
                              );end repeat
                              (prompt "\nFiles have been Unloaded:")
                              (princ Rnames)
                    );end progn
          );end if
        (princ)
)

(prompt "\n<卸载选定参照文件> 命令:XFX  ------by sixth 2010-11-17")         ;提示如何执行程序



; ------------------- Unload all reference files ---------------------
; XFXA
; --------------------------------------------------------------------
(Defun C:XFXA ( )          ;定義“卸载所有外部参照”命令
        (setvar "cmdecho" 0)                ;命令执行过程不回显提示和输入
        (command "-xref" "U" "*")
          (princ)
)

(prompt "\n<卸载所有外部参照> 命令:XFXA  ------by sixth 2010-10-13")         ;提示如何执行程序




; -------------------- Detach selected reference files ---------------------
; XFD
; --------------------------------------------------------------------------

(Defun C:XFD ( )        ;定義“拆离选定参照文件”命令

        (setvar "cmdecho" 0)        ;命令执行过程不回显提示和输入

          (princ "\nSelect  objects on the reference file to be Detached:")

          (if (setq SS (ssget))
                    (progn
                              (setq Rnames "")
                              (repeat
                                (setq I (sslength SS))
                                (setq E (ssname SS (setq I (1- I))))
                                (setq ELIST (entget E))
                                (setq Rname (cdr (assoc 2 ELIST))) ;_参照名
                                (command "-xref" "Detach" Rname)
                                (setq Rnames (strcat Rname ", " Rnames)) ;_strcat 连接成字符串
                              );end repeat
                              (prompt "\nFiles have been Detached:")
                              (princ Rnames)
                    );end progn
          );end if
        (princ)
)

(prompt "\n<拆离选定参照文件> 命令:XFD  ------by sixth 2010-11-17")         ;提示如何执行程序




; ------------------- Detach all reference files ---------------------
; XFDA
; --------------------------------------------------------------------
(Defun C:XFDA ( )          ;定義“拆离所有外部参照”命令
        (setvar "cmdecho" 0)                ;命令执行过程不回显提示和输入
        (command "-xref" "Detach" "*")
          (princ)
)

(prompt "\n<拆离所有外部参照> 命令:XFDA  ------by sixth 2010-10-25")         ;提示如何执行程序




; -------------------- Bind selected reference files ---------------------
; XFB
; --------------------------------------------------------------------------

(Defun C:XFB ( )        ;定義“绑定选定参照文件”命令

        (setvar "cmdecho" 0)        ;命令执行过程不回显提示和输入

          (princ "\nSelect  objects on the reference file to be Binded:")

          (if (setq SS (ssget))
                    (progn
                              (setq Rnames "")
                        (setq oldBT (getvar "BINDTYPE"))
                        (setq BT (if (not BT) oldBT BT))
                        (setq BT_tmp
                                (getstring
                                        (strcat "输入绑定类型[绑定(0)/插入(1)]<" (itoa BT) ">: ")
                                )
                        )
                        (if (null BT_tmp) (setq BT_tmp BT))
                        (setq BT (atoi BT_tmp))
                        (setvar "BINDTYPE" BT)
                              (repeat
                                (setq I (sslength SS))
                                (setq E (ssname SS (setq I (1- I))))
                                (setq ELIST (entget E))
                                (setq Rname (cdr (assoc 2 ELIST))) ;_参照名
                                (command "-xref" "Bind" Rname)
                                (setq Rnames (strcat Rname ", " Rnames)) ;_strcat 连接成字符串
                              );end repeat
                        (setvar "BINDTYPE" oldBT)
                              (prompt "\nFiles have been Binded:")
                              (princ Rnames)
                    );end progn
          );end if
        (princ)
)

(prompt "\n<绑定选定参照文件> 命令:XFB  ------by sixth 2013-09-29")         ;提示如何执行程序




; ------------------- Bind all reference files ---------------------
; XFBA
; --------------------------------------------------------------------
(Defun C:XFBA ( )          ;定義“绑定所有外部参照”命令
        (setvar "cmdecho" 0)                ;命令执行过程不回显提示和输入
        (setq oldBT (getvar "BINDTYPE"))
        (setq BT (if (not BT) oldBT BT))
        (setq BT_tmp
                (getstring
                        (strcat "输入绑定类型[绑定(0)/插入(1)]<" (itoa BT) ">: ")
                )
        )
        (if (null BT_tmp) (setq BT_tmp BT))
        (setq BT (atoi BT_tmp))
        (setvar "BINDTYPE" BT)
        (command "-xref" "Bind" "*")
        (setvar "BINDTYPE" oldBT)
          (princ)
)

(prompt "\n<绑定所有外部参照> 命令:XFBA  ------by sixth 2013-09-29")         ;提示如何执行程序


评分

参与人数 3D豆 +15 收起 理由
/db_自贡黄明儒_ + 5 很给力!经验;技术要点;资料分享奖!
newer + 5
xshrimp + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 391个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 1034个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

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

使用道具 举报

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

使用道具 举报

发表于 2013-10-1 18:58:13 来自手机 | 显示全部楼层
提2个小建议
1 ssget 要有过滤,否则点到实体可能出错
2 养成局部变量收集的习惯

点评

比较菜,只能写一些很小的类似程序,这还是参考了别人的一些算法,非了半天劲,才加出来最后两个命令,呵呵,不专业,谢谢 Free-Lancer,您要是有空,就稍微修改下,刚好学习下,下次类似的我就知道怎么用了。  详情 回复 发表于 2013-10-1 19:56
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2013-10-1 19:56:26 | 显示全部楼层
Free-Lancer 发表于 2013-10-1 18:58
提2个小建议
1 ssget 要有过滤,否则点到实体可能出错
2 养成局部变量收集的习惯

比较菜,只能写一些很小的类似程序,这还是参考了别人的一些算法,非了半天劲,才加出来最后两个命令,呵呵,不专业,谢谢 Free-Lancer,您要是有空,就稍微修改下,刚好学习下,下次类似的我就知道怎么用了。

点评

完善了第一个,判断是否为 Xref 用 组码要按位计算,更喜欢 IsXref 判断  详情 回复 发表于 2013-10-1 21:11
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-10-1 21:11:15 | 显示全部楼层
sixthsixth 发表于 2013-10-1 19:56
比较菜,只能写一些很小的类似程序,这还是参考了别人的一些算法,非了半天劲,才加出来最后两个命令,呵 ...

完善了第一个,判断是否为 Xref 用 组码要按位计算,更喜欢 IsXref 判断
  1. ;; -------------------- Reload selected reference files ---------------------
  2. ;; XFR  
  3. ;; --------------------------------------------------------------------------
  4. (vl-load-com)
  5. (defun c:xfr (/ ss i e elist rname rnames) ;_定義“重载选定参照文件”命令
  6.   (setvar "cmdecho" 0) ;_命令执行过程不回显提示和输入
  7.   (princ
  8.     "\nselect  objects on the reference file to be reloaded:"
  9.   )
  10.   (if (setq ss (ssget '((0 . "insert")))) ;_首先要是块
  11.     (progn
  12.       (setq rnames ""
  13.         i       (sslength ss)
  14.       )
  15.       (repeat i
  16.     (setq e        (ssname ss (setq i (1- i)))
  17.           elist (entget e)
  18.           rname (cdr (assoc 2 elist))
  19.     ) ;_参照名
  20.     (if (= (vla-get-isxref
  21.          (vla-item
  22.            (vla-get-blocks
  23.              (vla-get-activedocument (vlax-get-acad-object))
  24.            )
  25.            rname
  26.          )
  27.            )
  28.            :vlax-true
  29.         ) ;_判断是否为 xref , dxf 在 Blockdef code 70
  30.       (progn
  31.         (command "-xref" "r" rname)
  32.         (setq rnames (strcat rname ", " rnames)) ;_strcat 连接成字符串
  33.       )
  34.     )
  35.       )                    ;end repeat
  36.       (prompt "\nfiles have been reloaded:")
  37.       (princ rnames)
  38.     ) ;_end progn
  39.   ) ;_end if
  40.   (princ)
  41. )
  42. (prompt
  43.   "\n<重载选定参照文件> 命令:XFR  ------by sixth 2010-11-17"
  44. );_提示如何执行程序

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

使用道具 举报

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

使用道具 举报

已领礼包: 36个

财富等级: 招财进宝

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

使用道具 举报

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

使用道具 举报

已领礼包: 4个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 14:06 , Processed in 0.329557 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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