个人编的,外部参照命令集合
本帖最后由 sixthsixth 于 2013-10-1 18:45 编辑个人编的,外部参照命令集合,更新了下,现在命令全了
源码如下:
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 "\nSelectobjects 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 "\nSelectobjects 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 "\nSelectobjects 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 "\nSelectobjects 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") ;提示如何执行程序
不错,关键是楼主没有共享源码啊,不过也谢谢了,这种插件算是一个类型了 谢谢楼主分享。 试用一下~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~··· 好,谢谢楼主分享。 很实用,谢谢----------
更新了下,现在命令全了,绑定、载入、卸载、拆离 谢谢楼主代码分享! 提2个小建议
1 ssget 要有过滤,否则点到实体可能出错
2 养成局部变量收集的习惯 Free-Lancer 发表于 2013-10-1 18:58
提2个小建议
1 ssget 要有过滤,否则点到实体可能出错
2 养成局部变量收集的习惯
比较菜,只能写一些很小的类似程序,这还是参考了别人的一些算法,非了半天劲,才加出来最后两个命令,呵呵,不专业,谢谢 Free-Lancer,您要是有空,就稍微修改下,刚好学习下,下次类似的我就知道怎么用了。
sixthsixth 发表于 2013-10-1 19:56
比较菜,只能写一些很小的类似程序,这还是参考了别人的一些算法,非了半天劲,才加出来最后两个命令,呵 ...
完善了第一个,判断是否为 Xref 用 组码要按位计算,更喜欢 IsXref 判断
;; -------------------- Reload selected reference files ---------------------
;; XFR
;; --------------------------------------------------------------------------
(vl-load-com)
(defun c:xfr (/ ss i e elist rname rnames) ;_定義“重载选定参照文件”命令
(setvar "cmdecho" 0) ;_命令执行过程不回显提示和输入
(princ
"\nselectobjects on the reference file to be reloaded:"
)
(if (setq ss (ssget '((0 . "insert")))) ;_首先要是块
(progn
(setq rnames ""
i (sslength ss)
)
(repeat i
(setq e (ssname ss (setq i (1- i)))
elist (entget e)
rname (cdr (assoc 2 elist))
) ;_参照名
(if (= (vla-get-isxref
(vla-item
(vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))
)
rname
)
)
:vlax-true
) ;_判断是否为 xref , dxf 在 Blockdef code 70
(progn
(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"
);_提示如何执行程序
应该再加个“将块转为外部参照” 感谢楼主提供这个,学习中... 一直在用楼主这个程式,非常方便! 不错的东西,谢谢楼主分享
页:
[1]
2