Dadgad 发表于 2022-7-5 17:42:44

李';s层控制器

我真的很喜欢使用李的层导演lisp,(谢谢李)
 
我突然想到,它可以很容易地进行调整(如果不是因为我的不熟练),以创建每个外部参照所需的唯一层,由XATTACH命令触发。指挥反应堆已经就位。每个外部参照都需要附着在一个新层上,该层是0层的精确副本,并命名为XREF*,当然通配符名称将从要附着的实体中提取,我还不知道该怎么做?
 
非常感谢您的建议/解决方案。

halam 发表于 2022-7-5 17:54:07

嗨,李,
我正在使用这篇旧帖子对layerdirector进行调整,我有一个愿望。也
当我的设置设置为图层“在工具栏中不可见”时,layerdirector例程会将对象放置在当前图层中。它无法重新设计层
 
是否可以修改该工具,使其始终找到良好的图层,即使该图层“未列出”?
提前感谢
 
 
汉斯

abra-CAD-abra 发表于 2022-7-5 18:03:02

 
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)

Lee Mac 发表于 2022-7-5 18:16:34

 
终于,你的愿望实现了(我只用了4年时间就实现了!)层控制器V1.5
 
我很高兴你发现这个程序如此有用!
 

Dadgad 发表于 2022-7-5 18:19:29

 
尽管你的Lisp程序对我很有帮助,但自从开始使用它们以来,言语无法表达我的感激之情。
 
一如既往地,非常感谢!
 
一些不错的新的额外功能,以及,我相信哈拉姆会感到兴奋,当他检查出来了。
 
对于没有每天在启动lisp目录中使用此lisp的人,为什么不呢?

halam 发表于 2022-7-5 18:31:14


我同意Dadgad的观点
进步很大。
我仍然有一个愿望。
我注意到老式的方式(classicxref)不起作用。
就我个人而言,我喜欢避免屏幕填充外部参照面板。
能做到吗?
 
 
干得好!!
来自阳光灿烂的荷兰的问候
 
 

Lee Mac 发表于 2022-7-5 18:42:13

 
谢谢爸爸的客气话和感激之情,我真的很感激,我很高兴你发现我的程序如此有用。
 
 
很好,Hans-我现在已经将程序更新到V1.6,以说明CLASSICXREF命令的使用。
 

rkent 发表于 2022-7-5 18:47:46

 
+1
 
他说了什么。
页: [1]
查看完整版本: 李';s层控制器