乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 50|回复: 7

[编程交流] 显示外部参照层

[复制链接]

42

主题

104

帖子

69

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
203
发表于 2022-7-5 18:22:14 | 显示全部楼层 |阅读模式
是否有人使用lisp来显示外部参照层。我想点击一个方块或线条,看看它在哪一层,这样我就可以进入图层管理器,将颜色更改为粗体。
回复

使用道具 举报

42

主题

104

帖子

69

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
203
发表于 2022-7-5 18:39:04 | 显示全部楼层
我使用它来显示外部参照层,但它并不总是正常工作。
 
  1. (defun C:XRL ()
  2. (setq EnL (entget (car (nentsel "\nSelect object to identify layer it is on : ")))
  3.        LNm (cdr (assoc 8 EnL))
  4. )
  5. (princ "\n Entity layer name: ")
  6. (princ LNm)
  7. (prin1))
  8. (defun C:XRF ()
  9. (setq EnL (entget (car (nentsel "\nSelect Layer to Freeze : ")))
  10.        LNm (cdr (assoc 8 EnL))
  11. )
  12. (command "layer" "f" LNm "")
  13. (princ "\n Layer: ")(princ LNm)(princ " is now frozen.")
  14. (princ))
回复

使用道具 举报

12

主题

152

帖子

140

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 18:44:02 | 显示全部楼层
我使用了我修改过的以下内容。我只是增加了它的功能,告诉我哪一层使用LFPNN。
 
