Schedule Field Headers. How to rename them from Dynamo?


I am wanting to rename from Dynamo the name of the column headers of a Revit schedule. I used the package Bimorph to take the field headers name as shown in this topic, but I would like to rename them afterwards.

I found the Archlab node Schedule Formatting of @Konrad_K_Sobon where I can see the input Column Heading that it might be the solution but maybe there is a quick way to edit only this parameter without edit the whole list of appearance parameters of a schedule field.

I know if I put a Null value the for the other node inputs, the results will be omitted. Basically I am expecting a reduced node inputs, just the heading name edition.

If I want to edit the field name from Revit, I can open the revit schedule, formatting, and rename on “Headers”, other options is open the schedule view and type the name manually. I would like to do the same from Dynamo.

By default the names are shown as the parameter name, but sometimes I would like to rename them.

Please if someone knows a solution it would be very useful.


Not sure if there’s a way to do it with the custom nodes already out there but it should be a pretty straight forward task in Python.

Hi @RubenVivancos @Nick_Boyts

Is this what you guys are looking for?


That’s what I was expecting. Thanks @Kulkul!


Exact answer but I would like to see some input names and node descriptions as usual. I think I was expecting to see a Revit core node for that purpose, I have seen core nodes for Revit schedules are very limited.

To me it seems very similar to the node Set parameter by name but it’s about a Revit schedule field.

I believe the unwanted inputs of the Archlab node schedule formatting that is done in python script could be removed and create a new custom node.

Can you share python script, please.

I’m trying to write a script to update my headers to upper case. The python mentioned here would be helpful, can someone post this please?

an alternative with a Dictionnary (original : replace ) and ColumnHeading Property

import clr
from Autodesk.DesignScript.Geometry import *

#import Revit API
import Autodesk
from Autodesk.Revit.DB import *

import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument

toList = lambda x : x if hasattr(x, "__iter__") else [ x ]
viewsSchedule = toList(UnwrapElement(IN[0]))
repDsDict = IN[1]
	#convert DynamoDictionary to PythonDictionnary
	repPyDict = dict(zip(repDsDict.Keys, repDsDict.Values))
	repPyDict = repDsDict
for view in viewsSchedule:
	if view.ViewType == ViewType.Schedule:
		schedulDef = view.Definition
		lstfieldId = schedulDef.GetFieldOrder()
		for fieldId in lstfieldId:
			scheduleField = schedulDef.GetField(fieldId)
			valuefromdict = repPyDict.get(scheduleField.ColumnHeading)
			if valuefromdict is not None:
				scheduleField.ColumnHeading = valuefromdict

OUT = repDsDict
1 Like