Views sheet number value not showing

Thanks, just get left with this error now.

Adjust the code here and get the id of the view in question, then look at the list of viewport ids from the link list, to verify the list structure contains the element.
image

I get the same error :thinking:

import clr
clr.AddReference("RevitAPI")

from Autodesk.Revit.DB import FilteredElementCollector,BuiltInCategory,Viewport, View

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

## Convert an instance/list to a list
def tolist(obj1):
	if hasattr(obj1,"__iter__"): return obj1
	else: return [obj1]
	
def GetOwnerView(item):
	if hasattr(item, "OwnerViewId"): return item.Document.GetElement(item.OwnerViewId)
	else: return None	
	
	## Get an Element Parameter
def getParam(element,param):
	value = []
	try:
		DB = element.GetParameters(param)
		for i in DB:
			if "Double" in str(i.StorageType): 
				# Metric Converstion
				value.append(i.AsDouble()*304.8)
			elif "Integer" in str(i.StorageType):
				value.append(i.AsInteger())
			elif "String" in str(i.StorageType):
				value.append(i.AsString())
			else:
				elemId =i.AsElementId()
				value.append(doc.GetElement(elemId))
	except:
		pass
	return value

# Get All Viewports (Views on Sheets)
doc = DocumentManager.Instance.CurrentDBDocument

# Allow for link docs
linkInst = tolist(IN[1])

LviewNames = []
LviewportIds = []
Lviews = []
LviewIds = []
LviewRefs = []

# Allow for link docs
linkDocs = tolist(IN[1])

LviewNames = []
LviewportIds = []
Lviews = []
LviewIds = []
LviewRefs = []

for Ldoc in linkDocs:

	Lviewports = FilteredElementCollector(Ldoc).OfCategory(BuiltInCategory.OST_Viewports).WhereElementIsNotElementType().ToElements()
	
	# Map Viewports to View Names
	for Lviewport in Lviewports:
		LviewId = Lviewport.ViewId
		Lv = Ldoc.GetElement(LviewId)
		Lviews.append(Lv)
		LviewIds.append(LviewId)
		LviewNames.append(Lv.Name)
		LviewportIds.append(Lviewport.Id)
	
		# Construct Viewpoer Ref
		LvpRefNum = str(getParam(Lv, "Detail Number")[0])
		LvpRefSheet = str(getParam(Lv, "Sheet Number")[0])
		LviewRefs.append(LvpRefNum+"-"+LvpRefSheet)

viewports = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Viewports).WhereElementIsNotElementType().ToElements()

viewNames = []
viewportIds = []
views = []
viewIds = []
viewRefs = []

# Map Viewports to View Names
for viewport in viewports:
	viewId = viewport.ViewId
	v = doc.GetElement(viewId)
	views.append(v)
	viewIds.append(viewId)
	viewNames.append(v.Name)
	viewportIds.append(viewport.Id)
	
	# Construct Viewpoer Ref
	vpRefNum = str(getParam(v, "Detail Number")[0])
	vpRefSheet = str(getParam(v, "Sheet Number")[0])
	viewRefs.append(vpRefNum+"-"+vpRefSheet)


# Input views to find which sheet they are placed on
elems = tolist(UnwrapElement(IN[0]))

eOwnerSheets = []
eOwnerViews = []
eViews = []

