Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question

measure to change complete construction set

asked 2016-11-23 13:31:40 -0500

Matt Koch's avatar

updated 2017-08-05 07:39:56 -0500

I searched high and low on the Internet to find a measure that I can tie into PAT and which changes the complete construction set (not just constructions or materials) for the whole building. For example, I'd like to run a PAT analysis for IECC-2009, IECC-2012 and IECC-2015 or ASHRAE 90.1-2007, ASHRAE 90.1-2010 and ASHRAE 90.1-2013 envelopes. Unfortunately, I am not a Ruby programmer.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2016-11-28 11:00:43 -0500

updated 2016-11-30 09:30:38 -0500

I'm not aware of a measure that does exactly this, however there is one that replaces exterior windows that could serve as starting point for a measure to replace construction sets.

Another solution for you is to use the Space Type and Construction Set wizard measure. If you just want ASHRAE 90.1 construction sets vs. your own custom construction sets then this may work. You can set true/false argument to make or not make both space types and construction sets. This is intended for models that don't yet have constructions, but it should work on models that do have constructions if they are all set through a building level default construction set, vs. hard assigned constructions or construction sets assigned to space types, building stories, or individual spaces.

We will have a version of this measure online soon that uses the openstudio-standards gem that will included 90.1 2013.


@Matt Koch, you were really close with your initial code. I just had to change how you get the variable here

And then once you get the variable you need a .get to get the optional object, then you need to cast it to the right object type with to_DefaultConstructionSet.get

I posted the measure so others can enhance this or use it as a guide for similar measures that alter other objects. It might be nice to add bool argument to remove any other constructions assigned deeper than the building level (BuildingStory, SpaceType, or Space). There is already another measure you could use to remove hard assigned constructions.

edit flag offensive delete link more


Thank you David! Yes, I had come across the windows measure, but I am afraid it requires too much coding effort. I also though of the space type and construction wizard, but was not sure where to get that from. Your link has provided the answer for that, so I think I will rummage through the Ruby code for it to see if anything jumps out at me. When you say "this measure" will be online soon, do you mean the kind of measure I was looking for? If so, how soon is soon? Thanks.

Matt Koch's avatar Matt Koch  ( 2016-11-29 06:57:51 -0500 )edit

OK, so I played with this a bit, finding the model.getDefaultConstructionSets and building = model.getBuilding as well as building.setDefaultConstructionSet(constructionset) methods in the "Space Type and Construction Set Wizard" measure. So I grafted them into my own measure, but got an error upon testing it in OpenStudio. I have the measure files and the error screenshots, but can't seem to find a way to post them here? I am pretty sure if someone experienced would check them out, they'd find the mistake pretty quickly? Thanks.

Matt Koch's avatar Matt Koch  ( 2016-11-29 08:04:36 -0500 )edit

Basically, it appears that in the runner part, I currently use constructionset = runner.getOptionalWorkspaceObjectChoiceValue("construction set",user_arguments,model) to get the selected construction set, but it may need to be something like constructionset = runner.getDefaultConstructionSetChoiceValue("construction set",user_arguments,model), though I tried that, and it likewise fails. I just do not know what functions are available to accomplish this properly.

Matt Koch's avatar Matt Koch  ( 2016-11-29 08:49:59 -0500 )edit

In the arguments part, I use constructionset = OpenStudio::Ruleset::OSArgument::makeChoiceArgument("construction set", constructionset_handles, constructionset_display_names,true) to make the selection to be used in the runner part. So that may be wrong as well. Anyway, at my wit's end with this one.

Matt Koch's avatar Matt Koch  ( 2016-11-29 08:51:25 -0500 )edit

@Matt Koch, sorry, I wasn't clear, the measure I was referring to that will soon support 90.1 2013 was the Space Type and Construction Set Wizard. I'm not aware of anyone making a Swap Construction Set measure, other than you now :)

If you want to add images you can do it as an update to your question vs. in the comment. If you want to share your code in full, if you email it to me at I can post it in one of the UnmetHours Github repos and can troubleshoot it. This way others can extend or enhance it.

David Goldwasser's avatar David Goldwasser  ( 2016-11-29 09:38:58 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Training Workshops

Question Tools

1 follower


Asked: 2016-11-23 13:31:40 -0500

Seen: 267 times

Last updated: Nov 30 '16