[求助]选择集的问题?
Public elem as objectPublic subelem as object
For Each elem in ThisDrawing.blocks
label1.caption = elem.name
next
在上面的程序中,我可以得到全部块名,但在
label2.caption.caption=ThisDrawing.SelectionSets.count中却显示块为零,这是为什么呢?
另外,如果我已知块名为“XXX”,要得到其中的属性,用一下程序行吗?
Dim blockRefObj As AcadBlockReference
Dim varAttributes As Variant
Dim con(26) as string
'
块中总数已知
Dim don(26) as string
Dim I as integer
varAttributes = blockRefObj.GetAttributes
Set blockRefObj = ThisDrawing.SelectionSets.Item("XXX")
For I = LBound(varAttributes) To UBound(varAttributes)
con(26) = varAttributes(I).TagString
don(26) = varAttributes(I).textString
next
1.块为什么写成选择集,所以显示为零并不奇怪。
2.你选择集的概念还不情况,需要多从这方面下功夫。
Set blockRefObj = ThisDrawing.SelectionSets.Item("XXX")//很怀疑你到底写了这个程序没有?ThisDrawing.SelectionSets.Item得到的是SelectionSet对象,而不是 AcadBlockReference对象.
如果我已知块名,该用什么方法得到块的属性呢?
临时插入一个块,得到属性然后删掉。 Private Sub CommandButton6_Click()
' Begin the selection
Dim basePnt As Variant
Dim objatts As Variant
Dim i As Integer
On Error Resume Next
'隐藏对话框
Me.Hide
'以点选方式获取图元
ThisDrawing.Utility.GetEntity returnObj, basePnt, "Select an object"
If returnObj.ObjectName = "AcDbBlockReference" Then
'returnObj.color = acRed
'returnObj.Update
'returnObj.color = acByLayer
'returnObj.Update
ComboBox5.Clear
ComboBox6.Clear
ComboBox7.Clear
ComboBox5.AddItem returnObj.Name
ComboBox5.ListIndex = 0
objatts = returnObj.GetAttributes
For i = LBound(objatts) To UBound(objatts)
ComboBox6.AddItem objatts(i).TagString
'ComboBox5.AddItem objatts(i).PromptString
ComboBox7.AddItem objatts(i).TextString
Next i
Else
x = MsgBox("你选择的不是图块,请从新选择", vbOKOnly, "提示")
End If
Me.Show
End Sub 谢谢!
程序已经试过了,可以得到块属性!
但如果已知块名,是否能不用选择得到属性呢?
不能.
页:
[1]