honeybee-core 1.64.3__py3-none-any.whl → 1.64.4__py3-none-any.whl

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/room.py CHANGED
@@ -6,8 +6,8 @@ import re
6
6
  import uuid
7
7
 
8
8
  from ladybug_geometry.geometry2d import Point2D, Vector2D, Polygon2D
9
- from ladybug_geometry.geometry3d import Point3D, Vector3D, Ray3D, Plane, Face3D, \
10
- Mesh3D, Polyface3D
9
+ from ladybug_geometry.geometry3d import Point3D, Vector3D, Ray3D, LineSegment3D, \
10
+ Plane, Face3D, Mesh3D, Polyface3D
11
11
  from ladybug_geometry.bounding import overlapping_bounding_boxes
12
12
  from ladybug_geometry_polyskel.polysplit import perimeter_core_subpolygons
13
13
 
@@ -640,22 +640,37 @@ class Room(_BaseWithShade):
640
640
  exterior_wall_to_wall, roof_ridge, exposed_floor_to_floor = [], [], []
641
641
  underground, interior = [], []
642
642
 
643
- # get all of the edges and map them to room faces
644
- edges = self.geometry.internal_edges
643
+ # get all of the edges in a way that colinear edges are broken down
644
+ base_edges = list(self.geometry.internal_edges)
645
+ base_vertices = self.geometry.vertices
646
+ edges = []
647
+ for i, edge in enumerate(base_edges):
648
+ for pt in base_vertices:
649
+ if edge.distance_to_point(pt) < tolerance and \
650
+ not edge.p1.distance_to_point(pt) < tolerance and \
651
+ not edge.p2.distance_to_point(pt) < tolerance:
652
+ # split the edge in two at the point
653
+ base_edges.append(LineSegment3D.from_end_points(edge.p1, pt))
654
+ base_edges.append(LineSegment3D.from_end_points(pt, edge.p2))
655
+ break
656
+ else: # no further subdivision needed
657
+ edges.append(edge)
658
+
659
+ # map the edges to room faces
645
660
  edge_faces = [[] for _ in edges]
646
661
  for i, edge in enumerate(edges):
647
662
  for face in self.faces:
648
663
  if overlapping_bounding_boxes(face.geometry, edge, tolerance):
649
664
  for f_edge in face.geometry.segments:
650
- if edge.distance_to_point(f_edge.p1) < tolerance and \
651
- edge.distance_to_point(f_edge.p2) < tolerance:
665
+ if f_edge.distance_to_point(edge.p1) < tolerance and \
666
+ f_edge.distance_to_point(edge.p2) < tolerance:
652
667
  edge_faces[i].append(face)
653
668
  break
654
669
 
655
670
  # classify the edges by analyzing the faces they adjoin
656
671
  for edge, faces in zip(edges, edge_faces):
657
672
  # first check for cases where the edge should be excluded
658
- if len(edge_faces) <= 1: # not an edge between two faces
673
+ if len(faces) <= 1: # not an edge between two faces
659
674
  continue
660
675
  if angle_tolerance is not None:
661
676
  ang_tol = math.radians(angle_tolerance)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: honeybee-core
3
- Version: 1.64.3
3
+ Version: 1.64.4
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
@@ -19,7 +19,7 @@ honeybee/logutil.py,sha256=2gn-6RcWqFLvwdFzBHPqUwFqTj_R3iwHKALrl-2eL7M,2564
19
19
  honeybee/model.py,sha256=PayrO3hEEQfYDlsbqsnD14oGSYjY0GlL45G2aGTOLw0,202484
20
20
  honeybee/orientation.py,sha256=GogGblASW9OU-fobfDaQ7w5yRbEAFdJJuHwg2fadhKI,5046
21
21
  honeybee/properties.py,sha256=ok976fbUdXzLDR2XiPNf8Q5ejfOM-PArqm5CVUbFiCc,34316
22
- honeybee/room.py,sha256=ZrjABLErBTdTHcDRvPdt4W8-0REyPjQLtnu0rnrML0U,168284
22
+ honeybee/room.py,sha256=aYazfgBpD_Dd8Ntzz9gZEXWBqGT8wQiYeYpG0q0DuKI,169055
23
23
  honeybee/search.py,sha256=KOIeQjYdj0yhRWPmF5kiFiH8Ei0WbzuiU-capnwYVeM,5060
24
24
  honeybee/shade.py,sha256=2zuW1lR5wfe-UyAosuCX-3tII6CKONq7wt8Ac_jXU6c,20698
25
25
  honeybee/shademesh.py,sha256=WnpYkt04zuB8w-6OETNP7ZfzJarykEkQig6YdNkuVOw,14069
@@ -40,9 +40,9 @@ honeybee/writer/model.py,sha256=N7F_jksf-5TrdVecuxTaFWxnPVFLmQs7k8g27TsdB7Q,177
40
40
  honeybee/writer/room.py,sha256=kFghgStTU1SEJSLigXB0VjOWhZtgs4uXuAqdwd4yRQo,174
41
41
  honeybee/writer/shade.py,sha256=EpgX-vMc-s21TnMvNWvWTKyT8iAnxu1nFVXzjY1oyF8,177
42
42
  honeybee/writer/shademesh.py,sha256=Y41bLogJ7dwpvMe5cAWVRDRVqJEwo9e5hFJQjlt6UX8,189
43
- honeybee_core-1.64.3.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
44
- honeybee_core-1.64.3.dist-info/METADATA,sha256=RDOQENQugPT9babE1OeoB7zH--L49aqf04L2pJJE1Lw,3729
45
- honeybee_core-1.64.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
46
- honeybee_core-1.64.3.dist-info/entry_points.txt,sha256=r3YqOm40goBroH3ccUhpwQjvTwu10JWLd0HIRHI1J8E,47
47
- honeybee_core-1.64.3.dist-info/top_level.txt,sha256=8ve7puCRLUA9XDEGc1Mcs-UX9sFjpPV8MeTaIMwQ_Tg,9
48
- honeybee_core-1.64.3.dist-info/RECORD,,
43
+ honeybee_core-1.64.4.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
44
+ honeybee_core-1.64.4.dist-info/METADATA,sha256=W-lR05fP3-rlQO0jFyyRwlSKmek45NZ4miYuE6M9Lh8,3729
45
+ honeybee_core-1.64.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
46
+ honeybee_core-1.64.4.dist-info/entry_points.txt,sha256=r3YqOm40goBroH3ccUhpwQjvTwu10JWLd0HIRHI1J8E,47
47
+ honeybee_core-1.64.4.dist-info/top_level.txt,sha256=8ve7puCRLUA9XDEGc1Mcs-UX9sFjpPV8MeTaIMwQ_Tg,9
48
+ honeybee_core-1.64.4.dist-info/RECORD,,