Public Function GetNotes(ByVal layout As String) As String
Dim acDoc As Document = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument
Dim acDB As Database = acDoc.Database
Dim rValue As String = ""
Using acLckDoc = acDoc.LockDocument()
Using acTrans As Transaction = acDB.TransactionManager.StartTransaction
Dim acDict As DBDictionary = DirectCast(acTrans.GetObject(acDB.LayoutDictionaryId, OpenMode.ForRead), DBDictionary)
Dim lData As Xrecord
Try
Dim dataID As ObjectId = acDict.GetAt(layout)
lData = DirectCast(acTrans.GetObject(dataID, OpenMode.ForRead), Xrecord)
For Each tv As TypedValue In lData.Data
If tv.TypeCode = DxfCode.Text Then
rValue &= tv.Value.ToString() & vbCrLf
End If
Next
Catch
rValue = "No Notes for layout: " & layout
End Try
End Using
End Using
Return rValue
End Function
Public Sub SetNotes(ByVal notes As String, ByVal layout As String)
Dim acDoc As Document = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument
Dim acDB As Database = acDoc.Database
Using acLckDoc = acDoc.LockDocument()
Using acTrans As Transaction = acDB.TransactionManager.StartTransaction
Dim acDict As DBDictionary = DirectCast(acTrans.GetObject(acDB.LayoutDictionaryId, OpenMode.ForWrite), DBDictionary)
Dim lData As Xrecord
Try
'Does the xRecord already exist?
Dim dataID As ObjectId = acDict.GetAt(layout)
lData = DirectCast(acTrans.GetObject(dataID, OpenMode.ForWrite), Xrecord)
lData.Data = New ResultBuffer(New TypedValue(DxfCode.Text, notes))
Catch
'Apparently not, lets create a new one.
lData = New Xrecord()
lData.Data = New ResultBuffer(New TypedValue(DxfCode.Text, notes))
acDict.SetAt(layout, lData)
acTrans.AddNewlyCreatedDBObject(lData, True)
End Try
acTrans.Commit()
End Using
End Using
End Sub