for e in elems:
	try:
	# Find view in current document
		# Check if elem is a Viewport
		if "Viewport" in str(e.GetType()):
			# Get the owner Sheet
			eOwnerSheet = GetOwnerView(e)
			eOwnerSheets.append(eOwnerSheet)
			
			# Get the associated View
			vid = e.Id
			vIndex = viewportIds.index(vid)
			refView = views[vIndex]
			eViews.append(refView)
			
			# Get the Owner View
			refViewD = str(getParam(refView, "Referencing Detail")[0])
			refViewS = str(getParam(refView, "Referencing Sheet")[0])
			find = refViewD+"-"+refViewS
			
			refOwnerIndex = viewRefs.index(find)
			refOwner = views[refOwnerIndex]
			eOwnerViews.append(refOwner)
				
			
		else:
			# Get the view name
			eName = e.Name
			# Find the same name in the mapped names/viewports lists
			eViewport = viewports[viewNames.index(eName)]
			
			# Get the owner Sheet
			eOwnerSheet = GetOwnerView(eViewport)
			eOwnerSheets.append(eOwnerSheet)
			
			# Get the associated View
			vid = eViewport.Id
			vIndex = viewportIds.index(vid)
			refView = views[vIndex]
			eViews.append(refView)
			
			# Get the Owner View
			refViewD = str(getParam(refView, "Referencing Detail")[0])
			refViewS = str(getParam(refView, "Referencing Sheet")[0])
			find = refViewD+"-"+refViewS
			
			refOwnerIndex = viewRefs.index(find)
			refOwner = views[refOwnerIndex]
			eOwnerViews.append(refOwner)
	except:
		# Try to find view in link docs
		# Check if elem is a Viewport
		if "Viewport" in str(e.GetType()):
			# Get the owner Sheet
			eOwnerSheet = GetOwnerView(e)
			eOwnerSheets.append(eOwnerSheet)
			
			# Get the associated View
			Lvid = e.Id
			LvIndex = LviewportIds.index(Lvid)
			LrefView = Lviews[LvIndex]
			eViews.append(LrefView)
			
			# Get the Owner View
			LrefViewD = str(getParam(LrefView, "Referencing Detail")[0])
			LrefViewS = str(getParam(LrefView, "Referencing Sheet")[0])
			Lfind = LrefViewD+"-"+LrefViewS
			
			LrefOwnerIndex = LviewRefs.index(Lfind)
			LrefOwner = Lviews[LrefOwnerIndex]
			eOwnerViews.append(LrefOwner)
				
			
		else:
			# Get the view name
			eName = e.Name
			# Find the same name in the mapped names/viewports lists
			eViewport = Lviewports[LviewNames.index(eName)]
			
			# Get the owner Sheet
			eOwnerSheet = GetOwnerView(eViewport)
			eOwnerSheets.append(eOwnerSheet)
			
			# Get the associated View
			Lvid = eViewport.Id
			LvIndex = LviewportIds.index(Lvid)
			"""
			LrefView = Lviews[LvIndex]
			eViews.append(LrefView)
			
			# Get the Owner View
			LrefViewD = str(getParam(LrefView, "Referencing Detail")[0])
			LrefViewS = str(getParam(LrefView, "Referencing Sheet")[0])
			Lfind = LrefViewD+"-"+LrefViewS
			
			LrefOwnerIndex = LviewRefs.index(Lfind)
			LrefOwner = Lviews[LrefOwnerIndex]
			eOwnerViews.append(LrefOwner)
			"""
			
		
OUT = eOwnerSheets,eOwnerViews,eViews,LviewportIds

image

opps I shall try be more vigilant :sweat_smile:

Think I’ve got it right this time but same error

import clr
clr.AddReference("RevitAPI")

from Autodesk.Revit.DB import FilteredElementCollector,BuiltInCategory,Viewport, View

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

## Convert an instance/list to a list
def tolist(obj1):
	if hasattr(obj1,"__iter__"): return obj1
	else: return [obj1]
	
def GetOwnerView(item):
	if hasattr(item, "OwnerViewId"): return item.Document.GetElement(item.OwnerViewId)
	else: return None	
	
	## Get an Element Parameter
def getParam(element,param):
	value = []
	try:
		DB = element.GetParameters(param)
		for i in DB:
			if "Double" in str(i.StorageType): 
				# Metric Converstion
				value.append(i.AsDouble()*304.8)
			elif "Integer" in str(i.StorageType):
				value.append(i.AsInteger())
			elif "String" in str(i.StorageType):
				value.append(i.AsString())
			else:
				elemId =i.AsElementId()
				value.append(doc.GetElement(elemId))
	except:
		pass
	return value

# Get All Viewports (Views on Sheets)
doc = DocumentManager.Instance.CurrentDBDocument

# Allow for link docs
linkInst = tolist(IN[1])

LviewNames = []
LviewportIds = []
Lviews = []
LviewIds = []
LviewRefs = []

# Allow for link docs
linkDocs = tolist(IN[1])

LviewNames = []
LviewportIds = []
Lviews = []
LviewIds = []
LviewRefs = []

for Ldoc in linkDocs:

	Lviewports = FilteredElementCollector(Ldoc).OfCategory(BuiltInCategory.OST_Viewports).WhereElementIsNotElementType().ToElements()
	
	# Map Viewports to View Names
	for Lviewport in Lviewports:
		LviewId = Lviewport.ViewId
		Lv = Ldoc.GetElement(LviewId)
		Lviews.append(Lv)
		LviewIds.append(LviewId)
		LviewNames.append(Lv.Name)
		LviewportIds.append(Lviewport.Id)
	
		# Construct Viewpoer Ref
		LvpRefNum = str(getParam(Lv, "Detail Number")[0])
		LvpRefSheet = str(getParam(Lv, "Sheet Number")[0])
		LviewRefs.append(LvpRefNum+"-"+LvpRefSheet)

