Can't use SetParameterByName to rename the "Default" HVAC Space

Hi everybody!

I’ve been tinkering with Dynamo for the last week and I’ve learned a lot. I recently created a script that will assign a Thermostat (Communication Device) to a VAV (Mechanical Equipment) and update the thermostat’s Mark as the VAV’s mark is changed. After figuring out that I needed to use a linked Excel sheet to run a VLOOKUP on the data, I was able to get it to work!

My problem arose when I tried to expand this script to work on HVAC Zones as well. In Revit MEP, there’s an HVAC Zone called “Default” that appears to be hard-coded into the software. I

can’t assign Spaces to it, or change it in any way. When my script attempts to use Element.SetParameterByName to write my list of new Zone na mes to the HVAC Zones, I get the error “The Parameter is Read Only.” I’m certain it’s because of this strange, Read-only Zone. Does anyone know why this HVAC Zone exists, and how I can get around this?

I’ve considered making my own “HVAC Zone Name” Project Parameter, but then there’s no relationship to the Spaces. I want to be able to break up a Space Schedule by Zone, and have the Zone name be synced with the VAV Marks.



HVAC Zone Error





Hi Robert,

Its not possible to access Read only parameters. But you can filter Read only parameters through custom node called “Element.ParameterisReadOnly” from Clockwork Package. For the Default row you can just filter schedule by name does not equal to “Default”. See below workflow. Hope it helps!


1 Like

I tried with getting the “Name” parameter of zone—> search for “Default” —> and filter by Boolean mask .
and it worked for me.
but I am curious how did you link Thermostat’s mark/tag with VAV’s mark/tag? how would Revit know which VAV is for which thermostat?

I used the Element ID of the VAV box. My script gets the EID of the box and matches it against an “Assigned Mechanical Equipment ID” parameter in the Thermostat family.

This requires the user to make the initial “connection” by using the “Element ID” command on the box, hitting CTRL-C, and then pasting that value into the thermostat’s "“Assigned Mechanical Equipment ID” parameter.

That’s a neat idea to use Element ID!
Thanks !
I’d just click on screen than copy pasting as below :slight_smile:

Yeah, the EID of an object never changes, so it’s perfect for this use.

Have you tried taking it one step further?
let dynamo find which diffusers are in which zone and populate the actual zone air flow based on the summation of all the supply air flow of diffusers? Below is the question I have started… it would be great if you can share your thoughts on it.

I ended up taking this project pretty far. It does many things:

  1. Totals heating loads for each Zone (the sum of the Space loads) and pushes that value to the VAV family for heating coil sizing.
  2. Creates a text string list of each room name and number that a VAV is serving and pushes that value to a text parameter in the VAV. This allows you to automatically fill out the “Areas Served” column on your VAV Schedule.
    3 . It will also rename the various duct systems to match the Mark of each associated VAV, which makes the duct static pressure report easier to read.

Here’s a write-up I made on The DYN and a narrative document are available for download. It’s not my latest version, but it’s pretty recent.

Is there any program to assign the default flow parameter within ducts with the sum of flows of air terminal, so that unconnected duct system can be used to size duct based on the flow rates picked up from air terminals.

I got a code, but seems to be getting same error as discussed above.

Could anyone kindly help?