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.
- {honeybee_core-1.61.23/honeybee_core.egg-info → honeybee_core-1.61.25}/PKG-INFO +1 -1
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/face.py +10 -2
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/room.py +37 -11
- {honeybee_core-1.61.23 → honeybee_core-1.61.25/honeybee_core.egg-info}/PKG-INFO +1 -1
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/.github/workflows/ci.yaml +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/.github/workflows/dependency-release.yaml +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/.gitignore +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/.releaserc.json +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/CODE_OF_CONDUCT.md +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/CONTRIBUTING.md +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/LICENSE +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/MANIFEST.in +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/README.md +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/deploy.sh +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/dev-requirements.txt +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/docs/_build/.nojekyll +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/docs/_build/README.md +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/docs/_build/docs/README.md +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/docs/_static/custom.css +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/docs/_templates/layout.html +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/docs/cli/index.rst +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/docs/conf.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/docs/index.rst +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/__init__.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/__main__.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/_base.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/_basewithshade.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/_lockable.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/altnumber.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/aperture.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/boundarycondition.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/checkdup.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/cli/__init__.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/cli/compare.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/cli/create.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/cli/edit.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/cli/lib.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/cli/setconfig.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/cli/validate.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/colorobj.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/config.json +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/config.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/dictutil.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/door.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/extensionutil.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/facetype.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/logutil.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/model.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/orientation.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/properties.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/search.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/shade.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/shademesh.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/typing.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/units.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/writer/__init__.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/writer/aperture.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/writer/door.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/writer/face.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/writer/model.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/writer/room.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/writer/shade.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee/writer/shademesh.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee_core.egg-info/SOURCES.txt +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee_core.egg-info/dependency_links.txt +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee_core.egg-info/entry_points.txt +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee_core.egg-info/requires.txt +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/honeybee_core.egg-info/top_level.txt +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/requirements.txt +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/setup.cfg +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/setup.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/__init__.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/aperture_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/boundary_condition_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/cli_compare_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/cli_create_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/cli_edit_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/cli_validate_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/colorobj_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/config_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/dictutil_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/door_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/face_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/facetype_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/ShoeBox.json +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/bad_geometry_model.hbjson +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/colliding_room_volumes.hbjson +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/compare_model_1.hbjson +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/compare_model_2.hbjson +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/complex_polyfaces.json +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/minor_geometry/existing_model.hbjson +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/minor_geometry/updated_model.hbjson +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/mismatched_area_adj.hbjson +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/model_with_adiabatic.hbjson +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/model_with_holes.hbjson +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/model_without_adjacency.hbjson +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/nonascii_face.json +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/polygons_for_gap_boundary.json +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/room_for_window_offset.hbjson +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/json/single_family_home.hbjson +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/lockable_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/model_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/orientation_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/room_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/search_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/shade_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/shademesh_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/stl/cube_ascii.stl +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/stl/cube_binary.stl +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/typing_test.py +0 -0
- {honeybee_core-1.61.23 → honeybee_core-1.61.25}/tests/units_test.py +0 -0
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
for
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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.61.23 → honeybee_core-1.61.25}/tests/json/minor_geometry/existing_model.hbjson
RENAMED
|
File without changes
|
{honeybee_core-1.61.23 → honeybee_core-1.61.25}/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
|