The below rule is the simplest that I can think of to establish a working rule. This will place symbols from a looping list and then stack them on top of each other. The symbols must contain text boxes and must be in the drawing.


Sub Main
'[ Set the Symbols To work With. They must be In the drawing
Names.add("Note1")
Names.add("Note2")
Names.add("Note3")
Dim Selection As String
Do
Selection = InputListBox("Prompt", Names, d0, Title := "Title", ListName := "List")
If Len(Selection)<> 0 Then
Notes.add(Selection)
End If
Loop While Len(Selection)>0
']
Dim oSketchedSymbolDef As SketchedSymbolDefinition
Dim oSketchedSymbol As SketchedSymbol
Dim oDrawDoc As DrawingDocument'This assumes a drawing document is active.
oDrawDoc = ThisApplication.ActiveDocument ' a reference to the drawing document.
Dim oSheet As Sheet
oSheet = oDrawDoc.ActiveSheet
Dim oTG As TransientGeometry
oTG = ThisApplication.TransientGeometry
Notes.Reverse 'Reverse list to add first items selected last
For Each Name In Notes 'Loop through collection and add symbol to drawing
oSketchedSymbolDef = oDrawDoc.SketchedSymbolDefinitions.Item(Name)' Obtain a reference to the desired sketched symbol definition.
Dim oTGPoint As Point2d
oTGPoint = oTG.CreatePoint2d(0, 0)
oSketchedSymbol = oSheet.SketchedSymbols.Add(oSketchedSymbolDef, oTGPoint)' Add an instance of the sketched symbol definition to the sheet.
Next
MoveNote(oDrawDoc, oSheet, oTG)
End Sub
Dim Names As New ArrayList
Dim Notes As New ArrayList
Dim Name As String
Sub MoveNote(oDrawDoc As DrawingDocument,oSht As Sheet,oTG As TransientGeometry)
For Each Name In Notes
For Each sym As SketchedSymbol In oSht.SketchedSymbols'Loop through each symbol to identify object
If Name = sym.Name Then
Dim LSCX, LSCY As Double
LSCX = oSht.Border.RangeBox.MinPoint.X'Left Sheet Corner
LSCY =oSht.Border.RangeBox.MinPoint.Y'Left Sheet Corner
Dim oTextBox As Inventor.TextBox
oTextBox = sym.Definition.Sketch.TextBoxes(1)
Dim TextWidth, TextHeight As Double
TextWidth = oTextBox.RangeBox.MaxPoint.X - oTextBox.RangeBox.MinPoint.X
TextHeight = oTextBox.RangeBox.MaxPoint.Y - oTextBox.RangeBox.MinPoint.Y
Dim oSpace As Double'give some space between symbols
oSpace = 0.3
Dim NewHeight As Double 'Stack the symbols starting from bottom
NewHeight = (TextHeight) + NewHeight + oSpace
Dim oTGPoint As Point2d
oTGPoint = oTG.CreatePoint2d(LSCX+TextWidth/2+oSpace, LSCY+NewHeight)
sym.Position = oTGPoint
End If
Next
Next
End Sub
Other methods using ilogic would be to create a boolean form in the symbols library, create a list , assign it to a global variable then go back to the drawing and retrieve this list and place the symbols based on this list. The main reason to use the global variables is to avoid having to create parameters in each drawing in order to launch the ilogic form. This is more complex and maybe not a viable solution.

Another method still and likely the best functional solution is to create a VBA form, add the symbols names from the library then retrieve the symbols from the library and place on the Drawing.

If this solved a problem, please click (accept) as solution.
Or if this helped you, please, click (like)
Regards
Alan