1, add the extended data
Private Sub adding extension data ( ByVal ENT of As the Entity, ByVal DictName of As String , ByVal the TypedValue of As the TypedValue) If ent.ExtensionDictionary = Nothing Then ent.CreateExtensionDictionary() End If Using tr As Transaction = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database.TransactionManager.StartTransaction Dim xDict As DatabaseServices.DBDictionary = tr.GetObject(ent.ExtensionDictionary, OpenMode.ForWrite) If Not xDict.Contains(DictName) Then xDict.UpgradeOpen() Dim xrec As New Xrecord Dim rb As New ResultBuffer rb.Add(TypedValue) xrec.Data = rb xDict.SetAt (DictName, xrec) tr.AddNewlyCreatedDBObject(xrec, True) End If End Using End Sub
2, the extension data read
Private Function 读取扩展数据(ByVal ent As Entity, ByVal DictName As String) As Object Dim doc As Autodesk.AutoCAD.ApplicationServices.Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument Using TR As Autodesk.AutoCAD.DatabaseServices.Transaction = doc.TransactionManager.StartTransaction If ent.ExtensionDictionary.IsNull Then Return Nothing Else Dim xDict As DBDictionary = CType(Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.TransactionManager.GetObject(ent.ExtensionDictionary, DatabaseServices.OpenMode.ForRead), DBDictionary) If xDict.Contains(DictName) Then Dim xRecId As ObjectId = xDict.GetAt(DictName) Dim xRec As Xrecord = CType(TR.GetObject(xRecId, DatabaseServices.OpenMode.ForRead), Xrecord) Return xRec.Data.AsArray(0).Value Else Return Nothing End If End If End Using End Function