Class: SetExtWallToGroundBoundaryConditionByStory
- Inherits:
-
OpenStudio::Measure::ModelMeasure
- Object
- OpenStudio::Measure::ModelMeasure
- SetExtWallToGroundBoundaryConditionByStory
- Defined in:
- lib/measures/SetExtWallToGroundBoundaryConditionByStory/measure.rb
Overview
start the measure
Instance Method Summary collapse
-
#arguments(model) ⇒ Object
define the arguments that the user will input.
-
#name ⇒ Object
define the name that a user will see, this method may be deprecated as the display name in PAT comes from the name field in measure.xml.
-
#run(model, runner, user_arguments) ⇒ Object
define what happens when the measure is run.
Instance Method Details
#arguments(model) ⇒ Object
define the arguments that the user will input
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/measures/SetExtWallToGroundBoundaryConditionByStory/measure.rb', line 21 def arguments(model) args = OpenStudio::Measure::OSArgumentVector.new # populate choice argument for storys that are applied to surfaces in the model storyBasement_handles = OpenStudio::StringVector.new storyBasement_display_names = OpenStudio::StringVector.new # putting stories and names into hash storyBasement_args = model.getBuildingStorys storyBasement_args_hash = {} storyBasement_args.each do |storyBasement_arg| storyBasement_args_hash[storyBasement_arg.name.to_s] = storyBasement_arg end # looping through sorted hash of storys storyBasement_args_hash.sort.map do |key, value| storyBasement_handles << value.handle.to_s storyBasement_display_names << key end # make an argument for storyBasement # todo - warn user if surface has any sub-surfaces. storyBasement = OpenStudio::Measure::OSArgument.makeChoiceArgument('storyBasement', storyBasement_handles, storyBasement_display_names, true) storyBasement.setDisplayName('Choose a Story to Change Wall Boundary Conditions For.') args << storyBasement return args end |
#name ⇒ Object
define the name that a user will see, this method may be deprecated as the display name in PAT comes from the name field in measure.xml
16 17 18 |
# File 'lib/measures/SetExtWallToGroundBoundaryConditionByStory/measure.rb', line 16 def name return 'SetExtWallToGroundBoundaryConditionByStory' end |
#run(model, runner, user_arguments) ⇒ Object
define what happens when the measure is run
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/measures/SetExtWallToGroundBoundaryConditionByStory/measure.rb', line 51 def run(model, runner, user_arguments) super(model, runner, user_arguments) # use the built-in error checking if !runner.validateUserArguments(arguments(model), user_arguments) return false end # assign the user inputs to variables storyBasement = runner.getOptionalWorkspaceObjectChoiceValue('storyBasement', user_arguments, model) # model is passed in because of argument type # check the storyBasement for reasonableness if storyBasement.empty? handle = runner.getStringArgumentValue('storyBasement', user_arguments) if handle.empty? runner.registerError('No storyBasement was chosen.') else runner.registerError("The selected storyBasement with handle '#{handle}' was not found in the model. It may have been removed by another measure.") end return false else if !storyBasement.get.to_BuildingStory.empty? storyBasement = storyBasement.get.to_BuildingStory.get else runner.registerError('Script Error - argument not showing up as storyBasement.') return false end end stories = model.getBuildingStorys # reporting initial condition of model runner.registerInitialCondition("The building has #{stories.size} stories.") affectedSpaces = storyBasement.spaces affectedSpaces.each do |story| surfaces = story.surfaces surfaces.each do |surface| if (surface.surfaceType == 'Wall') && (surface.outsideBoundaryCondition == 'Outdoors') surface.setOutsideBoundaryCondition('Ground') end end end # reporting final condition of model runner.registerFinalCondition("Exterior walls on #{storyBasement.name} now have a ground boundary condition.") return true end |