Hallo,
ich habe es mit Hilfe einiger Tipps hier aus dem Forum geschafft Attribut-Eingabeaufforderungen von Attributen eines oder mehrerer Blöcke in eine Listenansicht (ListView) einzulesen. Hierfür nochmals vielen Dank.
Jetzt besteht jedoch weiterhin das Problem, daß das Auslesen der Eingabeaufforderung (PromptString) bei großen Blöcken relativ lange dauert. Ich lese aus einem Auswahlsatz einen Block aus und prüfe, ob Attribute vorhanden sind. Da es sich hierbei um Blockreferenzen handelt, kann das Objekt "PromptString" meines Wissens hier nicht ausgelesen werden. Hierfür lese ich das Objekt "Blocks" aus und suche hier in einer weiteren Schleife die zu dem Attribut gehörende Eingabeaufforderung und das dauert bei großen Blöcken natürlich seine Zeit. Hat vielleicht jemand einen Tipp wie man das Problem eleganter und zeitsparender lösen kann??
Zur Hilfe stelle ich einen Auszug unten an.
Für Eure Hilfe schon mal vielen Dank vorab.
mfG
Wolfgang
For Each ent In sset
If ent.EntityName = "AcDbBlockReference" Then
BlFound = True
BlName = ent.Name
Set Blk = objDoc.Blocks(BlName)
If ent.HasAttributes Then
AttFound = True
AttArray = ent.GetAttributes
AnzAttr = UBound(AttArray)
For Count = LBound(AttArray) To UBound(AttArray)
If StrComp(AttArray(Count).EntityName, "AcDbAttribute", 1) = 0 Then
AttTagString = AttArray(Count).TagString
AttTextString = AttArray(Count).TextString
Set listView = frmAttBearb.LvAttribute.ListItems.Add()
listView.Text = AttTagString
listView.SubItems(1) = AttTextString
listView.SubItems(3) = BlName
For x% = 0 To Blk.Count
If Blk.Item(x%).ObjectName = "AcDbAttributeDefinition" Then
Set Attrib = Blk.Item(x%)
TagStr = Attrib.TagString
If TagStr = AttTagString Then
AttPromptString = Attrib.PromptString
listView.SubItems(4) = AttPromptString
Exit For
End If
End If
Next x%
End If
Next Count
End If
End If
Next ent
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP