明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2781|回复: 3

[源码] 打开文档间的图层同步,附源码

  [复制链接]
发表于 2015-1-29 19:40:31 | 显示全部楼层 |阅读模式
本帖最后由 vectra 于 2015-5-10 21:28 编辑

有没有在图层管理器里导入导出las文件来同步图层设置,想要重置宿主文件中的图层设置为外部参照中的设置?请使用rl命令节省时间。

  1. (setq *layer-properties*
  2.        '(color    linetype       lineweight     plottable
  3.    plotstylename  viewportdefault          layeron
  4.    lock    freeze         description
  5.   )
  6. )


  7. (defun getlayerproperties (/ dat lst)
  8.   (vlax-for lay  (vla-get-layers
  9.       (vla-get-activedocument (vlax-get-acad-object))
  10.     )

  11.     (foreach prp *layer-properties*
  12.       (if (vlax-property-available-p lay prp)
  13.   (setq lst (cons (vlax-get-property lay prp) lst))
  14.       )
  15.     )
  16.     (setq dat (cons (cons (vla-get-name lay) (reverse lst)) dat)
  17.     lst nil
  18.     )
  19.   )
  20.   dat
  21. )


  22. (defun setlayerproperties (dat prefix / layer value)

  23.   (foreach e dat
  24.     (if  (not (vl-catch-all-error-p
  25.          (setq layer
  26.           (vl-catch-all-apply
  27.       'vla-item
  28.       (list (vla-get-layers
  29.         (vla-get-activedocument (vlax-get-acad-object))
  30.             )
  31.             (strcat prefix (car e))
  32.       )
  33.           )
  34.          )
  35.        )
  36.   )
  37.       (progn
  38.   (setq value (cdr e))
  39.   (foreach prp *layer-properties*
  40.     (if (vlax-property-available-p layer prp t)
  41.       (vl-catch-all-apply
  42.         'vlax-put-property
  43.         (list layer prp (car value))
  44.       )
  45.     )
  46.     (setq value (cdr value))
  47.   )
  48.       )
  49.     )
  50.   )
  51.   (vla-regen (vla-get-activedocument (vlax-get-acad-object))
  52.        acallviewports
  53.   )
  54. )

  55. ;; reset layer settings
  56. (defun c:rl (/ ret sel)
  57.   (initget "S A X")
  58.   (setq  ret (getkword
  59.         "打开文档间的图层同步 [提取图层设置(S)/应用到当前文档(A)/应用到外部参照(X)]:"
  60.       )
  61.   )

  62.   (cond
  63.     ((= ret "S")
  64.      (vl-bb-set 'layer-settings (getlayerproperties))
  65.     )

  66.     ((= ret "A")
  67.      (setlayerproperties (vl-bb-ref 'layer-settings) "")
  68.     )

  69.     ((= ret "X")
  70.      (setq sel (entsel "\n选择外部参照:"))
  71.      (if (and
  72.      (vl-consp sel)
  73.      (= "INSERT"
  74.         (cdr (assoc 0 (setq sel (entget (car sel)))))
  75.      )
  76.      (= 4
  77.         (logand
  78.     4
  79.     (cdr
  80.       (assoc 70
  81.        (tblsearch "block" (cdr (assoc 2 sel)))
  82.       )
  83.     )
  84.         )
  85.      )
  86.    )
  87.        (progn
  88.    (setlayerproperties
  89.      (vl-bb-ref 'layer-settings)
  90.      (strcat (cdr (assoc 2 sel)) "|")
  91.    )
  92.        )
  93.      )
  94.     )
  95.   )
  96.   (princ)
  97. )

评分

参与人数 1明经币 +1 收起 理由
sibelle_hu + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

发表于 2021-2-28 12:11:58 | 显示全部楼层
留个脚印,没看太懂和协调图层有什么关系
发表于 2021-6-23 14:50:41 | 显示全部楼层
感觉不错  试一下
发表于 2023-8-23 19:03:14 | 显示全部楼层
(defun c:xttc ()
        ;协调图层
        (command "-layer" "e" "*" "")
        (princ)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 03:36 , Processed in 0.168059 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表