viewports = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Viewports).WhereElementIsNotElementType().ToElements()

viewNames = []
viewportIds = []
views = []
viewIds = []
viewRefs = []

# Map Viewports to View Names
for viewport in viewports:
	viewId = viewport.ViewId
	v = doc.GetElement(viewId)
	views.append(v)
	viewIds.append(viewId)
	viewNames.append(v.Name)
	viewportIds.append(viewport.Id)
	
	# Construct Viewpoer Ref
	vpRefNum = str(getParam(v, "Detail Number")[0])
	vpRefSheet = str(getParam(v, "Sheet Number")[0])
	viewRefs.append(vpRefNum+"-"+vpRefSheet)


# Input views to find which sheet they are placed on
elems = tolist(UnwrapElement(IN[0]))

eOwnerSheets = []
eOwnerViews = []
eViews = []

for e in elems:
	try:
	# Find view in current document
		# Check if elem is a Viewport
		if "Viewport" in str(e.GetType()):
			# Get the owner Sheet
			eOwnerSheet = GetOwnerView(e)
			eOwnerSheets.append(eOwnerSheet)
			
			# Get the associated View
			vid = e.Id
			vIndex = viewportIds.index(vid)
			refView = views[vIndex]
			eViews.append(refView)
			
			# Get the Owner View
			refViewD = str(getParam(refView, "Referencing Detail")[0])
			refViewS = str(getParam(refView, "Referencing Sheet")[0])
			find = refViewD+"-"+refViewS
			
			refOwnerIndex = viewRefs.index(find)
			refOwner = views[refOwnerIndex]
			eOwnerViews.append(refOwner)
				
			
		else:
			# Get the view name
			eName = e.Name
			# Find the same name in the mapped names/viewports lists
			eViewport = viewports[viewNames.index(eName)]
			
			# Get the owner Sheet
			eOwnerSheet = GetOwnerView(eViewport)
			eOwnerSheets.append(eOwnerSheet)
			
			# Get the associated View
			vid = eViewport.Id
			vIndex = viewportIds.index(vid)
			refView = views[vIndex]
			eViews.append(refView)
			
			# Get the Owner View
			refViewD = str(getParam(refView, "Referencing Detail")[0])
			refViewS = str(getParam(refView, "Referencing Sheet")[0])
			find = refViewD+"-"+refViewS
			
			refOwnerIndex = viewRefs.index(find)
			refOwner = views[refOwnerIndex]
			eOwnerViews.append(refOwner)
	except:
		# Try to find view in link docs
		# Check if elem is a Viewport
		if "Viewport" in str(e.GetType()):
			# Get the owner Sheet
			eOwnerSheet = GetOwnerView(e)
			eOwnerSheets.append(eOwnerSheet)
			
			# Get the associated View
			Lvid = e.Id
			LvIndex = LviewportIds.index(Lvid)
			LrefView = Lviews[LvIndex]
			eViews.append(LrefView)
			
			# Get the Owner View
			LrefViewD = str(getParam(LrefView, "Referencing Detail")[0])
			LrefViewS = str(getParam(LrefView, "Referencing Sheet")[0])
			Lfind = LrefViewD+"-"+LrefViewS
			
			LrefOwnerIndex = LviewRefs.index(Lfind)
			LrefOwner = Lviews[LrefOwnerIndex]
			eOwnerViews.append(LrefOwner)
				
			
		else:
			# Get the view name
			eName = e.Name
			# Find the same name in the mapped names/viewports lists
			eViewport = Lviewports[LviewNames.index(eName)]
			
			# Get the owner Sheet
			eOwnerSheet = GetOwnerView(eViewport)
			eOwnerSheets.append(eOwnerSheet)
			
			# Get the associated View
			Lvid = eViewport.Id
			eViews.append(Lvid)
			"""
			LvIndex = LviewportIds.index(Lvid)
			LrefView = Lviews[LvIndex]
			eViews.append(LrefView)
			
			# Get the Owner View
			LrefViewD = str(getParam(LrefView, "Referencing Detail")[0])
			LrefViewS = str(getParam(LrefView, "Referencing Sheet")[0])
			Lfind = LrefViewD+"-"+LrefViewS
			
			LrefOwnerIndex = LviewRefs.index(Lfind)
			LrefOwner = Lviews[LrefOwnerIndex]
			eOwnerViews.append(LrefOwner)
			"""
			
		
OUT = eOwnerSheets,eOwnerViews,eViews,LviewportIds