mlyd 发表于 2005-6-7 13:11:00

块属性的输出??

在输出块的属性时,用到"GetAttributes"方法,但"GetAttributes"又是由"AcadBlockReference"得到.<br>
在我找到的例子中"AcadBlockReference"都是由插入块时得到.<br>
问:1)AcadBlockReference是不是只能由插入块时得到??<br>
                               2)如果块已存在(不需插入),该如何做??<br>
谢谢!!<br>

artuo 发表于 2005-6-7 22:44:00

AcadBlockReference不是只能由插入块时得到.<BR>如果块已存在(不需插入),选择块(用鼠标)或搜索块名都可.

mlyd 发表于 2005-6-8 18:04:00

块可以搜到,但属性该怎样显示呢?

CLARKLEE 发表于 2005-6-9 12:07:00

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]
查看完整版本: 块属性的输出??