Pick New Host from the API?

Has the python code changed since this original script was written?

This is what I have but I keep getting errors about “Top Rail” having no ID on the second selected railing and it will not change its host for some reason. PS I only have 2 selected railing elements, but it does report as 4 ids in the dynamo selection script box…

import clr
clr.AddReference(‘RevitAPI’)
**from Autodesk.Revit.DB import ***
clr.AddReference(“RevitServices”)
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument

railings = UnwrapElement(IN[0])
newHost = UnwrapElement(IN[1])

TransactionManager.Instance.EnsureInTransaction(doc)

for i in railings:
** i.HostId = newHost.Id**
TransactionManager.Instance.TransactionTaskDone()

OUT = railings

image

image