- 积分
- 808
- 明经币
- 个
- 注册时间
- 2012-10-26
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
CASS软件的批量选择中,命令为mssx,
但是按颜色选择会出现一些偏差,
批量选择房子,但是就是选不上
这是因为cass是采用图元颜色索引值过滤
-----"当前过滤条件: ((62 . 6))"-----
62就是对图元颜色进行判断,如果图元颜色索引值=6的就选上,不是的就不选。
现实情况是如果图元的颜色采用随层的话,图元颜色索引值就是256,这就是选不上的原因,怎么办呢?
图元的颜色有三种情况,以颜色6为例,
1、图层颜色为6,但是本图层的图元全部随层颜色显示,也就是本图层的图元颜色索引值为256。这些图层颜色6,图元颜色值256的图元需要选取
2、图层颜色为6,但是本图层的图元颜色人为变更为其他值了,此时图层颜色值为6,图元颜色值不是256,也不是6的不能选。
3、其他图层颜色值非6,但是图元颜色是6的,需要选取
解决办法是,通过选取图元样本,确定需要过滤的颜色索引值,再通过对图层颜色值判断确定哪些图层的随层图元需要选择
上源码
YanSe = TuYuan.color ’样本图元的颜色值
'''''''''''''''''''''''''''''''''''''通过样本图元颜色值判断哪些图层也是同样颜色
If YanSe = 256 Then
TuCeng = TuYuan.Layer
For Each Tc In ThisDrawing.Layers
If Tc.Name = TuCeng Then
YanSe = Tc.color
Exit For
End If
Next Tc
End If
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''计算有多少个相同颜色的图层数量
For Each Tc In ThisDrawing.Layers
If Tc.color = YanSe Then
YStc = YStc + 1
End If
Next Tc
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''开始过滤''''''''''''''''''''''''''''''''
'''''''''图元颜色满足的,或(or),图层颜色满足且图元颜色是256的'''''''''''''''''''''''''''''''
''''''''''''''''''''''循环是对图层颜色满足要求的图元全部选取''''''''''''''''''''''''''''''''''''''''''''''''''''''
Ftt(0) = -4
Fdd(0) = "<or"
Ftt(1) = 62
Fdd(1) = YanSe
For j = 1 To YStc
Ftt(j * 4 - 2) = -4
Fdd(j * 4 - 2) = "<and"
Ftt(j * 4 - 1) = 8
Fdd(j * 4 - 1) = str(j - 1)
Ftt(j * 4) = 62
Fdd(j * 4) = 256
Ftt(j * 4 + 1) = -4
Fdd(j * 4 + 1) = "and>"
Next j
Ftt(i) = -4
Fdd(i) = "or>"
XuanZeji.Select acSelectionSetAll, , , Ftt, Fdd '
搞定,这样就比cass的更全面一些了。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
x
|