honeybee-openstudio 2.28.0 → 2.28.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/honeybee-openstudio.gemspec +1 -1
- data/lib/from_openstudio/construction/shade.rb +1 -1
- data/lib/from_openstudio/geometry/aperture.rb +1 -1
- data/lib/from_openstudio/geometry/door.rb +1 -1
- data/lib/from_openstudio/geometry/face.rb +1 -1
- data/lib/from_openstudio/geometry/shade.rb +2 -2
- data/lib/to_openstudio/geometry/aperture.rb +45 -0
- data/lib/to_openstudio/geometry/door.rb +47 -0
- data/lib/to_openstudio/geometry/face.rb +65 -0
- data/lib/to_openstudio/model.rb +24 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f46d6897c585ff7082971de6ff24b62e1d4213697bb9e3fb08a9b4eefd069a6d
|
4
|
+
data.tar.gz: 4c231dc4b6622e5d9871eddb54e6b6e32ebb5302183372845ea690552f0407f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a9192fca6bf36375576eb5fd7efb3f104e4ed34b2607e8d80c36ce60f272cdd7c62b1badb4a43f1c0daa0e813b63e5dffc407e25032172c045d7523b5f05e7d
|
7
|
+
data.tar.gz: e2533183332b489d8ba275feddf184c56f7cdca3a5bb561ce9ae7ad6af3177b9983b57872a1623c316a1d4b3ddea060dec1ab2714429edbe1a450928c5a5bb01
|
data/honeybee-openstudio.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'honeybee-openstudio'
|
7
|
-
spec.version = '2.28.
|
7
|
+
spec.version = '2.28.1'
|
8
8
|
spec.authors = ['Tanushree Charan', 'Dan Macumber', 'Chris Mackey', 'Mostapha Sadeghipour Roudsari']
|
9
9
|
spec.email = ['tanushree.charan@nrel.gov', 'chris@ladybug.tools']
|
10
10
|
|
@@ -40,7 +40,7 @@ module Honeybee
|
|
40
40
|
hash = {}
|
41
41
|
hash[:type] = 'ShadeConstruction'
|
42
42
|
# set hash values from OpenStudio Object
|
43
|
-
hash[:identifier] = clean_name(construction.nameString)
|
43
|
+
hash[:identifier] = clean_name(construction.nameString) + ' Shade'
|
44
44
|
unless construction.displayName.empty?
|
45
45
|
hash[:display_name] = (construction.displayName.get).force_encoding("UTF-8")
|
46
46
|
end
|
@@ -72,7 +72,7 @@ module Honeybee
|
|
72
72
|
unless sub_surface.isConstructionDefaulted
|
73
73
|
construction = sub_surface.construction
|
74
74
|
if !construction.empty?
|
75
|
-
constr_id =
|
75
|
+
constr_id = clean_name(construction.get.nameString)
|
76
76
|
unless $window_constructions[constr_id].nil?
|
77
77
|
hash[:construction] = constr_id
|
78
78
|
end
|
@@ -72,7 +72,7 @@ module Honeybee
|
|
72
72
|
unless sub_surface.isConstructionDefaulted
|
73
73
|
construction = sub_surface.construction
|
74
74
|
if !construction.empty?
|
75
|
-
constr_id =
|
75
|
+
constr_id = clean_name(construction.get.nameString)
|
76
76
|
if hash[:is_glass] && !$window_constructions[constr_id].nil?
|
77
77
|
hash[:construction] = constr_id
|
78
78
|
elsif !hash[:is_glass] && !$opaque_constructions[constr_id].nil?
|
@@ -74,7 +74,7 @@ module Honeybee
|
|
74
74
|
unless surface.isConstructionDefaulted
|
75
75
|
construction = surface.construction
|
76
76
|
if !construction.empty?
|
77
|
-
constr_id =
|
77
|
+
constr_id = clean_name(construction.get.nameString)
|
78
78
|
unless $opaque_constructions[constr_id].nil?
|
79
79
|
hash[:construction] = constr_id
|
80
80
|
end
|
@@ -62,7 +62,7 @@ module Honeybee
|
|
62
62
|
unless shading_surface.isConstructionDefaulted
|
63
63
|
construction = shading_surface.construction
|
64
64
|
if !construction.empty?
|
65
|
-
const_name =
|
65
|
+
const_name = clean_name(construction.get.nameString) + ' Shade'
|
66
66
|
hash[:construction] = const_name
|
67
67
|
unless $shade_constructions.has_key?(const_name)
|
68
68
|
const_obj = construction.get
|
@@ -74,7 +74,7 @@ module Honeybee
|
|
74
74
|
|
75
75
|
transmittance_schedule = shading_surface.transmittanceSchedule
|
76
76
|
if !transmittance_schedule.empty?
|
77
|
-
trans_sch_name =
|
77
|
+
trans_sch_name = clean_name(transmittance_schedule.get.nameString)
|
78
78
|
# Check whether schedules other than schedule ruleset or schedule fixed interval are
|
79
79
|
# being assigned
|
80
80
|
unless $schedules[trans_sch_name].nil?
|
@@ -160,5 +160,50 @@ module Honeybee
|
|
160
160
|
|
161
161
|
return result
|
162
162
|
end
|
163
|
+
|
164
|
+
def to_openstudio_shade(openstudio_model, shading_surface_group)
|
165
|
+
# get the vertices from the aperture
|
166
|
+
if @hash[:geometry][:vertices].nil?
|
167
|
+
hb_verts = @hash[:geometry][:boundary]
|
168
|
+
else
|
169
|
+
hb_verts = @hash[:geometry][:vertices]
|
170
|
+
end
|
171
|
+
|
172
|
+
# create the openstudio shading surface
|
173
|
+
os_vertices = OpenStudio::Point3dVector.new
|
174
|
+
hb_verts.each do |vertex|
|
175
|
+
os_vertices << OpenStudio::Point3d.new(vertex[0], vertex[1], vertex[2])
|
176
|
+
end
|
177
|
+
reordered_vertices = OpenStudio.reorderULC(os_vertices)
|
178
|
+
|
179
|
+
os_shading_surface = OpenStudio::Model::ShadingSurface.new(reordered_vertices, openstudio_model)
|
180
|
+
os_shading_surface.setName(@hash[:identifier])
|
181
|
+
unless @hash[:display_name].nil?
|
182
|
+
os_shading_surface.setDisplayName(@hash[:display_name])
|
183
|
+
end
|
184
|
+
|
185
|
+
# get the approriate construction id
|
186
|
+
construction_id = nil
|
187
|
+
if @hash[:properties][:energy][:construction]
|
188
|
+
construction_id = @hash[:properties][:energy][:construction]
|
189
|
+
else
|
190
|
+
construction_id = 'Generic Double Pane'
|
191
|
+
end
|
192
|
+
|
193
|
+
# assign the construction
|
194
|
+
unless construction_id.nil?
|
195
|
+
construction = openstudio_model.getConstructionByName(construction_id)
|
196
|
+
unless construction.empty?
|
197
|
+
os_construction = construction.get
|
198
|
+
os_shading_surface.setConstruction(os_construction)
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
# add the shade to the group
|
203
|
+
os_shading_surface.setShadingSurfaceGroup(shading_surface_group)
|
204
|
+
|
205
|
+
os_shading_surface
|
206
|
+
end
|
207
|
+
|
163
208
|
end # Aperture
|
164
209
|
end # Honeybee
|
@@ -154,4 +154,51 @@ module Honeybee
|
|
154
154
|
return result
|
155
155
|
end
|
156
156
|
end # Door
|
157
|
+
|
158
|
+
def to_openstudio_shade(openstudio_model, shading_surface_group)
|
159
|
+
# get the vertices from the door
|
160
|
+
if @hash[:geometry][:vertices].nil?
|
161
|
+
hb_verts = @hash[:geometry][:boundary]
|
162
|
+
else
|
163
|
+
hb_verts = @hash[:geometry][:vertices]
|
164
|
+
end
|
165
|
+
|
166
|
+
# create the openstudio shading surface
|
167
|
+
os_vertices = OpenStudio::Point3dVector.new
|
168
|
+
hb_verts.each do |vertex|
|
169
|
+
os_vertices << OpenStudio::Point3d.new(vertex[0], vertex[1], vertex[2])
|
170
|
+
end
|
171
|
+
reordered_vertices = OpenStudio.reorderULC(os_vertices)
|
172
|
+
|
173
|
+
os_shading_surface = OpenStudio::Model::ShadingSurface.new(reordered_vertices, openstudio_model)
|
174
|
+
os_shading_surface.setName(@hash[:identifier])
|
175
|
+
unless @hash[:display_name].nil?
|
176
|
+
os_shading_surface.setDisplayName(@hash[:display_name])
|
177
|
+
end
|
178
|
+
|
179
|
+
# get the approriate construction id
|
180
|
+
construction_id = nil
|
181
|
+
if @hash[:properties][:energy][:construction]
|
182
|
+
construction_id = @hash[:properties][:energy][:construction]
|
183
|
+
elsif @hash[:is_glass] == true
|
184
|
+
construction_id = 'Generic Double Pane'
|
185
|
+
else
|
186
|
+
construction_id = 'Generic Exterior Door'
|
187
|
+
end
|
188
|
+
|
189
|
+
# assign the construction
|
190
|
+
unless construction_id.nil?
|
191
|
+
construction = openstudio_model.getConstructionByName(construction_id)
|
192
|
+
unless construction.empty?
|
193
|
+
os_construction = construction.get
|
194
|
+
os_shading_surface.setConstruction(os_construction)
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
# add the shade to the group
|
199
|
+
os_shading_surface.setShadingSurfaceGroup(shading_surface_group)
|
200
|
+
|
201
|
+
os_shading_surface
|
202
|
+
end
|
203
|
+
|
157
204
|
end # Honeybee
|
@@ -184,5 +184,70 @@ module Honeybee
|
|
184
184
|
|
185
185
|
os_surface
|
186
186
|
end
|
187
|
+
|
188
|
+
def to_openstudio_shade(openstudio_model, shading_surface_group)
|
189
|
+
# get the vertices from the face
|
190
|
+
if @hash[:geometry][:vertices].nil?
|
191
|
+
hb_verts = @hash[:geometry][:boundary]
|
192
|
+
else
|
193
|
+
hb_verts = @hash[:geometry][:vertices]
|
194
|
+
end
|
195
|
+
|
196
|
+
# create the openstudio shading surface
|
197
|
+
os_vertices = OpenStudio::Point3dVector.new
|
198
|
+
hb_verts.each do |vertex|
|
199
|
+
os_vertices << OpenStudio::Point3d.new(vertex[0], vertex[1], vertex[2])
|
200
|
+
end
|
201
|
+
reordered_vertices = OpenStudio.reorderULC(os_vertices)
|
202
|
+
|
203
|
+
os_shading_surface = OpenStudio::Model::ShadingSurface.new(reordered_vertices, openstudio_model)
|
204
|
+
os_shading_surface.setName(@hash[:identifier])
|
205
|
+
unless @hash[:display_name].nil?
|
206
|
+
os_shading_surface.setDisplayName(@hash[:display_name])
|
207
|
+
end
|
208
|
+
|
209
|
+
# get the approriate construction id
|
210
|
+
construction_id = nil
|
211
|
+
if @hash[:properties][:energy][:construction]
|
212
|
+
construction_id = @hash[:properties][:energy][:construction]
|
213
|
+
elsif @hash[:face_type] == 'Wall'
|
214
|
+
construction_id = 'Generic Exterior Wall'
|
215
|
+
elsif @hash[:face_type] == 'RoofCeiling'
|
216
|
+
construction_id = 'Generic Roof'
|
217
|
+
elsif @hash[:face_type] == 'Floor'
|
218
|
+
construction_id = 'Generic Exposed Floor'
|
219
|
+
end
|
220
|
+
|
221
|
+
# assign the construction
|
222
|
+
unless construction_id.nil?
|
223
|
+
construction = openstudio_model.getConstructionByName(construction_id)
|
224
|
+
unless construction.empty?
|
225
|
+
os_construction = construction.get
|
226
|
+
os_shading_surface.setConstruction(os_construction)
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
# add the shade to the group
|
231
|
+
os_shading_surface.setShadingSurfaceGroup(shading_surface_group)
|
232
|
+
|
233
|
+
# convert the apertures to shade objects
|
234
|
+
if @hash[:apertures]
|
235
|
+
@hash[:apertures].each do |aperture|
|
236
|
+
hb_aperture = Aperture.new(aperture)
|
237
|
+
os_subsurface_aperture = hb_aperture.to_openstudio_shade(openstudio_model, shading_surface_group)
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
# convert the apertures to shade objects
|
242
|
+
if @hash[:doors]
|
243
|
+
@hash[:doors].each do |door|
|
244
|
+
hb_door = Door.new(door)
|
245
|
+
os_subsurface_door = hb_door.to_openstudio_shade(openstudio_model, shading_surface_group)
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
os_shading_surface
|
250
|
+
end
|
251
|
+
|
187
252
|
end # Face
|
188
253
|
end # Honeybee
|
data/lib/to_openstudio/model.rb
CHANGED
@@ -203,6 +203,9 @@ module Honeybee
|
|
203
203
|
puts 'Translating Context Shade Geometry'
|
204
204
|
end
|
205
205
|
create_orphaned_shades
|
206
|
+
create_orphaned_faces
|
207
|
+
create_orphaned_apertures
|
208
|
+
create_orphaned_doors
|
206
209
|
end
|
207
210
|
|
208
211
|
def create_materials(material_dicts, check_existing=false)
|
@@ -588,28 +591,43 @@ module Honeybee
|
|
588
591
|
shading_surface_group = OpenStudio::Model::ShadingSurfaceGroup.new(@openstudio_model)
|
589
592
|
shading_surface_group.setShadingSurfaceType('Building')
|
590
593
|
@hash[:orphaned_shades].each do |shade|
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
+
shade_object = Shade.new(shade)
|
595
|
+
openstudio_shade = shade_object.to_openstudio(@openstudio_model)
|
596
|
+
openstudio_shade.setShadingSurfaceGroup(shading_surface_group)
|
594
597
|
end
|
595
598
|
end
|
596
599
|
end
|
597
600
|
|
598
601
|
def create_orphaned_faces
|
599
602
|
if @hash[:orphaned_faces]
|
600
|
-
|
603
|
+
shading_surface_group = OpenStudio::Model::ShadingSurfaceGroup.new(@openstudio_model)
|
604
|
+
shading_surface_group.setShadingSurfaceType('Building')
|
605
|
+
@hash[:orphaned_faces].each do |face|
|
606
|
+
face_object = Face.new(face)
|
607
|
+
openstudio_shade = face_object.to_openstudio_shade(@openstudio_model, shading_surface_group)
|
608
|
+
end
|
601
609
|
end
|
602
610
|
end
|
603
611
|
|
604
612
|
def create_orphaned_apertures
|
605
613
|
if @hash[:orphaned_apertures]
|
606
|
-
|
614
|
+
shading_surface_group = OpenStudio::Model::ShadingSurfaceGroup.new(@openstudio_model)
|
615
|
+
shading_surface_group.setShadingSurfaceType('Building')
|
616
|
+
@hash[:orphaned_apertures].each do |ap|
|
617
|
+
ap_object = Aperture.new(ap)
|
618
|
+
openstudio_shade = ap_object.to_openstudio_shade(@openstudio_model, shading_surface_group)
|
619
|
+
end
|
607
620
|
end
|
608
621
|
end
|
609
622
|
|
610
623
|
def create_orphaned_doors
|
611
624
|
if @hash[:orphaned_doors]
|
612
|
-
|
625
|
+
shading_surface_group = OpenStudio::Model::ShadingSurfaceGroup.new(@openstudio_model)
|
626
|
+
shading_surface_group.setShadingSurfaceType('Building')
|
627
|
+
@hash[:orphaned_doors].each do |dr|
|
628
|
+
dr_object = Door.new(dr)
|
629
|
+
openstudio_shade = dr_object.to_openstudio_shade(@openstudio_model, shading_surface_group)
|
630
|
+
end
|
613
631
|
end
|
614
632
|
end
|
615
633
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: honeybee-openstudio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.28.
|
4
|
+
version: 2.28.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tanushree Charan
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date: 2021-12-
|
14
|
+
date: 2021-12-06 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|