Imports System Imports System.Collections.Generic Imports System.ComponentModel Imports System.Data Imports System.Drawing Imports System.Linq Imports System.Text Imports System.Windows.Forms Imports Autodesk.AutoCAD.Runtime Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.DatabaseServices Imports Autodesk.AutoCAD.Geometry Imports Autodesk.AutoCAD.EditorInput Namespace TextCount Public Class Form1 Inherits Form ' added button1, button2, datagridview1, label1 for test Private dgvsource As New SortedList(Of String, Integer)() Private bind As New BindingSource() Public Sub New() InitializeComponent() End Sub Private Sub testMtextCount() Dim doc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument Dim db As Database = doc.Database Dim ed As Editor = doc.Editor Dim pso As New PromptSelectionOptions() pso.MessageForRemoval = vbLf & "Failed to select mtexts!" pso.MessageForAdding = vbLf & "Please, select the mtexts on screen: " ' build filter to select the mtexts Dim filter As New SelectionFilter(New TypedValue() {New TypedValue(0, "*text")}) ' perform mtext selection Dim sres As PromptSelectionResult = ed.GetSelection(pso, filter) ' might be SelectAll instead If sres.Status <> PromptStatus.OK Then Return End If Try Dim sset As SelectionSet = sres.Value Using tr As Transaction = db.TransactionManager.StartTransaction() For Each sobj As SelectedObject In sset Dim ent As Entity = TryCast(tr.GetObject(sobj.ObjectId, OpenMode.ForRead, False), Entity) Dim txt As String = "" Dim mtx As MText = TryCast(ent, MText) If mtx IsNot Nothing Then txt = mtx.Text End If Dim dtx As DBText = TryCast(ent, DBText) If dtx IsNot Nothing Then txt = dtx.TextString End If Dim datum As Object() = New Object() {txt, 1} If Not dgvsource.ContainsKey(txt) Then dgvsource.Add(txt, 1) Else dgvsource(txt) += 1 End If Next tr.Commit() End Using Catch ex As System.Exception Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog(ex.Message & vbLf & ex.StackTrace) End Try End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Me.DataGridView1.AllowUserToOrderColumns = False Me.dataGridView1.AllowUserToAddRows = False Me.dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill End Sub Private Sub btnSelect_Click(sender As System.Object, e As System.EventArgs) Handles btnSelect.Click Me.DataGridView1.Columns.Clear() Me.Label1.Text = "" ' this.Hide();// if modeless testMtextCount() bind = New BindingSource() bind.DataSource = Nothing bind.DataSource = dgvsource Me.DataGridView1.DataSource = bind Me.DataGridView1.Columns(0).HeaderText = "MODEL" Me.DataGridView1.Columns(1).HeaderText = "QUANTITY" Me.DataGridView1.Columns(0).Width = Me.Width / 2 - 15 Me.DataGridView1.Columns(1).Width = Me.DataGridView1.Columns(0).Width / 2 Me.DataGridView1.DataMember = bind.DataMember Me.Label1.Text = "SUM RUNS: " Dim runs As String = dgvsource.Values.Sum().ToString() Me.Label1.Text = Convert.ToString(Me.Label1.Text) & runs 'clear data dgvsource.Clear() runs = "" ' this.Show();// if modeless End Sub Private Sub btnExit_Click(sender As System.Object, e As System.EventArgs) Handles btnExit.Click Me.Close() End Sub Friend WithEvents btnSelect As System.Windows.Forms.Button Friend WithEvents btnExit As System.Windows.Forms.Button Friend WithEvents DataGridView1 As System.Windows.Forms.DataGridView Friend WithEvents Label1 As System.Windows.Forms.Label Private Sub InitializeComponent() Me.btnSelect = New System.Windows.Forms.Button() Me.btnExit = New System.Windows.Forms.Button() Me.DataGridView1 = New System.Windows.Forms.DataGridView() Me.Label1 = New System.Windows.Forms.Label() CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'btnSelect ' Me.btnSelect.Location = New System.Drawing.Point(12, 339) Me.btnSelect.Name = "btnSelect" Me.btnSelect.Size = New System.Drawing.Size(166, 29) Me.btnSelect.TabIndex = 0 Me.btnSelect.Text = "Select Text / Mtext" Me.btnSelect.UseVisualStyleBackColor = True ' 'btnExit ' Me.btnExit.Location = New System.Drawing.Point(347, 339) Me.btnExit.Name = "btnExit" Me.btnExit.Size = New System.Drawing.Size(90, 29) Me.btnExit.TabIndex = 1 Me.btnExit.Text = "Exit" Me.btnExit.UseVisualStyleBackColor = True ' 'DataGridView1 ' Me.DataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize Me.DataGridView1.Location = New System.Drawing.Point(12, 38) Me.DataGridView1.Name = "DataGridView1" Me.DataGridView1.RowTemplate.Height = 24 Me.DataGridView1.Size = New System.Drawing.Size(425, 280) Me.DataGridView1.TabIndex = 2 ' 'Label1 ' Me.Label1.AutoSize = True Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.2!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte)) Me.Label1.ForeColor = System.Drawing.Color.Red Me.Label1.Location = New System.Drawing.Point(8, 9) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(65, 20) Me.Label1.TabIndex = 3 Me.Label1.Text = "Label1" ' 'Form1 ' Me.AutoScaleDimensions = New System.Drawing.SizeF(8.0!, 16.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.ClientSize = New System.Drawing.Size(449, 380) Me.Controls.Add(Me.Label1) Me.Controls.Add(Me.DataGridView1) Me.Controls.Add(Me.btnExit) Me.Controls.Add(Me.btnSelect) Me.Name = "Form1" Me.Text = "Form1" CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) Me.PerformLayout() End Sub End Class End Namespace