honeybee-core 1.64.2__tar.gz → 1.64.3__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.64.2/honeybee_core.egg-info → honeybee_core-1.64.3}/PKG-INFO +1 -1
  2. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/model.py +37 -19
  3. {honeybee_core-1.64.2 → honeybee_core-1.64.3/honeybee_core.egg-info}/PKG-INFO +1 -1
  4. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/.github/workflows/ci.yaml +0 -0
  5. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/.github/workflows/dependency-release.yaml +0 -0
  6. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/.gitignore +0 -0
  7. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/.releaserc.json +0 -0
  8. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/CODE_OF_CONDUCT.md +0 -0
  9. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/CONTRIBUTING.md +0 -0
  10. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/LICENSE +0 -0
  11. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/MANIFEST.in +0 -0
  12. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/README.md +0 -0
  13. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/deploy.sh +0 -0
  14. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/dev-requirements.txt +0 -0
  15. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/docs/_build/.nojekyll +0 -0
  16. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/docs/_build/README.md +0 -0
  17. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/docs/_build/docs/README.md +0 -0
  18. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/docs/_static/custom.css +0 -0
  19. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/docs/_templates/layout.html +0 -0
  20. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/docs/cli/index.rst +0 -0
  21. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/docs/conf.py +0 -0
  22. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/docs/index.rst +0 -0
  23. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/__init__.py +0 -0
  24. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/__main__.py +0 -0
  25. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/_base.py +0 -0
  26. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/_basewithshade.py +0 -0
  27. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/_lockable.py +0 -0
  28. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/altnumber.py +0 -0
  29. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/aperture.py +0 -0
  30. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/boundarycondition.py +0 -0
  31. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/checkdup.py +0 -0
  32. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/cli/__init__.py +0 -0
  33. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/cli/compare.py +0 -0
  34. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/cli/create.py +0 -0
  35. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/cli/edit.py +0 -0
  36. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/cli/lib.py +0 -0
  37. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/cli/setconfig.py +0 -0
  38. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/cli/validate.py +0 -0
  39. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/colorobj.py +0 -0
  40. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/config.json +0 -0
  41. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/config.py +0 -0
  42. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/dictutil.py +0 -0
  43. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/door.py +0 -0
  44. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/extensionutil.py +0 -0
  45. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/face.py +0 -0
  46. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/facetype.py +0 -0
  47. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/logutil.py +0 -0
  48. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/orientation.py +0 -0
  49. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/properties.py +0 -0
  50. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/room.py +0 -0
  51. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/search.py +0 -0
  52. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/shade.py +0 -0
  53. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/shademesh.py +0 -0
  54. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/typing.py +0 -0
  55. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/units.py +0 -0
  56. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/writer/__init__.py +0 -0
  57. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/writer/aperture.py +0 -0
  58. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/writer/door.py +0 -0
  59. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/writer/face.py +0 -0
  60. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/writer/model.py +0 -0
  61. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/writer/room.py +0 -0
  62. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/writer/shade.py +0 -0
  63. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee/writer/shademesh.py +0 -0
  64. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee_core.egg-info/SOURCES.txt +0 -0
  65. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee_core.egg-info/dependency_links.txt +0 -0
  66. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee_core.egg-info/entry_points.txt +0 -0
  67. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee_core.egg-info/requires.txt +0 -0
  68. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/honeybee_core.egg-info/top_level.txt +0 -0
  69. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/requirements.txt +0 -0
  70. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/setup.cfg +0 -0
  71. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/setup.py +0 -0
  72. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/__init__.py +0 -0
  73. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/aperture_test.py +0 -0
  74. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/boundary_condition_test.py +0 -0
  75. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/cli_compare_test.py +0 -0
  76. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/cli_create_test.py +0 -0
  77. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/cli_edit_test.py +0 -0
  78. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/cli_validate_test.py +0 -0
  79. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/colorobj_test.py +0 -0
  80. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/config_test.py +0 -0
  81. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/dictutil_test.py +0 -0
  82. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/door_test.py +0 -0
  83. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/face_test.py +0 -0
  84. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/facetype_test.py +0 -0
  85. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/json/ShoeBox.json +0 -0
  86. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/json/bad_geometry_model.hbjson +0 -0
  87. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/json/colliding_room_volumes.hbjson +0 -0
  88. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/json/compare_model_1.hbjson +0 -0
  89. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/json/compare_model_2.hbjson +0 -0
  90. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/json/complex_polyfaces.json +0 -0
  91. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/json/minor_geometry/existing_model.hbjson +0 -0
  92. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/json/minor_geometry/updated_model.hbjson +0 -0
  93. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/json/mismatched_area_adj.hbjson +0 -0
  94. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/json/model_with_adiabatic.hbjson +0 -0
  95. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/json/model_with_holes.hbjson +0 -0
  96. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/json/model_without_adjacency.hbjson +0 -0
  97. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/json/nonascii_face.json +0 -0
  98. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/json/polygons_for_gap_boundary.json +0 -0
  99. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/json/room_for_window_offset.hbjson +0 -0
  100. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/json/single_family_home.hbjson +0 -0
  101. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/lockable_test.py +0 -0
  102. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/model_test.py +0 -0
  103. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/orientation_test.py +0 -0
  104. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/room_test.py +0 -0
  105. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/search_test.py +0 -0
  106. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/shade_test.py +0 -0
  107. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/shademesh_test.py +0 -0
  108. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/stl/cube_ascii.stl +0 -0
  109. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/stl/cube_binary.stl +0 -0
  110. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/typing_test.py +0 -0
  111. {honeybee_core-1.64.2 → honeybee_core-1.64.3}/tests/units_test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: honeybee-core
3
- Version: 1.64.2
3
+ Version: 1.64.3
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
@@ -1478,7 +1478,7 @@ class Model(_Base):
1478
1478
  )
