Code:
Public Sub Finde_Block(ByVal iy As Integer)
Dim mydoc As Document = DocumentManager.MdiActiveDocument
Dim mydb As Database = mydoc.Database
Dim myed As Editor = mydoc.Editor Using trans As Transaction = mydoc.TransactionManager.StartTransaction
Try
Dim laymngr As LayoutManager = LayoutManager.Current
Dim la As Layout = trans.GetObject(laymngr.GetLayoutId(laymngr.CurrentLayout), OpenMode.ForRead)
Dim LaName As String = la.LayoutName
Dim MyFiList(2) As TypedValue
MyFiList.SetValue(New TypedValue(DxfCode.Start, "INSERT"), 0)
MyFiList.SetValue(New TypedValue(DxfCode.BlockName, "*Info_Materialien*,U1*"), 1)
MyFiList.SetValue(New TypedValue(DxfCode.LayoutName, LaName), 2)
Dim MyFilter As New SelectionFilter(MyFiList)
Dim res As PromptSelectionResult = myed.SelectAll(MyFilter)
If res.Status <> PromptStatus.OK Then
Return
End If
Dim selSet As SelectionSet = res.Value
Dim idArray As ObjectId() = selSet.GetObjectIds()
For Each blkId As ObjectId In idArray
Dim blkRef As BlockReference = DirectCast(trans.GetObject(blkId, OpenMode.ForRead), BlockReference)
Dim btr As BlockTableRecord = DirectCast(trans.GetObject(blkRef.BlockTableRecord, OpenMode.ForRead), BlockTableRecord)
'Prüfen ob überhaupt Blöcke gefunden werden, ja, alle, nur nicht der dynmische - Info_Materialien.
'MsgBox("Blockname = " & btr.Name)
If btr.IsDynamicBlock Then
For Each mydynProp As DynamicBlockReferenceProperty In blkRef.DynamicBlockReferencePropertyCollection
If mydynProp.PropertyName = "Abstand1" Then
mydynProp.Value = iy * 5.684
End If
Next
End If
Next
trans.Commit()
Catch ex As Autodesk.AutoCAD.Runtime.Exception
MsgBox(ex.Message)
End Try
End Using
End Sub