明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 676|回复: 3

关于按照颜色值筛选对象的问题

[复制链接]
发表于 2016-4-30 06:01:11 | 显示全部楼层 |阅读模式
我想实现,通过点选一个实体,然后根据它的颜色,全部选中途中相同颜色的实体对象。我是通过读取TrueColor的ColorIndex属性来获取颜色索引值。但是有个问题了。当颜色值为256,既为bylayer类型时,就搞不定了。这种情况应该怎么做呢。谢谢

'************************************************************************************
'按颜色选择相同颜色的实体对象:************************************
'************************************************************************************
Sub PublicSub333()
On Error GoTo errhandle
     ThisDrawing.Utility.Prompt vbCrLf & "当前命令:颜色选择" & vbCrLf
'     Exit Sub

    Dim i As Long
    Dim k As Long
    Dim entityObj As AcadEntity '实体变量
    Dim nColor As Integer '颜色值
   '创建空白选择集
    Dim SelSet As AcadSelectionSet
    If ThisDrawing.SelectionSets.Count > 0 Then '如果选择集已经存在,删除
        For i = 0 To ThisDrawing.SelectionSets.Count - 1
           If ThisDrawing.SelectionSets.Item(i).Name = "SelSet" Then
              Set SelSet = ThisDrawing.SelectionSets.Item("SelSet")
              SelSet.Delete
              Exit For
           End If
        Next i
    End If
    Set SelSet = ThisDrawing.SelectionSets.Add("SelSet")

    ThisDrawing.Utility.GetEntity entityObj, setpoint, "请拾取对象:"
    nColor = entityObj.TrueColor.ColorIndex '获取颜色值

    '0为block,256为bylayer,
    Dim FilterType(0) As Integer
    Dim FilterData(0) As Variant
    Dim lyObj As AcadLayer
    Set lyObj = ThisDrawing.Layers.Item(entityObj.Layer)

    If nColor = 256 Then '颜色为bylayer时不能刷选??????????????????????
       nColor = lyObj.TrueColor.ColorIndex
    End If

    FilterType(0) = 62
    FilterData(0) = nColor
    SelSet.Select acSelectionSetAll, , , FilterType, FilterData '将目标颜色所有对象添加到选择集中

    SelSet.Highlight True

    Exit Sub
errhandle:
    If Err.Number = -2147352567 Then
       ThisDrawing.Utility.Prompt "取消选择" & vbCrLf
    Else
       ThisDrawing.Utility.Prompt vbCrLf & Err.Number & vbCrLf
       ThisDrawing.Utility.Prompt vbCrLf & Err.Description & vbCrLf
    End If   
End Sub
发表于 2016-5-2 21:08:30 | 显示全部楼层
    If nColor = 256 Then '颜色为bylayer时不能刷选??????????????????????
       nColor = lyObj.TrueColor.ColorIndex
    End If
把这段代码删掉就行了,画蛇添足
 楼主| 发表于 2016-5-3 06:10:52 | 显示全部楼层
zzyong00 发表于 2016-5-2 21:08
If nColor = 256 Then '颜色为bylayer时不能刷选??????????????????????
      ...

删了不行,所有按照bylayer的实体颜色值都是256,但是颜色是不一样的。要是删除了,都当成一样选择了
发表于 2016-5-3 19:54:44 | 显示全部楼层
哪估计得选完再过滤了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 01:42 , Processed in 0.177338 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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