块属性的输出??
在输出块的属性时,用到"GetAttributes"方法,但"GetAttributes"又是由"AcadBlockReference"得到.<br>在我找到的例子中"AcadBlockReference"都是由插入块时得到.<br>
问:1)AcadBlockReference是不是只能由插入块时得到??<br>
2)如果块已存在(不需插入),该如何做??<br>
谢谢!!<br> AcadBlockReference不是只能由插入块时得到.<BR>如果块已存在(不需插入),选择块(用鼠标)或搜索块名都可. 块可以搜到,但属性该怎样显示呢? Dim basePnt As Variant<BR>Dim elemod As Object<BR>Dim pickblk As Object<BR>On Error Resume Next<BR>Me.Hide
ThisDrawing.Utility.GetEntity returnObj, basePnt, "请选择属性块进行编辑"<BR>Dim con()<BR>Dim xxx As Integer<BR>Dim yyy As Integer<BR>Dim zzz As Integer<BR>MSFlexGrid1.Clear<BR>MSFlexGrid1.Rows = 1<BR>MSFlexGrid1.TextMatrix(0, 1) = "标记"<BR>MSFlexGrid1.TextMatrix(0, 2) = "提示"<BR>MSFlexGrid1.TextMatrix(0, 3) = "值"
'temp = False
If returnObj.ObjectName = "AcDbBlockReference" Then<BR> varAttributes = returnObj.GetAttributes<BR> ReDim con(UBound(varAttributes), 2)<BR> For i = LBound(varAttributes) To UBound(varAttributes)<BR> <BR> con(i, 0) = varAttributes(i).TagString<BR> 'con(i, 1) = elemod.PromptString<BR> con(i, 2) = varAttributes(i).TextString<BR> yyy = i<BR> Next i<BR> Set pickblk = ThisDrawing.Blocks(returnObj.Name)<BR> For Each elemod In pickblk<BR> If elemod.ObjectName = "AcDbAttributeDefinition" Then<BR> For xxx = 0 To yyy<BR> If con(xxx, 0) = elemod.TagString Then<BR> con(xxx, 1) = elemod.PromptString<BR> Exit For<BR> End If<BR> Next xxx<BR> End If<BR> Next elemod<BR> MSFlexGrid1.Rows = yyy + 2<BR> For i = 0 To yyy<BR> MSFlexGrid1.Row = i + 1<BR> MSFlexGrid1.Col = 1<BR> MSFlexGrid1.Text = con(i, 0)<BR> MSFlexGrid1.CellAlignment = 0<BR> <BR> MSFlexGrid1.Col = 2<BR> MSFlexGrid1.Text = con(i, 1)<BR> MSFlexGrid1.CellAlignment = 0<BR> <BR> MSFlexGrid1.Col = 3<BR> MSFlexGrid1.Text = con(i, 2)<BR> MSFlexGrid1.CellAlignment = 0<BR> Next i
Else
MsgBox "你选择的不是图块,请从新选择", vbOKOnly, "提示"<BR>End If
Me.Show
页:
[1]