请教:在VBA中如何使对象改变图层(补充一下)
谢谢斑竹大人刚才给我的回答,可能我的问题问得不是很清楚。我要做的是:把layer1中的所有对象都变成layer3的对象,但layer2中的不变。但是我不知道到底有多少对象,所以没办法改变对象属性啦,只能改变图层属性。类似于autocad脚本:
layer
lock
layer2
unlock
layer1
select
all
change
p
la
layer3
谢谢! 选择集+过滤器,选择一层所有对象
Sub t6()<BR>On Error Resume Next<BR>Dim i As AcadEntity<BR>Dim ft(0) As Integer, fd(0)<BR>Dim ss As AcadSelectionSet<BR>ThisDrawing.SelectionSets("CURRENT").Delete<BR>Set ss = ThisDrawing.ActiveSelectionSet<BR>ft(0) = 8: fd(0) = "Layer1"<BR>ss.Select acSelectionSetAll, , , ft, fd<BR>For Each i In ss<BR>i.Layer = "Layer3"<BR>Next i<BR>ss.Clear<BR>ss.Delete<BR>End Sub<BR> 如果块引用的图层是layer4,但块引用中包含有layer1的物体,
用选择集选择时块引用内layer1的物体不能被选中。 再请问一下,如果要选择两个图层里的对象,并使之加入另一个图层呢?
该怎么写代码? fd(0) = "Layer1,Layer2"
过滤器中用逗号隔开 Sub layer500()<BR> On Error Resume Next<BR> Dim i As AcadEntity<BR> Dim j As Integer<BR> Dim ft(0) As Integer<BR> Dim fd1(0 To 1) As String<BR> Dim fd(0)<BR> Dim ss As AcadSelectionSet<BR> <BR> ft(0) = 8<BR> fd1(0) = "24,10"<BR> fd1(1) = "W"<BR> For j = 0 To 1<BR> fd(0) = fd1(j)<BR> ThisDrawing.SelectionSets("CURRENT").Delete<BR> Set ss = ThisDrawing.ActiveSelectionSet<BR> ss.Select acSelectionSetAll, , , ft, fd
For Each i In ss<BR> i.Layer = j + 2<BR> Next i<BR> ss.Clear<BR> ss.Delete<BR> Next j<BR>End Sub
我想用这个循环来做到10,24层的对象改变到第2层,W层的对象改变到第3层,结果发现10,24层的也变成第3层的了.调试的时候发现当j=1时,选择集把原来已经改为第二层的对象又选择到ss中去了.不知是为什么?谢谢帮我解答! ss.Select acSelectionSetAll, , , ft, fd
前加入
ss.Clear ThisDrawing.SelectionSets("CURRENT").Delete<BR> Set ss = ThisDrawing.ActiveSelectionSet<BR> ss.Select acSelectionSetAll, , , ft, fd <BR> ss.Clear<BR> ss.Delete<BR>应该是这些选择集的操作产生的,删除之后,又设为当前选择集,可能是引用了以前创建的了。
Set ss = ThisDrawing.ActiveSelectionSet
ss.Clear<BR> ss.Select acSelectionSetAll, , , ft, fd <BR> <BR>直接这样试试。 斑竹能向我介绍一下选择集的方法的用法和作用吗?
能不能介绍一本介绍autocad vba的好书或者好的网站 选择集的方法的用法帮助里够明白了
页:
[1]
2