Code:
Dim acBlkTbl As BlockTable
acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead)
Dim nCnt As Integer = 0
'For Each acobjectID As ObjectId In acBlkTbl
Dim acBlkTblRec As BlockTableRecord = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _
OpenMode.ForRead) Dim acBref As BlockReference
'Filterkriterien für Blockreferenzen setzen
Dim acTypValAr(1) As TypedValue
acTypValAr.SetValue(New TypedValue(DxfCode.Start, "INSERT"), 0) ' Blockfreferenzen
acTypValAr.SetValue(New TypedValue(DxfCode.ExtendedDataRegAppName, "AJO"), 1) 'Extented Datas die zuvor beim Einfügen erzeugt wurden
'Filterkriterien dem Filter zuweisen
Dim acSelFtr As SelectionFilter = New SelectionFilter(acTypValAr)
Dim acSSPrompt As PromptSelectionResult
'Alle Objekte der Zeichnung gemäß Filterkriterien wählen
acSSPrompt = acDoc.Editor.SelectAll(acSelFtr)
blockSS = acSSPrompt.Value
'Einfügepunkt der Legende
Dim pntInsert As Point3d = pPtRes.Value '
'Alle Blöcke durchlaufen
Dim acssObj As SelectedObject
If Not IsDBNull(blockSS) And Not blockSS Is Nothing Then
For Each acssObj In blockSS
'' Open the selected object for read
Dim acEnt As Entity = acTrans.GetObject(acssObj.ObjectId, _
OpenMode.ForRead)
acBref = acEnt
'kopierte Blöcke ignorieren
If Not acBref.Name Like "*U*" Then '------------Hier versuche ich den Filter zu setzen
'Falls dynamischer Block, Extended Data zuweisen
If acBref.IsDynamicBlock Then
Dim pc As DynamicBlockReferencePropertyCollection = acBref.DynamicBlockReferencePropertyCollection
Dim prop As DynamicBlockReferenceProperty
Dim rb As ResultBuffer = acEnt.XData
'Blockname zuweisen
strBlockname = rb(1).Value()
'Sichbarkeitstatus zuweisen
blnBlocktext = True
For Each prop In pc
If prop.PropertyName Like "Sichtbarkeit*" Then
strSichtbarkeitsstatus = prop.Value
strBlockText = strSichtbarkeitsstatus
blnBlocktext = False
End If
Next
If blnBlocktext = True Then
strBlockText = strBlockname
strSichtbarkeitsstatus = Nothing
End If
Else
'Falls kein dynamischer Block
strBlockname = acBref.Name
strBlockText = acBref.Name
End If
Dim vRot As Vector3d = pntInsert.GetVectorTo(New Point3d(pntInsert.X + 5, pntInsert.Y, 0))
'Abfrage ob die Blockrefernz schon in der Legende vorhanden
If Not arrDublikat.Contains(strBlockname & "-" & strSichtbarkeitsstatus) Then
'Sub aufrufen und Block einfügen
hzInsertBlockMSWithAttributes(New Point3d(pntInsert.X, pntInsert.Y - (y_offset * m_nCnt), 0), strBlockname, My.Settings.Blockskalierung, "LEG-ARMA", Nothing, "", 3, WiB(0), vRot, strSichtbarkeitsstatus)
'Text für Block positionieren
AddtextwithLayer(acDoc, acCurDb, New Point3d(pntInsert.X, pntInsert.Y - (y_offset * m_nCnt), 0), strBlockText, 25, 5)
strDublikat = strBlockname & "-" & strSichtbarkeitsstatus
arrDublikat.Add(strDublikat)
m_nCnt = m_nCnt + 1
End If
End If
Next
End If