Module: BTAP::Geometry
- Defined in:
- lib/openstudio-standards/btap/geometry.rb
Defined Under Namespace
Modules: BuildingStoreys, Spaces, Surfaces, Wizards, Zones
Class Method Summary collapse
- .enumerate_spaces_model(model, prepend_name = false) ⇒ Object
- .get_fwdr(model) ⇒ Object
- .get_srr(model) ⇒ Object
- .get_surface_to_subsurface_ratio(surfaces) ⇒ Object
- .match_surfaces(model) ⇒ Object
-
.prefix_equipment_with_zone_name(model) ⇒ Object
This method will rename the zone equipment to have the zone name as a prefix for a model.
-
.rename_zones_based_on_spaces(model) ⇒ Object
this was a copy of the sketchup plugin method.
-
.rotate_model(model, degrees) ⇒ OpenStudio::Model::Model
This method will rotate the model.
-
.scale_model(model, x, y, z) ⇒ OpenStudio::Model::Model
This method will scale the model.
Class Method Details
.enumerate_spaces_model(model, prepend_name = false) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/openstudio-standards/btap/geometry.rb', line 24 def self.enumerate_spaces_model(model,prepend_name = false) #enumerate stories. BTAP::Geometry::BuildingStoreys::auto_assign_spaces_to_stories(model) #Enumerate spaces model.getBuildingStorys.each do |story| spaces = Array.new spaces.concat( story.spaces ) spaces.sort! do |a, b| (a.xOrigin <=> b.xOrigin).nonzero? || (a.yOrigin <=> b.yOrigin) end counter = 1 spaces.each do |space| puts "old space name : #{space.name}" if prepend_name == true space.setName("#{story.name}-#{counter.to_s}:#{space.name}") else space.setName("#{story.name}-#{counter.to_s}") end counter = counter + 1 puts "new space name : #{space.name}" end end end |
.get_fwdr(model) ⇒ Object
2136 2137 2138 2139 2140 |
# File 'lib/openstudio-standards/btap/geometry.rb', line 2136 def self.get_fwdr(model) outdoor_surfaces = BTAP::Geometry::Surfaces::filter_by_boundary_condition(model.getSurfaces(), "Outdoors") outdoor_walls = BTAP::Geometry::Surfaces::filter_by_surface_types(outdoor_surfaces, "Wall") self.get_surface_to_subsurface_ratio(outdoor_walls) end |
.get_srr(model) ⇒ Object
2142 2143 2144 2145 2146 |
# File 'lib/openstudio-standards/btap/geometry.rb', line 2142 def self.get_srr(model) outdoor_surfaces = BTAP::Geometry::Surfaces::filter_by_boundary_condition(model.getSurfaces(), "Outdoors") outdoor_roofs = BTAP::Geometry::Surfaces::filter_by_surface_types(outdoor_surfaces, "RoofCeiling") self.get_surface_to_subsurface_ratio(outdoor_roofs) end |
.get_surface_to_subsurface_ratio(surfaces) ⇒ Object
2148 2149 2150 2151 2152 2153 2154 2155 2156 |
# File 'lib/openstudio-standards/btap/geometry.rb', line 2148 def self.get_surface_to_subsurface_ratio(surfaces) total_gross_surface_area = 0.0 total_net_surface_area = 0.0 surfaces.each do |surface| total_gross_surface_area = total_gross_surface_area + surface.grossArea total_net_surface_area = total_net_surface_area + surface.netArea end return 1.0 - (total_net_surface_area/total_gross_surface_area ) end |
.match_surfaces(model) ⇒ Object
2107 2108 2109 2110 2111 2112 2113 2114 |
# File 'lib/openstudio-standards/btap/geometry.rb', line 2107 def self.match_surfaces(model) model.getSpaces.each do |space1| model.getSpaces.each do |space2| space1.matchSurfaces(space2) end end return model end |
.prefix_equipment_with_zone_name(model) ⇒ Object
This method will rename the zone equipment to have the zone name as a prefix for a model. It will also rename the hot water coils for:
AirTerminalSingleDuctVAVReheat
ZoneHVACBaseboardConvectiveWater
ZoneHVACUnitHeater
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/openstudio-standards/btap/geometry.rb', line 99 def self.prefix_equipment_with_zone_name(model) puts "Renaming zone equipment." # get all thermal zones thermal_zones = model.getThermalZones # loop through thermal zones thermal_zones.each do |thermal_zone| # this is going through all, not just selection thermal_zone.equipment.each do |equip| #For the hydronic conditions below only, it will rename the zonal coils as well. if not equip.to_AirTerminalSingleDuctVAVReheat.empty? equip.setName("#{thermal_zone.name}:AirTerminalSingleDuctVAVReheat") reheat_coil = equip.to_AirTerminalSingleDuctVAVReheat.get.reheatCoil reheat_coil.setName("#{thermal_zone.name}:ReheatCoil") puts reheat_coil.name elsif not equip.to_ZoneHVACBaseboardConvectiveWater.empty? equip.setName("#{thermal_zone.name}:ZoneHVACBaseboardConvectiveWater") heatingCoil = equip.to_ZoneHVACBaseboardConvectiveWater.get.heatingCoil heatingCoil.setName("#{thermal_zone.name}:Baseboard HW Htg Coil") puts heatingCoil.name elsif not equip.to_ZoneHVACUnitHeater.empty? equip.setName("#{thermal_zone.name}:ZoneHVACUnitHeater") heatingCoil = equip.to_ZoneHVACUnitHeater.get.heatingCoil heatingCoil.setName("#{thermal_zone.name}:Unit Heater Htg Coil") puts heatingCoil.name #Add more cases if you wish!!!!! else #if the equipment does not follow the above cases, rename # it generically and not touch the underlying coils, etc. equip.setName("#{thermal_zone.name}:#{equip.name}") end end end puts "Done zone renaming equipment" end |
.rename_zones_based_on_spaces(model) ⇒ Object
this was a copy of the sketchup plugin method.
50 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 |
# File 'lib/openstudio-standards/btap/geometry.rb', line 50 def self.rename_zones_based_on_spaces(model) # loop through thermal zones model.getThermalZones.each do |thermal_zone| # this is going through all, not just selection puts "old zone name : #{thermal_zone.name}" # reset the array of spaces to be empty spaces_in_thermal_zone = [] # reset length of array of spaces number_of_spaces = 0 # get list of spaces in thermal zone spaces = thermal_zone.spaces spaces.each do |space| # make an array instead of the puts statement spaces_in_thermal_zone.push space.name.to_s end # store length of array number_of_spaces = spaces_in_thermal_zone.size # sort the array spaces_in_thermal_zone = spaces_in_thermal_zone.sort # setup a suffix if the thermal zone contains more than one space if number_of_spaces > 1 multi = " - Plus" else multi = "" end # rename thermal zone based on first space with prefix added e.g. ThermalZone 203 if number_of_spaces > 0 new_name = "ZN:" + spaces_in_thermal_zone[0] + multi thermal_zone.setName(new_name) else puts "#{thermal_zone.name.to_s} did not have any spaces, and will not be renamed." end puts "new zone name : #{thermal_zone.name}" end end |
.rotate_model(model, degrees) ⇒ OpenStudio::Model::Model
This method will rotate the model
2164 2165 2166 2167 2168 2169 |
# File 'lib/openstudio-standards/btap/geometry.rb', line 2164 def self.rotate_model(model, degrees) # Identity matrix for setting space origins t = OpenStudio::Transformation::rotation(OpenStudio::Vector3d.new(0,0,1),degrees*Math::PI/180) model.getPlanarSurfaceGroups().each { |planar_surface| planar_surface.changeTransformation(t) } return model end |
.scale_model(model, x, y, z) ⇒ OpenStudio::Model::Model
This method will scale the model
2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 |
# File 'lib/openstudio-standards/btap/geometry.rb', line 2121 def self.scale_model(model,x,y,z) # Identity matrix for setting space origins m = OpenStudio::Matrix.new(4,4,0) m[0,0] = 1.0/x m[1,1] = 1.0/y m[2,2] = 1.0/z m[3,3] = 1.0 t = OpenStudio::Transformation.new(m) model.getPlanarSurfaceGroups().each do |planar_surface| planar_surface.changeTransformation(t) end return model end |