Add categories to existing parameter

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