Place or change a family in a background document python combine nodes

Hi. I’m trying to change or place a title block family in multiple background documents. Trying to combine a couple of nodes together to do it. Would anyone be able to complete it or is it much more complex?

All Elements of Types in Document with FamilyInstance.SetType can get the last instance to set

import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *

clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)

clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

inputdocs = UnwrapElement(IN[0]) if isinstance(IN[0],list) else [UnwrapElement(IN[0])]
faminsts = UnwrapElement(IN[1])
famsymb = UnwrapElement(IN[2])
booleans = []
counter = 0

for inputdoc in inputdocs :
	if inputdoc == None:
		doc = DocumentManager.Instance.CurrentDBDocument
	elif inputdoc.GetType().ToString() == "Autodesk.Revit.DB.Document":
		doc = inputdoc
	elif inputdoc.GetType().ToString() == "Autodesk.Revit.DB.RevitLinkInstance":
		doc = inputdoc.GetLinkDocument()
	else: doc = None
	
TransactionManager.Instance.EnsureInTransaction(doc)
for item in faminsts:
	try:
		item.Symbol = famsymb[counter]
		booleans.append(True)
	except:
		booleans.append(False)
	counter += 1
TransactionManager.Instance.TransactionTaskDone()

OUT = (faminsts,booleans)

Or would using Family.InstanceByPointinView be easier?

Got this error though “Warning: IronPythonEvaluator.EvaluateIronPythonScript operation failed.
Traceback (most recent call last):
File “”, line 31, in
Exception: The input argument “document” of function `anonymous-namespace’::Transaction_constructor or one item in the collection is null at line 97 of file d:\ship\2019_px64\source\revit\revitdbapi\gensrc\APIUndoTransactionProxy.cpp.
Parameter name: document”

import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *

clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)

clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

inputdocs = UnwrapElement(IN[0]) if isinstance(IN[0],list) else [UnwrapElement(IN[0])]
points = UnwrapElement(IN[0])
famtype = UnwrapElement(IN[1])
lvl = UnwrapElement(IN[2])
elementlist = list()
counter = 0

for inputdoc in inputdocs :
	if inputdoc == None:
		doc = DocumentManager.Instance.CurrentDBDocument
	elif inputdoc.GetType().ToString() == "Autodesk.Revit.DB.Document":
		doc = inputdoc
	elif inputdoc.GetType().ToString() == "Autodesk.Revit.DB.RevitLinkInstance":
		doc = inputdoc.GetLinkDocument()
	else: doc = None
	
TransactionManager.Instance.EnsureInTransaction(doc)
# make sure familysymbol is active
for point in points:
	newobj = doc.Create.NewFamilyInstance(point.ToXyz(),famtype,lvl)
	elementlist.append(newobj.ToDSType(False))
TransactionManager.Instance.TransactionTaskDone()
OUT = elementlist