李';s层控制器
我真的很喜欢使用李的层导演lisp,(谢谢李)我突然想到,它可以很容易地进行调整(如果不是因为我的不熟练),以创建每个外部参照所需的唯一层,由XATTACH命令触发。指挥反应堆已经就位。每个外部参照都需要附着在一个新层上,该层是0层的精确副本,并命名为XREF*,当然通配符名称将从要附着的实体中提取,我还不知道该怎么做?
非常感谢您的建议/解决方案。 嗨,李,
我正在使用这篇旧帖子对layerdirector进行调整,我有一个愿望。也
当我的设置设置为图层“在工具栏中不可见”时,layerdirector例程会将对象放置在当前图层中。它无法重新设计层
是否可以修改该工具,使其始终找到良好的图层,即使该图层“未列出”?
提前感谢
汉斯
AlanJ.Thompson(alanjt)的这段代码怎么样
;;; ------------------------------------------------------------------------
;;; XRefsToLayers.lsp v1.0
;;;
;;; Copyright© 04.27.10
;;; Alan J. Thompson (alanjt)
;;;
;;; Contact: alanjt @ TheSwamp.org, CADTutor.net
;;;
;;; Permission to use, copy, modify, and distribute this software
;;; for any purpose and without fee is hereby granted, provided
;;; that the above copyright notice appears in all copies and
;;; that both that copyright notice and the limited warranty and
;;; restricted rights notice below appear in all supporting
;;; documentation.
;;;
;;; The following program(s) are provided "as is" and with all faults.
;;; Alan J. Thompson DOES NOT warrant that the operation of the program(s)
;;; will be uninterrupted and/or error free.
;;;
;;; Allows user to moved all XRefs to layer, based on XRef name with
;;; prefix of "G-XREF_".
;;; User also has option to lock created XRef layers.
;;;
;;; Revision History:
;;;
;;; ------------------------------------------------------------------------
(defun c:XR2L (/) (c:XRefsToLayers))
(defun c:XRefsToLayers (/ *error* Prefix4Layer xrefLst ss flag lock layLst lst)
;; Prefix4Layer (if no prefix wanted, set as "")
(setq Prefix4Layer "G-XREF_")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SUBROUTINES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; error handler
(defun *error* (msg)
(and flag *AcadDoc* (vla-EndUndoMark *AcadDoc*))
(and msg
(not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*QUIT*"))
(princ (strcat "\nError: " msg))
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MAIN ROUTINE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(vl-load-com)
(if (eq ""
(setq xrefLst
((lambda (s)
(vlax-for x (vla-get-blocks
(cond (*AcadDoc*)
((setq *AcadDoc* (vla-get-ActiveDocument (vlax-get-acad-object))))
)
)
(and (eq (vla-get-isXRef x) :vlax-true) (not (wcmatch (vla-get-name x) "*TBLOCK*")) (setq s (strcat s (vla-get-name x) ",")))
)
s
)
""
)
)
)
(alert "Zero XRefs in drawing.")
(if (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 xrefLst))))
((lambda (pre layers)
(initget 0 "Yes No")
(setq lock "No")
(setq flag (not (vla-StartUndoMark *AcadDoc*)))
(vlax-for o (setq ss (vla-get-ActiveSelectionSet *AcadDoc*))
((lambda (layer)
(or (vl-position layer layLst) (setq layLst (cons layer layLst)))
(setq lst ((lambda (lst)
((lambda (ass)
(if ass
(subst (cons (car ass) (1+ (cdr ass))) ass lst)
(cons (cons layer 1) lst)
)
)
(assoc layer lst)
)
)
lst
)
)
(or (eq (vla-get-layer o) (strcat pre (vla-get-name o)))
(if (vl-catch-all-error-p
(vl-catch-all-apply
(function vla-put-layer)
(list o layer)
)
)
((lambda (item)
(vla-put-lock item :vlax-false)
(vla-put-layer o layer)
(vla-put-lock item :vlax-true)
)
(vla-item layers (vla-get-layer o))
)
)
)
)
(if (vl-position (strcat pre (vla-get-name o)) layLst)
(strcat pre (vla-get-name o))
(vla-get-name (vla-add layers (strcase (strcat pre (vla-get-name o)))))
)
)
)
(vla-delete ss)
(and
layLst
(or (eq lock "No")
(mapcar (function (lambda (l) (vla-put-lock (vla-item layers l) :vlax-true))) layLst)
)
;;; lst
;;; (foreach i (vl-sort lst (function (lambda (a b) (< (car a) (car b)))))
;;; (princ (strcat "\n" (itoa (cdr i)) " XRef(s) on layer: \"" (car i) "\""))
;;; )
(setq lst ((lambda (lst str)
(if lst
(progn
(foreach i (vl-sort lst
(function (lambda (a b)
(< (car a) (car b))
)
)
)
(setq str (strcat str
"\n"
(itoa (cdr i))
" XRef(s) on layer: \""
(car i)
"\""
)
)
)
str
)
)
)
lst
""
)
)
(alert lst)
)
)
Prefix4Layer
(vla-get-Layers *AcadDoc*)
)
)
)
(*error* nil)
(princ)
)
(c:XR2L)
终于,你的愿望实现了(我只用了4年时间就实现了!)层控制器V1.5
我很高兴你发现这个程序如此有用!
李
尽管你的Lisp程序对我很有帮助,但自从开始使用它们以来,言语无法表达我的感激之情。
一如既往地,非常感谢!
一些不错的新的额外功能,以及,我相信哈拉姆会感到兴奋,当他检查出来了。
对于没有每天在启动lisp目录中使用此lisp的人,为什么不呢? 李
我同意Dadgad的观点
进步很大。
我仍然有一个愿望。
我注意到老式的方式(classicxref)不起作用。
就我个人而言,我喜欢避免屏幕填充外部参照面板。
能做到吗?
干得好!!
来自阳光灿烂的荷兰的问候
谢谢爸爸的客气话和感激之情,我真的很感激,我很高兴你发现我的程序如此有用。
很好,Hans-我现在已经将程序更新到V1.6,以说明CLASSICXREF命令的使用。
李
+1
他说了什么。
页:
[1]