IndependentTag.Create() Python

Hi all,

I try to tag my elements in multiple views with different tags and different elements.
What I do wrong?

(Last action)

import clr #.NET Laden
import sys #sys is de fundamentele Python bibliotheek
#de standaard IronPython-bibliotheken
#sys.path.append('C:\Program Files (x86)\IronPython 2.7\Lib') #Imports the
#standaard IronPython-bibliotheken, die alles dekken, van servers en
#encryptie tot reguliere expressies.
import System #The System namespace in de hoofdmap .NET
from System import Array #.NET class voor het verwerken van array-informatie
import System.Collections.Generic as MGen #Module kan nu benaderd worden met MGen.xxxx
#from System.Collections.Generic import * #Hiermee kunt u generieke afhandelen. Revit's API
#soms wil hard-getypte 'generieke' lijsten, genaamd ILists. Als je niet nodig hebt
#deze kunt u deze regel verwijderen.
clr.AddReference('ProtoGeometry')  #Een Dynamo-bibliotheek voor zijn proxygeometrie
#classes. Je hebt dit alleen nodig als je interactie hebt met geometrie.
import Autodesk.DesignScript.Geometry as AGeo #Module kan worden opgeroepen a=met AGeo.xxxx
#from Autodesk.DesignScript.Geometry import * #Laadt alles in Dynamo's
#geometriebibliotheek
clr.AddReference("RevitNodes") #Dynamo's nodes voor Revit
import Revit #Laad in de Revit-namespaces in RevitNodes
clr.ImportExtensions(Revit.Elements) #Meer laden van Dynamo's Revit-bibliotheken
clr.ImportExtensions(Revit.GeometryConversion) #Meer laden van Dynamo's
#Revit-bibliotheken. Je hebt dit alleen nodig als je interactie hebt met geometrie.
clr.AddReference("RevitServices") #Dynamo's classes voor het omgaan met Revit-documenten
import RevitServices 
from RevitServices.Persistence import DocumentManager #Een interne Dynamo class
#dat het document bijhoudt waaraan Dynamo momenteel is gekoppeld
from RevitServices.Transactions import TransactionManager #Een Dynamo class voor
#transacties openen en sluiten om de database van het Revit-document te wijzigen

clr.AddReference("RevitAPI") #Verwijzing naar Revit's API DLL's toevoegen
clr.AddReference("RevitAPIUI") #Verwijzing naar Revit's APIUI DLL's toevoegen

import Autodesk #Loads the Autodesk namespace
import Autodesk.Revit.DB as RDB #Loading Revit's API UI classes module kan nu worden aangeroepen met RDB.xxxx
#from Autodesk.Revit.DB import * #Loading Revit's API UI classes
import Autodesk.Revit.UI as RUI # Loading Revit's API UI classes als RUI.xxxx
#from Autodesk.Revit.UI import * #Loading Revit's API UI classes

doc = DocumentManager.Instance.CurrentDBDocument #Dit is het actieve Revit document
uiapp = DocumentManager.Instance.CurrentUIApplication #Een handle instellen voor het actieve Revit UI-document
app = uiapp.Application  #Een handle instellen op de momenteel geopende instantie van de Revit-toepassing
uidoc = uiapp.ActiveUIDocument #Een handle instellen op de momenteel geopende instantie van de Revit UI-toepassing

def tolist(input):
    result = input if isinstance(input, list) else [input]
    return result

def uwlist(input):
    result = input if isinstance(input, list) else [input]
    return UnwrapElement(result)

# einde code omrekenen revit feet naar huidig ingestelde document units
# Hieronder kan je dan gaan programmeren
# Gebruik boiler template

views = tolist(UnwrapElement(IN[0]))
elements = uwlist(IN[1])

#element id maken
element_id = []
for el in elements:
	element_id.append([])
	for e in el:
		element_id[-1].append(e.Id)
	

tag_ids = []

PT_collector = RDB.FilteredElementCollector(doc).OfCategory(RDB.BuiltInCategory.OST_PipeTags).OfClass(RDB.FamilySymbol).ToElements()
DT_collector = RDB.FilteredElementCollector(doc).OfCategory(RDB.BuiltInCategory.OST_DuctTags).OfClass(RDB.FamilySymbol).ToElements()
DFT_collector = RDB.FilteredElementCollector(doc).OfCategory(RDB.BuiltInCategory.OST_DuctFittingTags).OfClass(RDB.FamilySymbol).ToElements()

#pipe tag ophalen
for c in PT_collector:
	symbol_name = c.get_Parameter(RDB.BuiltInParameter.SYMBOL_NAME_PARAM).AsString()
	if symbol_name.Contains("leidingafmeting en zaaglengte rond prefix 1.8 mm"):
		tag_ids.append(c.Id)
		
#ducttag ophalen
for c in DT_collector:
	symbol_name = c.get_Parameter(RDB.BuiltInParameter.SYMBOL_NAME_PARAM).AsString()
	if symbol_name.Contains("kanaalmaat en zaaglengte 1.8 mm"):
		tag_ids.append(c.Id)
		
#ductfitting tag ophalen
for c in DFT_collector:
	symbol_name = c.get_Parameter(RDB.BuiltInParameter.SYMBOL_NAME_PARAM).AsString()
	if symbol_name.Contains("Size 1.8 mm"):
		tag_ids.append(c.Id)
		
#per element bepalen welke tag gebruikt wordt.
tag = []
for el in elements:
	tag.append([])
	for e in el:
		cat = e.get_Parameter(RDB.BuiltInParameter.ELEM_CATEGORY_PARAM_MT).AsValueString()
		if cat == "Pipes":
			tag[-1].append(tag_ids[0])
		elif cat == "Ducts":
			tag[-1].append(tag_ids[1])
		elif cat == "Duct Fittings":
			tag[-1].append(tag_ids[2])
		else:
			pass

points = []
for el in elements:
	for e in el:
		bb = e.get_BoundingBox(None)
		max = bb.Max
		min = bb.Min
		centre = min + (max-min)/2
		points.append(centre)

#Start Transaction
TransactionManager.Instance.EnsureInTransaction(doc)


for tg, vw, el, pts in zip(tag, views, element_id, points):
	for t, v, e, p in zip(tg, vw, el, pts):
		RDB.IndependentTag.Create(doc, t, v.Id, e, True, RDB.TagOrientation.Horizontal, p)

#Eind Transactie
TransactionManager.Instance.TransactionTaskDone()

OUT = views