1479
1479
  return shades
1480
1480
 
1481
- def classified_envelope_edges(self, tolerance=None, exclude_coplanar=False):
1481
+ def classified_envelope_edges(self, tolerance=None, exclude_coplanar=True):
1482
1482
  """Get classified edges of this Model's envelope based on Faces they adjoin.
1483
1483
 
1484
1484
  The edges returned by this method will only exist along the exterior
@@ -1490,7 +1490,7 @@ class Model(_Base):
1490
1490
  considered equivalent. If None, the Model's tolerance will be used.
1491
1491
  exclude_coplanar: Boolean to note whether edges falling between two
1492
1492
  coplanar Faces in the building envelope should be included
1493
- in the result (False) or excluded from it (True). (Default: False).
1493
+ in the result (False) or excluded from it (True). (Default: True).
1494
1494
 
1495
1495
  Returns:
1496
1496
  A tuple with eight items where each item is a list containing
@@ -1562,43 +1562,61 @@ class Model(_Base):
1562
1562
  - window_mullions - Apertures meet one another.
1563
1563
 
1564
1564
  - door_frames - Doors meet their parent exterior wall or roof.
1565
+
1566
+ - door_mullions - Doors meet one another.
1565
1567
  """
1566
- # set up lists to be populated
1567
- window_frames, window_mullions = [], []
1568
+ # set up variables to be used for all sub_faces
1568
1569
  tol = tolerance if tolerance is not None else self.tolerance
1569
1570
  a_tol = math.radians(angle_tolerance) if angle_tolerance is not None else \
1570
1571
  math.radians(self.angle_tolerance)
1571
1572
  mul_thick = tol if mullion_thickness is None else mullion_thickness
1572
1573
 
1574
+ # get the edges of the sub_faces
1575
+ window_frames, window_mullions = \
1576
+ self._classify_mullions(self.apertures, mul_thick, tol, a_tol)
1577
+ door_frames, door_mullions = \
1578
+ self._classify_mullions(self.doors, mul_thick, tol, a_tol)
1579
+ return window_frames, window_mullions, door_frames, door_mullions
1580
+
1581
+ @staticmethod
1582
+ def _classify_mullions(sub_faces, mul_thick, tol, a_tol):
1583
+ """Organize subface edges depending on whether they are frames or mullions."""
1584
+ sub_face_frames, sub_face_mullions = [], []
1573
1585
  # group the apertures by the plane in which they exist
1574
- apertures = self.apertures
1575
- coplanar_dict = {apertures[0].geometry.plane: [apertures[0]]}
1576
- for ap in apertures[1:]:
1577
- if isinstance(ap.boundary_condition, Outdoors):
1586
+ coplanar_dict = {}
1587
+ sub_faces = [sf for sf in sub_faces
1588
+ if isinstance(sf.boundary_condition, Outdoors)]
1589
+ if len(sub_faces) != 0:
1590
+ coplanar_dict = {sub_faces[0].geometry.plane: [sub_faces[0]]}
1591
+ for sf in sub_faces[1:]:
1578
1592
  for pln, f_list in coplanar_dict.items():
1579
- if ap.geometry.plane.is_coplanar_tolerance(pln, tol, a_tol):
1580
- f_list.append(ap)
1593
+ if sf.geometry.plane.is_coplanar_tolerance(pln, tol, a_tol):
1594
+ f_list.append(sf)
1581
1595
  break
1582
1596
  else: # the first face with this type of plane
1583
- coplanar_dict[ap.geometry.plane] = [ap]
1597
+ coplanar_dict[sf.geometry.plane] = [sf]
1584
1598
 
1585
1599
  # for each group, intersect their edges and extract edges from a Polyface3D
1586
- for plane, aps in coplanar_dict.items():
1600
+ for plane, sfs in coplanar_dict.items():
1587
1601
  # intersect edges that are close enough to one another within thickness
1588
1602
  polygons = []
1589
- for ap in aps:
1590
- pts_2d = [plane.xyz_to_xy(pt) for pt in ap.geometry.boundary]
1591
- polygons.append(Polygon2D(pts_2d))
1603
+ for sf in sfs:
1604
+ pts_2d = [plane.xyz_to_xy(pt) for pt in sf.geometry.boundary]
1605
+ try:
1606
+ poly = Polygon2D(pts_2d).remove_colinear_vertices(mul_thick)
1607
+ polygons.append(poly)
1608
+ except AssertionError:
1609
+ pass # too small of a geometry
1592
1610
  polygons = Polygon2D.intersect_polygon_segments(polygons, mul_thick)
1593
1611
  faces = []
1594
1612
  for poly in polygons:
1595
- faces.append(Face3D([plane.xy_to_xyz(pt) for pt in poly]))
1613
+ faces.append(Face3D([plane.xy_to_xyz(pt) for pt in poly], plane))
1596
1614
  # create a joined Polyface3D and classify the edges
1597
1615
  ap_polyface = Polyface3D.from_faces(faces, mul_thick)
1598
- window_frames.extend(ap_polyface.naked_edges)
1599
- window_mullions.extend(ap_polyface.internal_edges)
1616
+ sub_face_frames.extend(ap_polyface.naked_edges)
1617
+ sub_face_mullions.extend(ap_polyface.internal_edges)
1600
1618
 
1601
- return window_frames, window_mullions, self.exterior_door_edges
1619
+ return sub_face_frames, sub_face_mullions
1602
1620
 
1603
1621
  def add_prefix(self, prefix):
1604
1622
  """Change the identifier of this object and child objects by inserting a prefix.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: honeybee-core
3
- Version: 1.64.2
3
+ Version: 1.64.3
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
File without changes
File without changes
File without changes
File without changes