honeybee-core 1.61.23__tar.gz → 1.61.25__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. {honeybee_core-1.61.23/honeybee_core.egg-info → honeybee_core-1.61.25}/PKG-INFO +1 -1
  2. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/face.py +10 -2
  3. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/room.py +37 -11
  4. {honeybee_core-1.61.23 → honeybee_core-1.61.25/honeybee_core.egg-info}/PKG-INFO +1 -1
  5. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/.github/workflows/ci.yaml +0 -0
  6. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/.github/workflows/dependency-release.yaml +0 -0
  7. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/.gitignore +0 -0
  8. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/.releaserc.json +0 -0
  9. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/CODE_OF_CONDUCT.md +0 -0
  10. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/CONTRIBUTING.md +0 -0
  11. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/LICENSE +0 -0
  12. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/MANIFEST.in +0 -0
  13. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/README.md +0 -0
  14. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/deploy.sh +0 -0
  15. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/dev-requirements.txt +0 -0
  16. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/docs/_build/.nojekyll +0 -0
  17. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/docs/_build/README.md +0 -0
  18. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/docs/_build/docs/README.md +0 -0
  19. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/docs/_static/custom.css +0 -0
  20. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/docs/_templates/layout.html +0 -0
  21. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/docs/cli/index.rst +0 -0
  22. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/docs/conf.py +0 -0
  23. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/docs/index.rst +0 -0
  24. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/__init__.py +0 -0
  25. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/__main__.py +0 -0
  26. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/_base.py +0 -0
  27. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/_basewithshade.py +0 -0
  28. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/_lockable.py +0 -0
  29. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/altnumber.py +0 -0
  30. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/aperture.py +0 -0
  31. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/boundarycondition.py +0 -0
  32. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/checkdup.py +0 -0
  33. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/cli/__init__.py +0 -0
  34. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/cli/compare.py +0 -0
  35. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/cli/create.py +0 -0
  36. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/cli/edit.py +0 -0
  37. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/cli/lib.py +0 -0
  38. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/cli/setconfig.py +0 -0
  39. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/cli/validate.py +0 -0
  40. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/colorobj.py +0 -0
  41. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/config.json +0 -0
  42. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/config.py +0 -0
  43. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/dictutil.py +0 -0
  44. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/door.py +0 -0
  45. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/extensionutil.py +0 -0
  46. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/facetype.py +0 -0
  47. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/logutil.py +0 -0
  48. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/model.py +0 -0
  49. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/orientation.py +0 -0
  50. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/properties.py +0 -0
  51. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/search.py +0 -0
  52. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/shade.py +0 -0
  53. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/shademesh.py +0 -0
  54. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/typing.py +0 -0
  55. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/units.py +0 -0
  56. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/writer/__init__.py +0 -0
  57. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/writer/aperture.py +0 -0
  58. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/writer/door.py +0 -0
  59. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/writer/face.py +0 -0
  60. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/writer/model.py +0 -0
  61. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/writer/room.py +0 -0
  62. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/writer/shade.py +0 -0
  63. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/writer/shademesh.py +0 -0
  64. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee_core.egg-info/SOURCES.txt +0 -0
  65. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee_core.egg-info/dependency_links.txt +0 -0
  66. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee_core.egg-info/entry_points.txt +0 -0
  67. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee_core.egg-info/requires.txt +0 -0
  68. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee_core.egg-info/top_level.txt +0 -0
  69. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/requirements.txt +0 -0
  70. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/setup.cfg +0 -0
  71. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/setup.py +0 -0
  72. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/__init__.py +0 -0
  73. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/aperture_test.py +0 -0
  74. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/boundary_condition_test.py +0 -0
  75. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/cli_compare_test.py +0 -0
  76. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/cli_create_test.py +0 -0
  77. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/cli_edit_test.py +0 -0
  78. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/cli_validate_test.py +0 -0
  79. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/colorobj_test.py +0 -0
  80. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/config_test.py +0 -0
  81. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/dictutil_test.py +0 -0
  82. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/door_test.py +0 -0
  83. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/face_test.py +0 -0
  84. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/facetype_test.py +0 -0
  85. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/ShoeBox.json +0 -0
  86. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/bad_geometry_model.hbjson +0 -0
  87. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/colliding_room_volumes.hbjson +0 -0
  88. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/compare_model_1.hbjson +0 -0
  89. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/compare_model_2.hbjson +0 -0
  90. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/complex_polyfaces.json +0 -0
  91. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/minor_geometry/existing_model.hbjson +0 -0
  92. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/minor_geometry/updated_model.hbjson +0 -0
  93. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/mismatched_area_adj.hbjson +0 -0
  94. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/model_with_adiabatic.hbjson +0 -0
  95. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/model_with_holes.hbjson +0 -0
  96. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/model_without_adjacency.hbjson +0 -0
  97. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/nonascii_face.json +0 -0
  98. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/polygons_for_gap_boundary.json +0 -0
  99. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/room_for_window_offset.hbjson +0 -0
  100. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/single_family_home.hbjson +0 -0
  101. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/lockable_test.py +0 -0
  102. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/model_test.py +0 -0
  103. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/orientation_test.py +0 -0
  104. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/room_test.py +0 -0
  105. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/search_test.py +0 -0
  106. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/shade_test.py +0 -0
  107. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/shademesh_test.py +0 -0
  108. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/stl/cube_ascii.stl +0 -0
  109. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/stl/cube_binary.stl +0 -0
  110. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/typing_test.py +0 -0
  111. {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/units_test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: honeybee-core
3
- Version: 1.61.23
3
+ Version: 1.61.25
4
4
  Summary: A library to create 3D building geometry for various types of environmental simulation.
5
5
  Home-page: https://github.com/ladybug-tools/honeybee-core
6
6
  Author: Ladybug Tools
@@ -1749,16 +1749,24 @@ class Face(_BaseWithShade):
1749
1749
  at which point the vertex is considered colinear. Default: 0.01,
1750
1750
  suitable for objects in meters.
1751
1751
  """
1752
+ # set up lists to track sub-faces to remove
1753
+ del_ap_i, del_dr_i = [], []
1754
+ # remove degenerate apertures
1752
1755
  for i, ap in enumerate(self._apertures):
1753
1756
  try:
1754
1757
  ap.remove_colinear_vertices(tolerance)
1755
1758
  except ValueError:
1756
- self._apertures.pop(i)
1759
+ del_ap_i.append(i)
1760
+ for del_i in reversed(del_ap_i):
1761
+ self._apertures.pop(del_i)
1762
+ # remove degenerate doors
1757
1763
  for i, dr in enumerate(self._doors):
1758
1764
  try:
1759
1765
  dr.remove_colinear_vertices(tolerance)
1760
1766
  except ValueError:
1761
- self._apertures.pop(i)
1767
+ del_dr_i.append(i)
1768
+ for del_i in reversed(del_dr_i):
1769
+ self._doors.pop(del_i)
1762
1770
 
1763
1771
  def is_geo_equivalent(self, face, tolerance=0.01):
1764
1772
  """Get a boolean for whether this object is geometrically equivalent to another.
@@ -2325,29 +2325,55 @@ class Room(_BaseWithShade):
2325
2325
  A string with the message or a list with a dictionary if detailed is True.
2326
2326
  """
2327
2327
  # create Polygon2Ds from the floors of the rooms
2328
- polys = [
2329
- [(Polygon2D(Point2D(p.x, p.y) for p in flr.vertices), flr.geometry[0].z)
2330
- for flr in room.floors if flr.geometry.is_horizontal(tolerance)]
2331
- for room in rooms
2332
- ]
2328
+ b_polys, h_polys = [], []
2329
+ for room in rooms:
2330
+ rb_polys, rh_polys = [], []
2331
+ for flr in room.floors:
2332
+ flr_geo = flr.geometry
2333
+ if flr_geo.is_horizontal(tolerance):
2334
+ b_poly = Polygon2D(Point2D(p.x, p.y) for p in flr_geo.boundary)
2335
+ rb_polys.append((b_poly, flr_geo[0].z))
2336
+ if flr_geo.has_holes:
2337
+ h_poly = [Polygon2D(Point2D(p.x, p.y) for p in hole)
2338
+ for hole in flr_geo.holes]
2339
+ rh_polys.append(h_poly)
2340
+ else:
2341
+ rh_polys.append(None)
2342
+ b_polys.append(rb_polys)
2343
+ h_polys.append(rh_polys)
2333
2344
 
2334
2345
  # find the number of overlaps across the Rooms
2335
2346
  msgs = []
2336
- for i, (room_1, polys_1) in enumerate(zip(rooms, polys)):
2347
+ for i, (room_1, polys_1, hp1) in enumerate(zip(rooms, b_polys, h_polys)):
2337
2348
  overlap_rooms = []
2338
2349
  if len(polys_1) == 0:
2339
2350
  continue
2340
2351
  try:
2341
- for room_2, polys_2 in zip(rooms[i + 1:], polys[i + 1:]):
2352
+ zip_obj = zip(rooms[i + 1:], b_polys[i + 1:], h_polys[i + 1:])
2353
+ for room_2, polys_2, hp2 in zip_obj:
2342
2354
  collision_found = False
2343
- for ply_1, z1 in polys_1:
2355
+ for j, (ply_1, z1) in enumerate(polys_1):
2344
2356
  if collision_found:
2345
2357
  break
2346
- for ply_2, z2 in polys_2:
2358
+ for k, (ply_2, z2) in enumerate(polys_2):
2347
2359
  if collision_found:
2348
2360
  break
2349
- if abs(z1 - z2) < tolerance:
2350
- if ply_1.polygon_relationship(ply_2, tolerance) >= 0:
2361
+ if abs(z1 - z2) < tolerance and \
2362
+ ply_1.polygon_relationship(ply_2, tolerance) >= 0:
2363
+ # check that one room is not inside the hole of another
2364
+ inside_hole = False
2365
+ if hp1[j] is not None:
2366
+ for h in hp1[j]:
2367
+ if h.polygon_relationship(ply_2, tolerance) == 1:
2368
+ inside_hole = True
2369
+ break
2370
+ if not inside_hole and hp2[k] is not None:
2371
+ for h in hp2[k]:
2372
+ if h.polygon_relationship(ply_1, tolerance) == 1:
2373
+ inside_hole = True
2374
+ break
2375
+ # if the room is not in a hole, then they overlap
2376
+ if not inside_hole:
2351
2377
  overlap_rooms.append(room_2)
2352
2378
  collision_found = True
2353
2379
  break
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: honeybee-core
3
- Version: 1.61.23
3
+ Version: 1.61.25
4
4
  Summary: A library to create 3D building geometry for various types of environmental simulation.
5
5
  Home-page: https://github.com/ladybug-tools/honeybee-core
6
6
  Author: Ladybug Tools
File without changes