明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1346|回复: 4

恳请版主对该函数 MergeLayers 进行更新升级!!!

[复制链接]
发表于 2007-8-3 17:41 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-8-3 19:50:01 编辑

恳请版主对该函数进行更新升级!!!
该函数对图中的块不起作用!如果要合并的图层处在块中,特别是处在属性块中!程序运行时会出现这样的提示:"; 错误: 参数类型错误: stringp nil"
该函数来源于以下链接:
http://www.mjtd.com/Functions/ArticleShow.asp?ArticleID=1193
  1. ;; Usage: (MergeLayers "Layer1" "Layer2")
  2. (defun MergeLayers (lay1 lay2 / cnt space blocks attrs)
  3.   (command "-layer" "u" lay1 "")
  4.   (setq blocks (vla-get-blocks
  5.    (vla-get-activedocument (vlax-get-acad-object))
  6.         )
  7.   )
  8.   (setq cnt 0)
  9.   (while (< cnt (vla-get-count blocks))
  10.     (setq space (vla-item blocks cnt))
  11.     (vlax-for itm space
  12.       (if (= (strcase (vla-get-layer itm)) (strcase lay1))
  13. (vla-put-layer itm lay2)
  14.       )
  15.       (if (and (= (vla-get-ObjectName itm) "AcDbBlockReference")
  16.         (= (vla-get-HasAttributes itm) :vlax-true)
  17.    )
  18. (progn
  19.    (setq attrs (vlax-safearray->list
  20.    (vlax-variant-value (vla-getattributes itm))
  21.         )
  22.    )
  23.    (foreach attr attrs
  24.      (if (= (strcase (vla-get-layer attr)) (strcase lay1))
  25.        (vla-put-layer attr lay2)
  26.      )
  27.    )
  28. )
  29.       )
  30.     )
  31.     (setq cnt (1+ cnt))
  32.   )
  33.   (if (= (getvar "CLAYER") lay1)
  34.     (setvar "CLAYER" lay2)
  35.   )
  36.   (command "_.purge" "lay" lay1 "_n")
  37. ;;;  (command "_.regenall")
  38.   (princ)
  39. )
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2007-8-4 19:08 | 显示全部楼层
可以试试遍历块内对象。
发表于 2007-8-6 12:37 | 显示全部楼层

到下列

http://free.ys168.com/?eachy

找LYRTV23.RAR

 楼主| 发表于 2007-8-6 18:59 | 显示全部楼层
龙龙仔,能不能提供原码?!
发表于 2007-8-7 07:59 | 显示全部楼层

Eachy提供出來給網友使用就很好了,這個程序是很難寫的!

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

本版积分规则

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

GMT+8, 2024-5-18 21:24 , Processed in 0.447754 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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