You're asking for a way to loop through all dimensions on a drawing sheet, place a numbered sketch symbol (like a balloon), and generate an inspection table listing the dimension values and tolerances. Great idea—this is useful for inspection drawings.
Below is a basic iLogic rule that does most of the work. It:
- Loops through all dimensions on the active sheet
- Places a numbered balloon (simple leader note) next to each dimension
- Fills a custom table with the dimension number, nominal value, and tolerance range
I'm not using a sketch symbol in this example because that setup depends heavily on your template and symbol definitions. You can find several good posts on the forum explaining how to insert sketched symbols using SketchedSymbolDefinitions and SketchedSymbols.Add.
iLogic Rule (Work-in-Progress, but functional):
Public Sub Main()
Dim doc As DrawingDocument = ThisDoc.Document
Dim sheet As Sheet = doc.ActiveSheet
Dim table As CustomTable = PlaceCustomTable(sheet)
For i As Integer = 1 To sheet.DrawingDimensions.Count
Dim dimension As DrawingDimension = sheet.DrawingDimensions.Item(i)
PlaceBalloon(sheet, dimension, i)
AddRow(table, dimension, i)
Next
End Sub
Private Sub AddRow(table As CustomTable, dimension As DrawingDimension, number As Integer)
Dim value = dimension.ModelValue.ToString("F2") ' Nominal value
Dim min = dimension.Tolerance.Lower
Dim max = dimension.Tolerance.Upper
Dim content As String() = {number, value, min.ToString("F2"), max.ToString("F2")}
table.Rows.Add(0, True, content)
End Sub
Private Function PlaceCustomTable(sheet As Sheet) As CustomTable
Dim tableInsertPoint = ThisApplication.TransientGeometry.CreatePoint2d(1, sheet.Height / 2)
Dim columnTitles As String() = {"No", "Specification", "Min", "Max"}
Dim table As CustomTable = sheet.CustomTables.Add("Check table", tableInsertPoint, 4, 1, columnTitles)
table.Rows.Item(1).Delete() ' Remove the initial empty row
Return table
End Function
Private Sub PlaceBalloon(sheet As Sheet, dimension As DrawingDimension, number As Integer)
Dim textOrigin As Point2d = dimension.Text.Origin
Dim leaderPoints As ObjectCollection = ThisApplication.TransientObjects.CreateObjectCollection()
' Example offset for balloon
leaderPoints.Add(ThisApplication.TransientGeometry.CreatePoint2d(textOrigin.X + 1, textOrigin.Y + 1))
leaderPoints.Add(textOrigin)
' Simple leader note as a placeholder for a balloon/sketch symbol
sheet.DrawingNotes.LeaderNotes.Add(leaderPoints, number)
End Sub
Jelte de Jong
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

Blog: hjalte.nl - github.com