Thanks for your reply, and I think I am partly there.
I have managed to produce the following code, which returns false and doesn’t add the category to the parameter:
import clr
clr.AddReference('ProtoGeometry')
import Autodesk.DesignScript.Geometry
# Import Element wrapper extension methods
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
# Import geometry conversion extension methods
clr.ImportExtensions(Revit.GeometryConversion)
# Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
# Import RevitAPI
clr.AddReference("RevitAPI")
from Autodesk.Revit.DB import *
import System
from System import Array
from System.Collections.Generic import *
import sys
pyt_path = r'C:\Program Files (x86)\IronPython 2.7\Lib'
sys.path.append(pyt_path)
#categories to add to parameter
cat1 = UnwrapElement(IN[0])
cat2 = UnwrapElement(IN[1])
#Parameter name
param = "test"
iter = doc.ParameterBindings.ForwardIterator()
setCat = None
categorySet = doc.Application.Create.NewCategorySet()
categorySet.Insert(cat1)
categorySet.Insert(cat2)
out=0
while iter.MoveNext():
definition = iter.Key
elemBind = iter.Current
if definition.Name == param:
out = elemBind.GetType()
TransactionManager.Instance.EnsureInTransaction(doc)
instanceBinding = doc.Application.Create.NewInstanceBinding(categorySet)
setCat = doc.ParameterBindings.ReInsert(definition, instanceBinding,BuiltInParameterGroup.PG_TEXT)
TransactionManager.Instance.TransactionTaskDone()
OUT = setCat