Get Project Parameters , Parameter Data (name,disc, type, group) and categories they belong to, to export in excel

Hello
a Python solution using ParameterBindings

# coding : utf-8
import clr

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

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
doc = DocumentManager.Instance.CurrentDBDocument


class ParaProj():
	def __init__(self, definition, binding):
		self.defName = definition.Name
		self.binding = binding 
		self.thesecats = []
		self.group = LabelUtils.GetLabelFor(definition.ParameterGroup)
		self.type = "Instance" if isinstance(binding, InstanceBinding) else "Type"
		
	@property	
	def categories(self):
		thesecats = []	
		for cat in self.binding.Categories:
	 		try:
				thesecats.append(cat.Name)
			except SystemError:
				pass  
		return thesecats
		
	@property					
	def isShared(self):
		collSharP = FilteredElementCollector(doc).OfClass(SharedParameterElement)
		paraSharPara = [x.GetDefinition().Name for x in collSharP]	
		return 	True if self.defName in paraSharPara else False	
				

paraName = []
paraGroup = []
paraCategories = [] 
paraType = []
paraIsShared = []
iterator =  doc.ParameterBindings.ForwardIterator()
while iterator.MoveNext():
    objBind = ParaProj(iterator.Key, iterator.Current)
    paraName.append(objBind.defName)
    paraGroup.append(objBind.group)
    paraType.append(objBind.type)
    paraIsShared.append(objBind.isShared)
    paraCategories.append(objBind.categories)
  

OUT = paraName, paraGroup, paraType, paraIsShared, paraCategories

another example here (at the bottom of my article) with a TreeNode (WinForm)

7 Likes