显示外部参照层
是否有人使用lisp来显示外部参照层。我想点击一个方块或线条,看看它在哪一层,这样我就可以进入图层管理器,将颜色更改为粗体。 我使用它来显示外部参照层,但它并不总是正常工作。(defun C:XRL ()
(setq EnL (entget (car (nentsel "\nSelect object to identify layer it is on : ")))
LNm (cdr (assoc 8 EnL))
)
(princ "\n Entity layer name: ")
(princ LNm)
(prin1))
(defun C:XRF ()
(setq EnL (entget (car (nentsel "\nSelect Layer to Freeze : ")))
LNm (cdr (assoc 8 EnL))
)
(command "layer" "f" LNm "")
(princ "\n Layer: ")(princ LNm)(princ " is now frozen.")
(princ)) 我使用了我修改过的以下内容。我只是增加了它的功能,告诉我哪一层使用LFPNN。
谢谢
;;LayerQuellPick.lsp
;;To "Quell" Layers of Picked objects or Picked Nested objects.
;;If selected object is on current Layer, changes current Layer to first one in Layer table
;; that is neither off/frozen nor Xref-dependent nor that of selected object, and notifies
;; User of new current Layer.[starting current Layer remains shown in Layer Properties
;; Toolbar pull-down until command is terminated, but if Properties box is up, changes
;; of current Layer are reflected immediately in its General section, Layer slot.]
;;If selected nested object is part of a Block/Xref, and on Layer 0 within that reference's
;; definition, turns off or freezes not Layer 0, but the deepest-nested non-0 Layer on which
;; that reference or a containing reference is inserted, i.e. where nested object "appears."
;;[Quirk I haven't found a way around yet: if Layer 0 is off or frozen, things on Defpoints
;; Layer, even if visible, can't be selected; that Layer can't be quelled while Layer 0 is
;; (using these commands, though it can be via Layer Manager or Toolbar).]
;;Kent Cooper, November 2011
;; Modified by Chau Huh, April 2015
(defun C:LOP (); = Layer Off by Picking object(s)
(LQC entsel "" "turn Off" "_off")
); defun - C:LOP
(defun C:LOPN (); = Layer Off by Picking object(s) or Nested object(s)
(LQC nentsel "/nested object" "turn Off" "_off")
); defun - C:LOPN
(defun C:LFP (); = Layer Freeze by Picking object(s)
(LQC entsel "" "Freeze" "_freeze")
); defun - C:LFP
(defun C:LFPN (); = Layer Freeze by picking object(s) or Nested object(s)
(LQC nentsel "/nested object" "Freeze" "_freeze")
); defun - C:LFPN
(defun C:LFPNN (); = Layer Freeze by picking object(s) or Nested object(s)
(LQCC nentsel "/nested object" "Identify" "_freeze")
); defun - C:LFPNN
(defun LQC (func pr1 pr2 opt / *error* cmde ent edata layq nestlist nlayq ldata layc)
; = Layer Quell with Current layer changed if necessary
(defun *error* (errmsg); don't display error message if cancelled with Esc
(if (not (wcmatch errmsg "Function cancelled,quit / exit abort,console break"))
(princ (strcat "\nError: " errmsg))
); end if
(setvar 'cmdecho cmde)
); defun - *error*
(setq cmde (getvar 'cmdecho))
(setvar 'cmdecho 0)
(while
(and
(not ; to return T when (while) loop below is satisfied
(while
(and
(not (setq ent (func (strcat "\nSelect object" pr1 " on Layer to " pr2 ": "))))
(= (getvar 'errno) 7)
); and
(prompt "\nNothing selected -- try again.")
); end while
); not
ent ; something selected
); and
(setq
edata (entget (car ent))
layq ; = LAYer to Quell
(if (= (cdr (assoc 8 edata)) "0"); on Layer 0
(cond ; then
((> (length ent) 2); nested entity in Block/Xref
(setq nestlist (last (nentselp (cadr ent)))); stack of references nested in
(while
(and
nestlist ; still nesting level(s) remaining
(= (setq nlayq (cdr (assoc 8 (entget (car nestlist))))) "0"); = Nested LAYer to Quell
); and
(setq nestlist (cdr nestlist)); move up a level if present
); while
nlayq
; lowest-level non-0 Layer of nested or containing reference(s); 0 if that all the way up
); non-Attribute nested entity on Layer 0 condition
((= (cdr (assoc 0 edata)) "ATTRIB"); Attribute in Block
(cdr (assoc 8 (entget (cdr (assoc 330 edata))))); Block's Layer
); Attribute on Layer 0 condition
("0"); none-of-the-above condition
); cond - then
(cdr (assoc 8 edata)); else - Layer of entity/nested entity
); if & layq
); setq
(if (= layq (getvar 'clayer)); selected object is on current Layer - find another
(progn ; then
(while ; look for Layer that's on, thawed, non-Xref-dependent, not selected object's
(and
(setq ldata (tblnext "layer" (not ldata))); still Layer(s) left in table
; nil if it gets to end of table without finding qualifying Layer
(or
(=
(setq layc (cdr (assoc 2 ldata))); = LAYer to make Current
layq ; selected object's Layer
); =
(minusp (cdr (assoc 62 ldata))); off
(= (logand (cdr (assoc 70 ldata)) 1) 1); frozen
(wcmatch layc "*|*"); Xref-dependent
); or
); and
); while
(if ldata ; found a qualifying Layer
(setvar 'clayer layc); then - set it current
(progn ; else - no qualifying Layer
(alert "No available Layer to make current\nin place of selected object's Layer.")
(quit)
); progn
); if
); progn
); if
(command "_.layer" opt layq ""); turn off or freeze Layer of selected object
(princ (strcat "Turning off layer " layq "\n"))
(if ldata (prompt (strcat "\nCurrent Layer has been changed to " layc ".")))
); while
(setvar 'cmdecho cmde)
(princ)
); defun - LQC
(defun LQCC (func pr1 pr2 opt / *error* cmde ent edata layq nestlist nlayq ldata layc)
; = Layer Quell with Current layer changed if necessary
(defun *error* (errmsg); don't display error message if cancelled with Esc
(if (not (wcmatch errmsg "Function cancelled,quit / exit abort,console break"))
(princ (strcat "\nError: " errmsg))
); end if
(setvar 'cmdecho cmde)
); defun - *error*
(setq cmde (getvar 'cmdecho))
(setvar 'cmdecho 0)
(while
(and
(not ; to return T when (while) loop below is satisfied
(while
(and
(not (setq ent (func (strcat "\nSelect object" pr1 " on Layer to " pr2 ": "))))
(= (getvar 'errno) 7)
); and
(prompt "\nNothing selected -- try again.")
); end while
); not
ent ; something selected
); and
(setq
edata (entget (car ent))
layq ; = LAYer to Quell
(if (= (cdr (assoc 8 edata)) "0"); on Layer 0
(cond ; then
((> (length ent) 2); nested entity in Block/Xref
(setq nestlist (last (nentselp (cadr ent)))); stack of references nested in
(while
(and
nestlist ; still nesting level(s) remaining
(= (setq nlayq (cdr (assoc 8 (entget (car nestlist))))) "0"); = Nested LAYer to Quell
); and
(setq nestlist (cdr nestlist)); move up a level if present
); while
nlayq
; lowest-level non-0 Layer of nested or containing reference(s); 0 if that all the way up
); non-Attribute nested entity on Layer 0 condition
((= (cdr (assoc 0 edata)) "ATTRIB"); Attribute in Block
(cdr (assoc 8 (entget (cdr (assoc 330 edata))))); Block's Layer
); Attribute on Layer 0 condition
("0"); none-of-the-above condition
); cond - then
(cdr (assoc 8 edata)); else - Layer of entity/nested entity
); if & layq
); setq
(if (= layq (getvar 'clayer)); selected object is on current Layer - find another
(progn ; then
(while ; look for Layer that's on, thawed, non-Xref-dependent, not selected object's
(and
(setq ldata (tblnext "layer" (not ldata))); still Layer(s) left in table
; nil if it gets to end of table without finding qualifying Layer
(or
(=
(setq layc (cdr (assoc 2 ldata))); = LAYer to make Current
layq ; selected object's Layer
); =
(minusp (cdr (assoc 62 ldata))); off
(= (logand (cdr (assoc 70 ldata)) 1) 1); frozen
(wcmatch layc "*|*"); Xref-dependent
); or
); and
); while
(if ldata ; found a qualifying Layer
(setvar 'clayer layc); then - set it current
(progn ; else - no qualifying Layer
(alert "No available Layer to make current\nin place of selected object's Layer.")
(quit)
); progn
); if
); progn
); if
(princ (strcat "Layer: " layq "\n"))
(if ldata (prompt (strcat "\nCurrent Layer has been changed to " layc ".")))
); while
(setvar 'cmdecho cmde)
(princ)
); defun - LQCC 谢谢,但它没有列出外部参照的图层。即使我点击F2,它仍然不会显示外部参照层。我正在尝试查找嵌套层外部参照列表。类似于Xlist,但可以看到您每次单击的层。Xlist是不一致的,因为我们有很长的图形名称,它有时不显示层。 XLIST是用于该操作的内置命令。
它可能是2012年的Express tool命令,因此如果它不起作用,请确保加载了Express Tools。
它对我有用。。。 使用“快捷特性”可以做到这一点,只需设置要为外部参照显示的属性信息。在“菜单”下的CUI中,选择“快捷特性”,然后可以定义要显示的内容。
我以前从未听说过XLIST,但我在2013年试用过,似乎效果很好。
你好
为什么不从宿主图形中设置颜色?
页:
[1]