Assigning values for the "Key-name" parameter in a Key Schedule parameter

Hello!
I’m starting to learn Dynamo, and I’ve faced mysefl struggling to set the value for a Key Schedule.

I got the Key Schedule parameter “BitolaPressão”, and I want to use Dynamo to write this value in some duct sections, based on a list.
The problem is that the first value of the list is being repeated for all the Names of the schedule, and I want to match the value “line by line” from my input list. Must be a list structure problem, but I didn’t find info on writing info on the “Key-name” parameter inside a Key Schedule parameter.

@EGJ_INTT ,

i do not have straigt forwart solution but here some snippets to get closer

#📦 Variables
p_key_name   = 'Room Style' # Write Your Key-Param Name!
key_schedule = None

#1️⃣ Get all Schedules
all_schedules = FilteredElementCollector(doc)\
                .OfCategory(BuiltInCategory.OST_Schedules)\
                .ToElements()

#2️⃣ Get Key-Schedule            
for schedule in all_schedules:
    try:
        if schedule.KeyScheduleParameterName == p_key_name:
            key_schedule = schedule
            break
    except: 
        pass

#💡 Ensure you found matching schedule
if not key_schedule:
    forms.alert("Can't find matching Schedule.\nPlease Try Again.",
                                                    exitscript=True)
    
#3️⃣ Get Possible Key-Parameter Values
key_values = FilteredElementCollector(doc, key_schedule.Id).ToElements()
dict_key_values = {key.Name : key.Id for key in key_values}

#OUT = 

you have to adapt it to your project… this stuffs runs currently in PyRevit

t = Transaction(doc,'Change KeyParam')
t.Start()  # 🔓

random_id = dict_key_values.values()[0]
p_key     = room.LookupParameter(p_key_name )
p_key.Set(random_id)

t.Commit() # 🔒

KR

Andreas

1 Like