Customized bldgProgram & zoneProgram lists

Hi folks,

I’m working my way through adding some custom building and zone programs beyond the options provided in Honeybee. I’ve done so with reasonable success, I’m just encountering one last issue I’d like to ask for help with.

I’ve edited the Honeybee_honeybee and Honeybee_ListZonePrograms components as well as the OpenStudio_Standards.json, and OpenStudioMasterTemplate.idf

All seems to be going well until I use theRunEnergySimulation to write the .idf file. I get the following error message:

  1. Solution exception:‘EPZone’ object has no attribute ‘isSchedulesAssigned’

I find isSchedulesAssigned in Honeybee_Honeybee after the schedules are assigned via calling the corresponding variables from the .JSON file (around line 5000). My .JSON file doesn’t seem to have any errors, so I’m curious as to what’s happening. Any ideas on how I could fix this?

Many thanks,

1 Like

@schoenfeld.mbeth ,

Honeybee Legacy does not support the creation of custom building program objects and the route you are using to add them here is prone to errors like the one you are experiencing. While we might be able to figure out what is wrong with your specific case, it is likely going to be difficult to ensure that it works into the future. The best I can offer for honeybee legacy is to add your custom schedules to the userCustomLibrary.idf file in the ladybug default folder and just assign those schedules and loads to Honeybee zones with the two components that do so. We will have much more robust workflows for creating custom building programs with Honeybee[+] and, if you do the work now of assembling the schedules and loads that you want for different programs into the userCustomLibrary.idf, it will be possible to convert them to a much more maintainable format when we have the building programs objects in Honeybee[+] fully developed.

Hi Chris,

Thanks for the advice, it works decently well. It would be much nicer to be able to customize the program list, but for now I entered the info in panels, and then assign it using the setEPZoneLoads etc. components. If anyone else is thinking about doing this, you can clean up the code by just clustering that part of your program.


I have just created a quick component for creating the custom space types.
Download the component if anyone needed.
CustomSpaceTypes.ghuser (5.3 KB)(20190801 updates)


Great! It is an amazing component.

wow…what a great component! game changer! hope this becomes a standard component so everyone can utilize it!

Hi @josh.greenfield, thanks.
In case you are doing the full energy modeling, here is an example for creating all space types for both proposed and baseline. (484.4 KB)


so one thing I just noticed…the ‘Honeybee_SetLoadsAndSchedules’ component does not like the custom input from this new component…is this to be expected given the coding of this component only looking at a default zoneProgram Honeybee library or is there a workaround you can think of? as I feed the custom zonePrograms into the getEPLoads and getEPSchedules components later in the script (which works great), that’s all good…so really the only need for using this input is to have the zone correct in the display attributes component and the separate by programs componenet, but it would still be nice to have.

1 Like

@josh.greenfield I don’t really use this component to CHANGE the space type, instead I ASSIGN new space types when creating zones at the first place.

Full Energy Modeling (671.1 KB)

This has a several benefits: faster, less RAM, and easier to QC and reporting.
Every time we CHANGE properties like loads, schedules at zone level, Grasshopper creates a copy of old zone, which consumes additional RAM, and slow down the entire workflow for a bigger project.
If we ASSIGN the new space type at begin, then we only have one copy of zone, and don’t have to change any load or schedules.

But in case you still want to keep your current workflow, you can just remove all code between line 87 to 109 in “Honeybee_Set Loads And Schedules”. Because this component is checking the different building program library.

1 Like

Hi, Mingbo.

Great component! I’ve been using it a lot and it is indeed very helpful.

I’m just wondering if it’s possible to also have a provision for including a mechanical ventilation schedule in this. I noticed that the component has a provision for an input (as shown in the attached screenshot) but it doesn’t get written to the library.

Kindly let us know. Thanks!

Hi @LanceMonfort,

Unfortunately, I don’t think this is possible to set ventilation schedule at SpaceType level in Honeybee Legacy version. I probably should remove this input here.

However, in our upcoming brand new releases in a couple weeks, you can set schedule to mechanical ventilation to a customized space type.


Hi @MingboPeng, thank you for this helpful component! It has been very useful for consolidating inputs for a custom library of programs.

Can you help me understand how to change the program names from ‘UserBuilding::name’ to something custom like ‘Library::name’?

Also, is the purpose of ‘refSpaceType’ to fill in any inputs that are not overridden using this component? Is it required to plug something into this input?

Thank you!

@MingboPeng this setup requires Ironbug? Is it possible to install it on Mac? I’m running Rhino+GH on Mac.



@eugene_s ,

You should use the LBT Plugin 1.1.0 if you are on Mac. The LBT plugin is fully-functional on both Mac and Windows but Legacy Honeybee can only run on Windows.

As a side note, the LBT plugin also has full support for creating your own Programs/Space Types. You can even save them to files or put them into your custom library of standards that loads up when you start using Honeybee.

Thanks @chris. Yes I installed latest plugins on Mac. I am looking for a way to name and manage zone naming on a model with over 400+ zones. I was trying to setup the way @MingboPeng suggested but it requires Ironbug. Is it available for Mac? Any other naming suggestions?


If you are asking for the “Ladybug Sort by Layers” component, I think that component is simple enough that it should work on Mac. Also, it’s included in the “Ladybug 0.0.69 and Honeybee 0.0.66 [Legacy Plugins]” release. So you don’t need to install Ironbug to get it (Just install Legacy).

If that fails, I know that the Human plugin also has several components that you can use to sort objects by layer, which should work on Mac.

@MingboPeng may have more suggestions.

Thanks @chris, can I install legacy plugins in Mac alongside LBT 1.1 to get Ironbug components? Any specific workflows or components I should look into to name large number of rooms? Is there a way to perhaps group the rooms into zones? I cant seem to get past this step to make the model manageable for my needs.

Most of the Legacy components won’t work on Mac (including the energy simulation) and Ironbug is 100% windows-only as it makes heavy use of the OpenStudio C# bindings.

So LBT is what you should use if you’re on Mac. The example file that comes with the LBT plugin Food4Rhino download gives you a sense of how you can set up larger models with Honeybee. The Dragonfly plugin also has a lot of features on top of Honeybee geared towards easier setup of large models. I recommend looking at the dragonfly example in particular.

1 Like

Thanks @chris this helps. I think it’s finally coming together how I need it.