How to access viewtemplate`s Include Parameter?

Hello,

thats my code so far… i can`t get the Parameter, i would like to set it finially!
https://thebuildingcoder.typepad.com/blog/2018/11/view-template-include-setting.html

views_all = FilteredElementCollector(doc).OfClass(View).ToElements()

# 0️⃣ get viewTemplate
viewTemplate = [v for v in views_all if v.IsTemplate == True]
print(viewTemplate)

for i in viewTemplate:
    print(i.Name)

# 1️⃣ Create a list so that I can use linq
view_params = [ v.Parameters for v in viewTemplate]

for i in view_params:
    print(i)

# 2️⃣ Get parameters by name (safety checks needed)
#model_override_param = [p for p in view_params if p.Definition.Name == "V/G Overrides Model"]
#view_scale_param = [p for p in view_params if p.Definition.Name == "View Scale"]

# 3️⃣ Set includes
for i in viewTemplate:
    p = i.SetNonControlledTemplateParameterIds #[model_override_param.Id, view_scale_param.Id])
    print(p)



do you have a hint?

KR

Andreas

A bit more than a hint :wink:
I did this tool a while back

from pyrevit import script, revit, DB, forms

output = script.get_output()
output.close_others()

doc = revit.doc

templates = [v for v in DB.FilteredElementCollector(
    doc).OfClass(DB.View).ToElements() if v.IsTemplate]

view_templates, view_templates_names = [], []
for template in templates:
    if str(template.ViewType) != 'ThreeD':
        view_templates.append(template)

params_names, params = [], []
for template in view_templates:
    for p in template.Parameters:
        if p.Definition.Name not in params_names:
            params.append(p)
            params_names.append(p.Definition.Name)

selected_view_templates = forms.SelectFromList.show(
    view_templates, button_name='Select Template', multiselect=True, name_attr='Name')

parameters_processed = forms.SelectFromList.show(
    params_names, button_name='Select Parameters', multiselect=True)
for param in params:
    if param.Definition.Name not in parameters_processed:
        params.remove(param)
params_ids = [p.Id for p in params]

inclusion = forms.CommandSwitchWindow.show(
    ['Include', 'Exclude'], message='Include or Exclude parameters from selected templates?')
if inclusion == 'Include':
    include = False
else:
    include = True

with revit.Transaction('set params in view templates'):
    results = []
    for template in selected_view_templates:
        all_params = template.GetTemplateParameterIds()
        switch_off_param_ids = params_ids

        non_controlled_param_ids = template.GetNonControlledTemplateParameterIds()
        for switch_off_param_id in switch_off_param_ids:
            if include:
                non_controlled_param_ids.Add(switch_off_param_id)
            else:
                non_controlled_param_ids.Remove(switch_off_param_id)

        template.SetNonControlledTemplateParameterIds(non_controlled_param_ids)
        results.append(template)

I may approach this slightly differently now.

1 Like