明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2174|回复: 6

如何实现关闭已选择实体的图层??

[复制链接]
发表于 2007-1-9 13:34:00 | 显示全部楼层 |阅读模式

想编一个程序:

输入命令,从屏幕选择实体,程序判断已选实体的图层,然后将其关闭!

判高手指点一下~

发表于 2007-1-9 13:45:00 | 显示全部楼层
  1. Sub test()
  2. Dim Obj As Object
  3. Dim PickP As Variant
  4. ThisDrawing.Utility.GetEntity Obj, PickP, "选择要关闭该层的图元:"
  5. ThisDrawing.Layers.Item(Obj.Layer).LayerOn = False
  6. End Sub
 楼主| 发表于 2007-1-9 14:02:00 | 显示全部楼层

多谢啦

还想问问如果用选择集的方法可以么?

同时实现cad的框选功能,并且像输入cad命令一样,敲选回车后才关闭图层~

发表于 2007-1-9 14:07:00 | 显示全部楼层
选择集当然可以,只是选择集里的实体不一定都在一个层上,这样就要遍历选择集来处理
 楼主| 发表于 2007-1-9 15:04:00 | 显示全部楼层
多谢斑竹,我写了如下代码:看看有什么问题哦
  1. Sub test()
  2. Dim ssetobj As AcadSelectionSet
  3. Dim s As AcadSelectionSet
  4. On Error Resume Next
  5.      Set ssetobj = ThisDrawing.SelectionSets.Add("egua")
  6.      If Err Then
  7.          Err.Clear
  8.          Set ssetobj = ThisDrawing.SelectionSets.Item("egua")
  9.      End If
  10.      ssetobj.Clear
  11. ssetobj.SelectOnScreen
  12. For Each s In ssetobj
  13. ThisDrawing.Layers.Item(s.Layer).LayerOn = False
  14. Next s
  15. End Sub
发表于 2011-11-3 14:58:42 | 显示全部楼层
Sub test()
Dim ssetobj As AcadSelectionSet
Dim s As AcadSelectionSet这里有问题,要改成这样:Dim s As AcadEntity
On Error Resume Next
     Set ssetobj = ThisDrawing.SelectionSets.Add("egua")
     If Err Then
         Err.Clear
         Set ssetobj = ThisDrawing.SelectionSets.Item("egua")
     End If
     ssetobj.Clear

ssetobj.SelectOnScreen
For Each s In ssetobj
     ThisDrawing.Layers.Item(s.Layer).LayerOn = False
Next s
End Sub
发表于 2012-6-29 22:22:35 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 18:46 , Processed in 0.180604 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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