You can set a MultiValue list after setting the "WALL_THICKNESS" Parameter to a value on that list:
'Triggers rule to run when parameter is changed:
Dim curOption As String = DIN2605
'Current List: ("DN10", "DN20", "DN25", "DN32")
If curOption = "DN10"
Parameter("EXTERNAL_Ø") = 21.3 mm
Parameter("R") = 28 mm
Parameter("WALL_THICKNESS") = 2 mm ' temporary value set to lowest in list
'Set List Options:
MultiValue.SetList("WALL_THICKNESS", 2 mm, 4 mm, 6 mm, 8 mm)
Else If curOption = "DN20"
Parameter("EXTERNAL_Ø") = 23.3 mm
Parameter("R") = 30 mm
Parameter("WALL_THICKNESS") = 5 mm ' temporary value set to lowest in list
'Set List Options:
MultiValue.SetList("WALL_THICKNESS", 5 mm, 6 mm, 7 mm, 10 mm)
Else If curOption = "DN25"
Parameter("EXTERNAL_Ø") = 26.3 mm
Parameter("R") = 32 mm
Parameter("WALL_THICKNESS") = 8 mm ' temporary value set to lowest in list
'Set List Options:
MultiValue.SetList("WALL_THICKNESS", 8 mm, 10 mm, 12 mm, 14 mm)
Else If curOption = "DN32"
Parameter("EXTERNAL_Ø") = 27.3 mm
Parameter("R") = 34 mm
Parameter("WALL_THICKNESS") = 5 mm ' temporary value set to lowest in list
'Set List Options:
MultiValue.SetList("WALL_THICKNESS", 5 mm) 'Not sure what these could be
End If
'Update Document
InventorVb.DocumentUpdate()
This should still only trigger if the "DIN2605" Parameter gets changed, or if you use run all rules. So it could overwrite your selection if you change the list value and then run the rule.
So here is a more complex rule that should avoid overwriting, unless the current value is not a part of the new list:
Sub Main
'Triggers rule to run when parameter is changed:
Dim curOption As String = DIN2605
'Current List: ("DN10", "DN20", "DN25", "DN32")
Dim WallThicknesses As New List(Of String)
If curOption = "DN10"
WallThicknesses.AddRange({"2 mm", "4 mm", "6 mm", "8 mm"})
Parameter("EXTERNAL_Ø") = 21.3 mm
Parameter("R") = 28 mm
'Check current against list:
If NotIncluded(Parameter.Param("WALL_THICKNESS").Expression, WallThicknesses) Then Parameter("WALL_THICKNESS") = WallThicknesses.Item(0)
'Set List Options:
MultiValue.List("WALL_THICKNESS") = WallThicknesses
Else If curOption = "DN20"
WallThicknesses.AddRange({"5 mm", "6 mm", "7 mm", "10 mm"})
Parameter("EXTERNAL_Ø") = 23.3 mm
Parameter("R") = 30 mm
'Check current against list:
If NotIncluded(Parameter.Param("WALL_THICKNESS").Expression, WallThicknesses) Then Parameter("WALL_THICKNESS") = WallThicknesses.Item(0)
'Set List Options:
MultiValue.List("WALL_THICKNESS") = WallThicknesses
Else If curOption = "DN25"
WallThicknesses.AddRange({"8 mm", "10 mm", "12 mm", "14 mm"})
Parameter("EXTERNAL_Ø") = 26.3 mm
Parameter("R") = 32 mm
'Check current against list:
If NotIncluded(Parameter.Param("WALL_THICKNESS").Expression, WallThicknesses) Then Parameter("WALL_THICKNESS") = WallThicknesses.Item(0)
'Set List Options:
MultiValue.List("WALL_THICKNESS") = WallThicknesses
Else If curOption = "DN32"
WallThicknesses.AddRange({"5 mm"})
Parameter("EXTERNAL_Ø") = 27.3 mm
Parameter("R") = 34 mm
'Check current against list:
If NotIncluded(Parameter.Param("WALL_THICKNESS").Expression, WallThicknesses) Then Parameter("WALL_THICKNESS") = WallThicknesses.Item(0)
'Set List Options:
MultiValue.List("WALL_THICKNESS") = WallThicknesses
End If
'Update Document
InventorVb.DocumentUpdate()
End Sub
Function NotIncluded(testString As String, sampleList As List(Of String)) As Boolean
Dim Result As Boolean = True 'Default Response
'Check list for match
For Each s As String In sampleList
If testString = s Then Result = False : Return Result 'Return match found
Next
'Return no match found
Return Result
End Function
Let me know if you have any questions, or if this is not working as intended