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)
A bit more than a hint
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)