Community
I used in one of my application similar on the following methods
#Region "Xrecord Tools" Public Function cutArray(ByVal ar As String(), ByVal start As String, ByVal fin As String) As String() Dim n As Integer = Array.IndexOf(ar, start) Dim m As Integer = Array.IndexOf(ar, fin) Dim newar() As String = New String(m - n) {} Dim i As Integer = 0 For k As Integer = n + 1 To m - 1 newar(i) = ar(k) i += 1 Next Return newar End Function <CommandMethod("DisplayXRecord", "XD", CommandFlags.Modal Or CommandFlags.UsePickSet)> _ Public Sub XdataDisplay() Dim doc As Document = acApp.DocumentManager.MdiActiveDocument Dim ed As Editor = doc.Editor Using tr As Transaction = doc.Database.TransactionManager.StartTransaction Try Dim id As ObjectId = ed.GetEntity("Select your thing:").ObjectId Dim obj As DBObject = DirectCast(tr.GetObject(id, OpenMode.ForWrite), DBObject) Dim dict As DBDictionary = DirectCast(tr.GetObject(obj.ExtensionDictionary, OpenMode.ForWrite), DBDictionary) Dim xid As ObjectId = dict.GetAt("Foo_XRec") Dim xr As Xrecord = DirectCast(tr.GetObject(xid, OpenMode.ForWrite), Xrecord) Dim buff As ResultBuffer = xr.Data Dim tv() As TypedValue = buff.AsArray buff.Dispose() Dim list As New List(Of String) For Each tpv As TypedValue In tv list.Add(tpv.Value) Next Dim ar() As String = cutArray(list.ToArray, "Start_Array", "End_Array") Dim msg As String = "" For Each st As String In ar msg = msg & st & vbLf Next MsgBox("Foo_XRec: " & vbLf & msg) tr.Commit() Catch ex As Autodesk.AutoCAD.Runtime.Exception Application.ShowAlertDialog(ex.Message & vbLf & ex.StackTrace) Finally End Try End Using End Sub <CommandMethod("ArrayToXrecord", "AX", CommandFlags.Modal Or CommandFlags.UsePickSet)> _ Public Sub AddXrecord() Dim doc As Document = acApp.DocumentManager.MdiActiveDocument Dim ed As Editor = doc.Editor Using tr As Transaction = doc.Database.TransactionManager.StartTransaction Dim id As ObjectId = ed.GetEntity("Select your thing:").ObjectId Dim obj As DBObject = DirectCast(tr.GetObject(id, OpenMode.ForWrite), DBObject) obj.CreateExtensionDictionary() Dim dict As DBDictionary = DirectCast(tr.GetObject(obj.ExtensionDictionary, OpenMode.ForWrite), DBDictionary) Dim buff As New ResultBuffer Dim somearray() As String = {"Start_Array", "alpha", "bravo", "charlie", "delta", "End_Array"} For Each st As String In somearray buff.Add(New TypedValue(DxfCode.Text, st)) Next Dim myXRecord As New Xrecord myXRecord.Data = buff dict.SetAt("Foo_XRec", myXRecord) tr.AddNewlyCreatedDBObject(myXRecord, True) tr.Commit() End Using End Sub #End Region
Can't find what you're looking for? Ask the community or share your knowledge.