谢谢
 
  1. ;;  LayerQuellPick.lsp [command names: LOP, LOPN, LFP, LFPN]
  2. ;;  To "Quell" [turn Off or Freeze] Layers of Picked objects or Picked Nested objects.
  3. ;;  If selected object is on current Layer, changes current Layer to first one in Layer table
  4. ;;    that is neither off/frozen nor Xref-dependent nor that of selected object, and notifies
  5. ;;    User of new current Layer.  [starting current Layer remains shown in Layer Properties
  6. ;;    Toolbar pull-down until command is terminated, but if Properties box is up, changes
  7. ;;    of current Layer are reflected immediately in its General section, Layer slot.]
  8. ;;  If selected nested object is part of a Block/Xref, and on Layer 0 within that reference's
  9. ;;    definition, turns off or freezes not Layer 0, but the deepest-nested non-0 Layer on which
  10. ;;    that reference or a containing reference is inserted, i.e. where nested object "appears."
  11. ;;  [Quirk I haven't found a way around yet: if Layer 0 is off or frozen, things on Defpoints
  12. ;;    Layer, even if visible, can't be selected; that Layer can't be quelled while Layer 0 is
  13. ;;    (using these commands, though it can be via Layer Manager or Toolbar).]
  14. ;;  Kent Cooper, November 2011
  15. ;; Modified by Chau Huh, April 2015
  16. (defun C:LOP (); = Layer Off by Picking object(s) [top-level]
  17.    (LQC entsel "" "turn Off" "_off")
  18. ); defun - C:LOP
  19. (defun C:LOPN (); = Layer Off by Picking object(s) or Nested object(s)
  20.    (LQC nentsel "/nested object" "turn Off" "_off")
  21. ); defun - C:LOPN
  22. (defun C:LFP (); = Layer Freeze by Picking object(s) [top-level]
  23.    (LQC entsel "" "Freeze" "_freeze")
  24. ); defun - C:LFP
  25. (defun C:LFPN (); = Layer Freeze by picking object(s) or Nested object(s)
  26.    (LQC nentsel "/nested object" "Freeze" "_freeze")
  27. ); defun - C:LFPN
  28. (defun C:LFPNN (); = Layer Freeze by picking object(s) or Nested object(s)
  29.    (LQCC nentsel "/nested object" "Identify" "_freeze")
  30. ); defun - C:LFPNN
  31. (defun LQC (func pr1 pr2 opt / *error* cmde ent edata layq nestlist nlayq ldata layc)
  32. ; = Layer Quell with Current layer changed if necessary
  33. (defun *error* (errmsg); don't display error message if cancelled with Esc
  34.    (if (not (wcmatch errmsg "Function cancelled,quit / exit abort,console break"))
  35.      (princ (strcat "\nError: " errmsg))
  36.    ); end if
  37.    (setvar 'cmdecho cmde)
  38. ); defun - *error*
  39. (setq cmde (getvar 'cmdecho))
  40. (setvar 'cmdecho 0)
  41. (while
  42.    (and
  43.      (not ; to return T when (while) loop below is satisfied
  44.        (while
  45.          (and
  46.            (not (setq ent (func (strcat "\nSelect object" pr1 " on Layer to " pr2 ": "))))
  47.            (= (getvar 'errno) 7)
  48.          ); and
  49.          (prompt "\nNothing selected -- try again.")
  50.        ); end while
  51.      ); not
  52.      ent ; something selected
  53.    ); and
  54.    (setq
  55.      edata (entget (car ent))
  56.      layq ; = LAYer to Quell [turn Off or Freeze]
  57.        (if (= (cdr (assoc 8 edata)) "0"); on Layer 0
  58.          (cond ; then
  59.            ((> (length ent) 2); nested entity [other than Attribute] in Block/Xref
  60.              (setq nestlist (last (nentselp (cadr ent)))); stack of references nested in
  61.              (while
  62.                (and
  63.                  nestlist ; still nesting level(s) remaining
  64.                  (= (setq nlayq (cdr (assoc 8 (entget (car nestlist))))) "0"); = Nested [non-0] LAYer to Quell
  65.                ); and
  66.                (setq nestlist (cdr nestlist)); move up a level if present
  67.              ); while
  68.              nlayq
  69.                ; lowest-level non-0 Layer of nested or containing reference(s); 0 if that all the way up
  70.            ); non-Attribute nested entity on Layer 0 condition
  71.            ((= (cdr (assoc 0 edata)) "ATTRIB"); Attribute in Block
  72.              (cdr (assoc 8 (entget (cdr (assoc 330 edata))))); Block's Layer
  73.            ); Attribute on Layer 0 condition
  74.            ("0"); none-of-the-above condition
  75.          ); cond - then
  76.          (cdr (assoc 8 edata)); else - Layer of entity/nested entity
  77.        ); if & layq
  78.    ); setq
  79.    (if (= layq (getvar 'clayer)); selected object is on current Layer - find another
  80.      (progn ; then
  81.        (while ; look for Layer that's on, thawed, non-Xref-dependent, not selected object's
  82.          (and
  83.            (setq ldata (tblnext "layer" (not ldata))); still Layer(s) left in table
  84.              ; nil if it gets to end of table without finding qualifying Layer
  85.            (or
  86.              (=
  87.                (setq layc (cdr (assoc 2 ldata))); = LAYer to [possibly] make Current
  88.                layq ; selected object's Layer
  89.              ); =
  90.              (minusp (cdr (assoc 62 ldata))); off [could be made current, but...]
  91.              (= (logand (cdr (assoc 70 ldata)) 1) 1); frozen [can't be made current]
  92.              (wcmatch layc "*|*"); Xref-dependent [can't be made current]
  93.            ); or
  94.          ); and
  95.        ); while
  96.        (if ldata ; found a qualifying Layer
  97.          (setvar 'clayer layc); then - set it current
  98.          (progn ; else - no qualifying Layer
  99.            (alert "No available Layer to make current\nin place of selected object's Layer.")
  100.            (quit)
  101.          ); progn
  102.        ); if
  103.      ); progn
  104.    ); if
  105.    (command "_.layer" opt layq ""); turn off or freeze Layer of selected object
  106.    (princ (strcat "Turning off layer " layq "\n"))
  107.    (if ldata (prompt (strcat "\nCurrent Layer has been changed to " layc ".")))
  108. ); while
  109. (setvar 'cmdecho cmde)
  110. (princ)
  111. ); defun - LQC
  112. (defun LQCC (func pr1 pr2 opt / *error* cmde ent edata layq nestlist nlayq ldata layc)
  113. ; = Layer Quell with Current layer changed if necessary
  114. (defun *error* (errmsg); don't display error message if cancelled with Esc
  115.    (if (not (wcmatch errmsg "Function cancelled,quit / exit abort,console break"))
  116.      (princ (strcat "\nError: " errmsg))
  117.    ); end if
  118.    (setvar 'cmdecho cmde)
  119. ); defun - *error*
  120. (setq cmde (getvar 'cmdecho))
  121. (setvar 'cmdecho 0)
  122. (while
  123.    (and
  124.      (not ; to return T when (while) loop below is satisfied
  125.        (while
  126.          (and
  127.            (not (setq ent (func (strcat "\nSelect object" pr1 " on Layer to " pr2 ": "))))
  128.            (= (getvar 'errno) 7)
  129.          ); and
  130.          (prompt "\nNothing selected -- try again.")
  131.        ); end while
  132.      ); not
  133.      ent ; something selected
  134.    ); and
  135.    (setq
  136.      edata (entget (car ent))
  137.      layq ; = LAYer to Quell [turn Off or Freeze]
  138.        (if (= (cdr (assoc 8 edata)) "0"); on Layer 0
  139.          (cond ; then
  140.            ((> (length ent) 2); nested entity [other than Attribute] in Block/Xref
  141.              (setq nestlist (last (nentselp (cadr ent)))); stack of references nested in
  142.              (while
  143.                (and
  144.                  nestlist ; still nesting level(s) remaining
  145.                  (= (setq nlayq (cdr (assoc 8 (entget (car nestlist))))) "0"); = Nested [non-0] LAYer to Quell
  146.                ); and
  147.                (setq nestlist (cdr nestlist)); move up a level if present
  148.              ); while
  149.              nlayq
  150.                ; lowest-level non-0 Layer of nested or containing reference(s); 0 if that all the way up
  151.            ); non-Attribute nested entity on Layer 0 condition
  152.            ((= (cdr (assoc 0 edata)) "ATTRIB"); Attribute in Block
  153.              (cdr (assoc 8 (entget (cdr (assoc 330 edata))))); Block's Layer
  154.            ); Attribute on Layer 0 condition
  155.            ("0"); none-of-the-above condition
  156.          ); cond - then
  157.          (cdr (assoc 8 edata)); else - Layer of entity/nested entity
  158.        ); if & layq
  159.    ); setq
  160.    (if (= layq (getvar 'clayer)); selected object is on current Layer - find another
  161.      (progn ; then
  162.        (while ; look for Layer that's on, thawed, non-Xref-dependent, not selected object's
  163.          (and
  164.            (setq ldata (tblnext "layer" (not ldata))); still Layer(s) left in table
  165.              ; nil if it gets to end of table without finding qualifying Layer
  166.            (or
  167.              (=
  168.                (setq layc (cdr (assoc 2 ldata))); = LAYer to [possibly] make Current
  169.                layq ; selected object's Layer
  170.              ); =
  171.              (minusp (cdr (assoc 62 ldata))); off [could be made current, but...]
  172.              (= (logand (cdr (assoc 70 ldata)) 1) 1); frozen [can't be made current]
  173.              (wcmatch layc "*|*"); Xref-dependent [can't be made current]
  174.            ); or
  175.          ); and
  176.        ); while
  177.        (if ldata ; found a qualifying Layer
  178.          (setvar 'clayer layc); then - set it current
  179.          (progn ; else - no qualifying Layer
  180.            (alert "No available Layer to make current\nin place of selected object's Layer.")
  181.            (quit)
  182.          ); progn
  183.        ); if
  184.      ); progn
  185.    ); if
  186.    (princ (strcat "Layer: " layq "\n"))
  187.    (if ldata (prompt (strcat "\nCurrent Layer has been changed to " layc ".")))
  188. ); while
  189. (setvar 'cmdecho cmde)
  190. (princ)
  191. ); defun - LQCC[code]
[/code]
回复

使用道具 举报

42

主题

104

帖子

69

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
203
发表于 2022-7-5 18:52:28 | 显示全部楼层
谢谢,但它没有列出外部参照的图层。即使我点击F2,它仍然不会显示外部参照层。我正在尝试查找嵌套层外部参照列表。类似于Xlist,但可以看到您每次单击的层。Xlist是不一致的,因为我们有很长的图形名称,它有时不显示层。
回复

使用道具 举报

10

主题

895

帖子

887

银币

初来乍到

Rank: 1

铜币
49
发表于 2022-7-5 19:04:28 | 显示全部楼层
XLIST是用于该操作的内置命令。
 
它可能是2012年的Express tool命令,因此如果它不起作用,请确保加载了Express Tools。
回复

使用道具 举报

12

主题

152

帖子

140

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 19:13:37 | 显示全部楼层
 
它对我有用。。。
回复

使用道具 举报

5

主题

1074

帖子

1088

银币

初来乍到

Rank: 1

铜币
9
发表于 2022-7-5 19:16:12 | 显示全部楼层
使用“快捷特性”可以做到这一点,只需设置要为外部参照显示的属性信息。在“菜单”下的CUI中,选择“快捷特性”,然后可以定义要显示的内容。
 
我以前从未听说过XLIST,但我在2013年试用过,似乎效果很好。
192215p056p53u6b05poey.jpg
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 19:22:57 | 显示全部楼层
 
你好
为什么不从宿主图形中设置颜色?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-12 19:30 , Processed in 0.747990 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表