Here is a sample example, assuming that the parameter share file is loaded in Revit
import clr
import sys
import System
#import Revit API
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
import Autodesk.Revit.DB as DB
#import transactionManager and DocumentManager (RevitServices is specific to Dynamo)
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
uidoc = uiapp.ActiveUIDocument
app = uiapp.Application
def get_external_def_by_name(para_name):
global dictsharParaDef
for group, lst_external_def in dictsharParaDef.items():
for ext_def in lst_external_def:
if ext_def.Name == para_name:
return ext_def
lst_shparameter_name = IN[0]
lst_GroupType = IN[1]
lst_is_instance_parameter = IN[2]
#
result = []
# get all definitions in the SharedParameterFile
spf = app.OpenSharedParameterFile()
if spf is not None:
dictsharParaDef = {}
spfGroups = spf.Groups
for group in spfGroups:
setExternalDef = group.Definitions
dictsharParaDef[group.Name] = setExternalDef
if doc.IsFamilyDocument and spf is not None:
owner_family = doc.OwnerFamily
famManager = doc.FamilyManager
TransactionManager.Instance.ForceCloseTransaction()
TransactionManager.Instance.EnsureInTransaction(doc)
#
# add Parameters
for nameP, groupType, is_instance in zip(lst_shparameter_name, lst_GroupType, lst_is_instance_parameter):
ext_def = get_external_def_by_name(nameP)
#
if ext_def is not None:
famManager.AddParameter(ext_def, DB.ForgeTypeId(groupType.TypeId), is_instance)
result.append(f"parameter '{nameP}' added")
else:
result.append(f"parameter '{nameP}' failed")
TransactionManager.Instance.TransactionTaskDone()
OUT = result
the link mentioned has nothing to do with adding parameters to families…
