honeybee-core 1.64.1__tar.gz → 1.64.2__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.
- {honeybee_core-1.64.1/honeybee_core.egg-info → honeybee_core-1.64.2}/PKG-INFO +1 -1
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/model.py +69 -2
- {honeybee_core-1.64.1 → honeybee_core-1.64.2/honeybee_core.egg-info}/PKG-INFO +1 -1
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/.github/workflows/ci.yaml +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/.github/workflows/dependency-release.yaml +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/.gitignore +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/.releaserc.json +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/CODE_OF_CONDUCT.md +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/CONTRIBUTING.md +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/LICENSE +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/MANIFEST.in +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/README.md +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/deploy.sh +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/dev-requirements.txt +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/docs/_build/.nojekyll +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/docs/_build/README.md +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/docs/_build/docs/README.md +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/docs/_static/custom.css +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/docs/_templates/layout.html +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/docs/cli/index.rst +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/docs/conf.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/docs/index.rst +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/__init__.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/__main__.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/_base.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/_basewithshade.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/_lockable.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/altnumber.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/aperture.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/boundarycondition.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/checkdup.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/cli/__init__.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/cli/compare.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/cli/create.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/cli/edit.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/cli/lib.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/cli/setconfig.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/cli/validate.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/colorobj.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/config.json +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/config.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/dictutil.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/door.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/extensionutil.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/face.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/facetype.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/logutil.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/orientation.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/properties.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/room.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/search.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/shade.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/shademesh.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/typing.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/units.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/writer/__init__.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/writer/aperture.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/writer/door.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/writer/face.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/writer/model.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/writer/room.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/writer/shade.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee/writer/shademesh.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee_core.egg-info/SOURCES.txt +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee_core.egg-info/dependency_links.txt +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee_core.egg-info/entry_points.txt +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee_core.egg-info/requires.txt +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/honeybee_core.egg-info/top_level.txt +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/requirements.txt +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/setup.cfg +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/setup.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/__init__.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/aperture_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/boundary_condition_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/cli_compare_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/cli_create_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/cli_edit_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/cli_validate_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/colorobj_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/config_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/dictutil_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/door_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/face_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/facetype_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/json/ShoeBox.json +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/json/bad_geometry_model.hbjson +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/json/colliding_room_volumes.hbjson +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/json/compare_model_1.hbjson +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/json/compare_model_2.hbjson +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/json/complex_polyfaces.json +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/json/minor_geometry/existing_model.hbjson +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/json/minor_geometry/updated_model.hbjson +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/json/mismatched_area_adj.hbjson +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/json/model_with_adiabatic.hbjson +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/json/model_with_holes.hbjson +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/json/model_without_adjacency.hbjson +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/json/nonascii_face.json +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/json/polygons_for_gap_boundary.json +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/json/room_for_window_offset.hbjson +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/json/single_family_home.hbjson +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/lockable_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/model_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/orientation_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/room_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/search_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/shade_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/shademesh_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/stl/cube_ascii.stl +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/stl/cube_binary.stl +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/typing_test.py +0 -0
- {honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/units_test.py +0 -0
|
@@ -13,7 +13,9 @@ try: # check if we are in IronPython
|
|
|
13
13
|
except ImportError: # wea are in cPython
|
|
14
14
|
import pickle
|
|
15
15
|
|
|
16
|
-
from ladybug_geometry.
|
|
16
|
+
from ladybug_geometry.geometry2d import Polygon2D
|
|
17
|
+
from ladybug_geometry.geometry3d import Vector3D, Point3D, Plane, Face3D, \
|
|
18
|
+
Mesh3D, Polyface3D
|
|
17
19
|
from ladybug_geometry.interop.stl import STL
|
|
18
20
|
|
|
19
21
|
from ._base import _Base
|
|
@@ -1533,6 +1535,71 @@ class Model(_Base):
|
|
|
1533
1535
|
return roof_to_exterior, slab_to_exterior, exposed_floor_to_exterior_wall, \
|
|
1534
1536
|
exterior_wall_to_wall, roof_ridge, exposed_floor_to_floor, underground
|
|
1535
1537
|
|
|
1538
|
+
def classified_sub_face_edges(
|
|
1539
|
+
self, mullion_thickness=None, tolerance=None, angle_tolerance=None
|
|
1540
|
+
):
|
|
1541
|
+
"""Get classified edges around this Model's Apertures and Doors.
|
|
1542
|
+
|
|
1543
|
+
The edges returned by this method will only exist along the exterior
|
|
1544
|
+
sub-faces.
|
|
1545
|
+
|
|
1546
|
+
Args:
|
|
1547
|
+
mullion_thickness: The maximum difference that apertures can be from
|
|
1548
|
+
one another for the edges to be considered a mullion rather than
|
|
1549
|
+
a frame. If None, the Model's tolerance will be used.
|
|
1550
|
+
tolerance: The maximum difference between point values for them to be
|
|
1551
|
+
considered equivalent. If None, the Model's tolerance will be used.
|
|
1552
|
+
angle_tolerance: The max angle difference in degrees where sub-face
|
|
1553
|
+
normals are no longer considered coplanar. If None, the Model
|
|
1554
|
+
angle_tolerance will be used. (Default: None).
|
|
1555
|
+
|
|
1556
|
+
Returns:
|
|
1557
|
+
A tuple with three items where each item is a list containing
|
|
1558
|
+
LineSegment3D surrounding different sub-face conditions.
|
|
1559
|
+
|
|
1560
|
+
- window_frames - Apertures meet their parent exterior wall or roof.
|
|
1561
|
+
|
|
1562
|
+
- window_mullions - Apertures meet one another.
|
|
1563
|
+
|
|
1564
|
+
- door_frames - Doors meet their parent exterior wall or roof.
|
|
1565
|
+
"""
|
|
1566
|
+
# set up lists to be populated
|
|
1567
|
+
window_frames, window_mullions = [], []
|
|
1568
|
+
tol = tolerance if tolerance is not None else self.tolerance
|
|
1569
|
+
a_tol = math.radians(angle_tolerance) if angle_tolerance is not None else \
|
|
1570
|
+
math.radians(self.angle_tolerance)
|
|
1571
|
+
mul_thick = tol if mullion_thickness is None else mullion_thickness
|
|
1572
|
+
|
|
1573
|
+
# 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):
|
|
1578
|
+
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)
|
|
1581
|
+
break
|
|
1582
|
+
else: # the first face with this type of plane
|
|
1583
|
+
coplanar_dict[ap.geometry.plane] = [ap]
|
|
1584
|
+
|
|
1585
|
+
# for each group, intersect their edges and extract edges from a Polyface3D
|
|
1586
|
+
for plane, aps in coplanar_dict.items():
|
|
1587
|
+
# intersect edges that are close enough to one another within thickness
|
|
1588
|
+
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))
|
|
1592
|
+
polygons = Polygon2D.intersect_polygon_segments(polygons, mul_thick)
|
|
1593
|
+
faces = []
|
|
1594
|
+
for poly in polygons:
|
|
1595
|
+
faces.append(Face3D([plane.xy_to_xyz(pt) for pt in poly]))
|
|
1596
|
+
# create a joined Polyface3D and classify the edges
|
|
1597
|
+
ap_polyface = Polyface3D.from_faces(faces, mul_thick)
|
|
1598
|
+
window_frames.extend(ap_polyface.naked_edges)
|
|
1599
|
+
window_mullions.extend(ap_polyface.internal_edges)
|
|
1600
|
+
|
|
1601
|
+
return window_frames, window_mullions, self.exterior_door_edges
|
|
1602
|
+
|
|
1536
1603
|
def add_prefix(self, prefix):
|
|
1537
1604
|
"""Change the identifier of this object and child objects by inserting a prefix.
|
|
1538
1605
|
|
|
@@ -1650,7 +1717,7 @@ class Model(_Base):
|
|
|
1650
1717
|
|
|
1651
1718
|
Args:
|
|
1652
1719
|
start_integer: The starting integer that will be used to set a lower
|
|
1653
|
-
limit on the
|
|
1720
|
+
limit on the integers assigned to the geometry elements.
|
|
1654
1721
|
repair_surface_bcs: A Boolean to note whether all Surface boundary
|
|
1655
1722
|
conditions across the model should be updated with the new
|
|
1656
1723
|
identifiers that were generated from the display names. (Default: True).
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/json/minor_geometry/existing_model.hbjson
RENAMED
|
File without changes
|
{honeybee_core-1.64.1 → honeybee_core-1.64.2}/tests/json/minor_geometry/updated_model.hbjson
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|