Imports System.Text
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.EditorInput
<Assembly: CommandClass(GetType(MTextFromDataTable.MyCommands))>
Namespace MTextFromDataTable
Public Class MyCommands
<CommandMethod("MTFDT")> Public Sub MTFDT()
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim db As Database = doc.Database
Dim ed As Editor = doc.Editor
Dim table As New System.Data.DataTable
table.Columns.Add("Dosage", GetType(Integer))
table.Columns.Add("Drug", GetType(String))
table.Columns.Add("Patient", GetType(String))
table.Columns.Add("Date", GetType(DateTime))
table.Rows.Add(25, "Indocin", "David", DateTime.Now)
table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now)
table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now)
table.Rows.Add(21, "Combivent", "Janet", DateTime.Now)
table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now)
Dim ppo As New PromptPointOptions(vbCrLf & "Insertion Point")
Dim ppr As PromptPointResult
ppr = ed.GetPoint(ppo)
If ppr.Status <> PromptStatus.OK Then
ed.WriteMessage(vbCrLf & "Cancelled.")
Exit Sub
End If
Dim insertPt As Point3d = ppr.Value
Using tr As Transaction = db.TransactionManager.StartTransaction
Dim mt As New MText
Dim mtid As ObjectId
mt.Location = insertPt
Dim sb As New StringBuilder()
For i = 0 To table.Rows.Count - 1
sb.AppendLine(table.Rows(i).Item(0) & ControlChars.Tab & table.Rows(i).Item(1) & ControlChars.Tab & table.Rows(i).Item(2) & ControlChars.Tab & table.Rows(i).Item(3))
Next
mt.Contents = sb.ToString
Dim bt As BlockTable = CType(tr.GetObject(db.BlockTableId, OpenMode.ForRead), BlockTable)
Dim ms As BlockTableRecord = CType(tr.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForWrite), BlockTableRecord)
mtid = ms.AppendEntity(mt)
tr.AddNewlyCreatedDBObject(mt, True)
tr.Commit()
End Using
End Sub
End Class
End Namespace