mlyd 发表于 2005-5-31 18:49:00

[求助]选择集的问题?

Public elem as object
Public 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

mccad 发表于 2005-5-31 22:03:00

1.块为什么写成选择集,所以显示为零并不奇怪。
2.你选择集的概念还不情况,需要多从这方面下功夫。

xxsheng 发表于 2005-6-1 16:41:00


Set blockRefObj = ThisDrawing.SelectionSets.Item("XXX")//很怀疑你到底写了这个程序没有?ThisDrawing.SelectionSets.Item得到的是SelectionSet对象,而不是 AcadBlockReference对象.

mlyd 发表于 2005-6-1 21:03:00

如果我已知块名,该用什么方法得到块的属性呢?

今晚打老虎 发表于 2005-6-2 10:19:00

临时插入一个块,得到属性然后删掉。

CLARKLEE 发表于 2005-6-9 17:52:00

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

mlyd 发表于 2005-6-10 10:13:00

谢谢!
程序已经试过了,可以得到块属性!
但如果已知块名,是否能不用选择得到属性呢?

wyj7485 发表于 2005-6-10 10:31:00


不能.
页: [1]
查看完整版本: [求助]选择集的问题?