找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1178|回复: 0

[CP原创]VBA/VLISP函数:双解对照设置当前层

[复制链接]
发表于 2002-1-27 04:00:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
[CP原创]VBA/VLISP函数:设置当前层双解对照



  1. '
  2. '设置当前层,如果指定名称的层不存在则新建
  3. '
  4. Public Function myvb_LayerSet(LayerName As String)

  5.     Dim objLayer As AcadLayer
  6.     Dim FindLayer As Boolean
  7.    
  8.     FindLayer = False
  9.     For Each objLayer In ThisDrawing.Layers
  10.         If UCase(objLayer.Name) = UCase(LayerName) Then
  11.             FindLayer = True
  12.             Exit For
  13.         End If
  14.     Next
  15.    
  16.     If FindLayer = True Then '已存在
  17.         Set objLayer = ThisDrawing.Layers(LayerName)
  18.         If objLayer.Freeze = True Then '解冻
  19.             objLayer.Freeze = False
  20.         End If
  21.         objLayer.Lock = False '解锁
  22.         objLayer.LayerOn = True '可见
  23.     Else '不存在时新建
  24.         Set objLayer = ThisDrawing.Layers.Add(LayerName)
  25.     End If
  26.     ThisDrawing.ActiveLayer = objLayer '设为当前层

  27. End Function


  28. ;;;======================================================================;
  29. ;;;设置当前层,如果指定名称的层不存在则新建                               ;
  30. ;;;======================================================================;
  31. (defun myvl_LayerSet (layName / acDoc lays lay)
  32.   (setq        acDoc (vla-get-ActiveDocument (vlax-get-acad-object))
  33.         lays  (vla-get-Layers acDoc)
  34.   )
  35.   (if (= (tblsearch "layer" layName) nil)
  36.     (progn                                ;不存在
  37.       (setq lay (vla-Add lays layName))        ;新建
  38.       (vla-put-ActiveLayer acDoc lay)        ;设为当前层
  39.     )
  40.     (progn                                ;已存在
  41.       (setq lay (vla-Item lays layName))
  42.       (if (= (vla-get-Freeze lay) :vlax-true)
  43.         (vla-put-Freeze lay :vlax-false) ;解冻
  44.       )
  45.       (if (= (vla-get-Lock lay) :vlax-true)
  46.         (vla-put-Lock lay :vlax-false)        ;解锁
  47.       )
  48.       (if (= (vla-get-LayerOn lay) :vlax-false)
  49.         (vla-put-LayerOn lay :vlax-true) ;可见
  50.       )
  51.       (vla-put-ActiveLayer acDoc lay)        ;设为当前层
  52.     )
  53.   )
  54. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-23 02:20 , Processed in 0.180736 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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