topologicpy 0.8.41__py3-none-any.whl → 0.8.42__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.
topologicpy/Cell.py CHANGED
@@ -2762,7 +2762,7 @@ class Cell():
2762
2762
  return prism
2763
2763
 
2764
2764
  @staticmethod
2765
- def RemoveCollinearEdges(cell, angTolerance: float = 0.1, tolerance: float = 0.0001):
2765
+ def RemoveCollinearEdges(cell, angTolerance: float = 0.1, tolerance: float = 0.0001, silent: bool = False):
2766
2766
  """
2767
2767
  Removes any collinear edges in the input cell.
2768
2768
 
@@ -2774,6 +2774,8 @@ class Cell():
2774
2774
  The desired angular tolerance. The default is 0.1.
2775
2775
  tolerance : float , optional
2776
2776
  The desired tolerance. The default is 0.0001.
2777
+ silent : bool , optional
2778
+ If set to True, error and warning messages are suppressed. The default is False.
2777
2779
 
2778
2780
  Returns
2779
2781
  -------
@@ -2786,15 +2788,16 @@ class Cell():
2786
2788
  import inspect
2787
2789
 
2788
2790
  if not Topology.IsInstance(cell, "Cell"):
2789
- print("Cell.RemoveCollinearEdges - Error: The input cell parameter is not a valid cell. Returning None.")
2790
- curframe = inspect.currentframe()
2791
- calframe = inspect.getouterframes(curframe, 2)
2792
- print('caller name:', calframe[1][3])
2791
+ if not silent:
2792
+ print("Cell.RemoveCollinearEdges - Error: The input cell parameter is not a valid cell. Returning None.")
2793
+ curframe = inspect.currentframe()
2794
+ calframe = inspect.getouterframes(curframe, 2)
2795
+ print('caller name:', calframe[1][3])
2793
2796
  return None
2794
2797
  faces = Cell.Faces(cell)
2795
2798
  clean_faces = []
2796
2799
  for face in faces:
2797
- clean_faces.append(Face.RemoveCollinearEdges(face, angTolerance=angTolerance, tolerance=tolerance))
2800
+ clean_faces.append(Face.RemoveCollinearEdges(face, angTolerance=angTolerance, tolerance=tolerance, silent=silent))
2798
2801
  return Cell.ByFaces(clean_faces, tolerance=tolerance)
2799
2802
 
2800
2803
  @staticmethod
@@ -104,7 +104,7 @@ class CellComplex():
104
104
  tolerance : float , optional
105
105
  The desired tolerance. The default is 0.0001.
106
106
  silent : bool , optional
107
- If set to True, error and warning messages are suppressed. The default is False.
107
+ If set to True, error and warning messages are suppressed. The default is False.
108
108
 
109
109
  Returns
110
110
  -------
@@ -990,7 +990,7 @@ class CellComplex():
990
990
  return None
991
991
 
992
992
  @staticmethod
993
- def RemoveCollinearEdges(cellComplex, angTolerance: float = 0.1, tolerance: float = 0.0001):
993
+ def RemoveCollinearEdges(cellComplex, angTolerance: float = 0.1, tolerance: float = 0.0001, silent: bool = True):
994
994
  """
995
995
  Removes any collinear edges in the input cellComplex.
996
996
 
@@ -1002,6 +1002,8 @@ class CellComplex():
1002
1002
  The desired angular tolerance. The default is 0.1.
1003
1003
  tolerance : float , optional
1004
1004
  The desired tolerance. The default is 0.0001.
1005
+ silent : bool , optional
1006
+ If set to True, error and warning messages are suppressed. The default is False.
1005
1007
 
1006
1008
  Returns
1007
1009
  -------
@@ -1023,7 +1025,7 @@ class CellComplex():
1023
1025
  cells = CellComplex.Cells(cellComplex)
1024
1026
  clean_cells = []
1025
1027
  for cell in cells:
1026
- clean_cells.append(Cell.RemoveCollinearEdges(cell, angTolerance=angTolerance, tolerance=tolerance))
1028
+ clean_cells.append(Cell.RemoveCollinearEdges(cell, angTolerance=angTolerance, tolerance=tolerance, silent=silent))
1027
1029
  return CellComplex.ByCells(clean_cells, tolerance=tolerance)
1028
1030
 
1029
1031
  @staticmethod
@@ -1098,6 +1100,8 @@ class CellComplex():
1098
1100
  The desired length of the mantissa. The default is 6.
1099
1101
  tolerance : float , optional
1100
1102
  The desired tolerance. The default is 0.0001.
1103
+ silent : bool , optional
1104
+ If set to True, error and warning messages are suppressed. The default is False.
1101
1105
 
1102
1106
  Returns
1103
1107
  -------
topologicpy/Edge.py CHANGED
@@ -256,31 +256,63 @@ class Edge():
256
256
  @staticmethod
257
257
  def ByOffset2D(edge, offset: float = 1.0, tolerance: float = 0.0001):
258
258
  """
259
- Creates and edge offset from the input edge. This method is intended for edges that are in the XY plane.
260
-
261
- Parameters
262
- ----------
263
- edge : topologic_core.Edge
264
- The input edge.
265
- offset : float , optional
266
- The desired offset. The default is 1.
267
- tolerance : float , optional
268
- The desired tolerance. The default is 0.0001.
269
-
270
- Returns
271
- -------
272
- topologic_core.Edge
273
- An edge offset from the input edge.
274
-
259
+ Creates an edge offset from the input edge in the XY plane.
275
260
  """
276
261
  from topologicpy.Topology import Topology
277
- from topologicpy.Vector import Vector
262
+ from topologicpy.Vertex import Vertex
263
+ from topologicpy.Edge import Edge
278
264
 
279
- n = Edge.Normal(edge)
280
- n = Vector.Normalize(n)
281
- n = Vector.Multiply(n, offset, tolerance=tolerance)
282
- edge = Topology.Translate(edge, n[0], n[1], n[2])
283
- return edge
265
+ sv = Edge.StartVertex(edge)
266
+ ev = Edge.EndVertex(edge)
267
+
268
+ x1, y1, _ = Vertex.Coordinates(sv)
269
+ x2, y2, _ = Vertex.Coordinates(ev)
270
+
271
+ dx = x2 - x1
272
+ dy = y2 - y1
273
+ length = (dx**2 + dy**2)**0.5
274
+ if length < tolerance:
275
+ return None
276
+
277
+ # Perpendicular vector to the left
278
+ nx = -dy / length
279
+ ny = dx / length
280
+
281
+ ox = nx * offset
282
+ oy = ny * offset
283
+
284
+ new_sv = Vertex.ByCoordinates(x1 + ox, y1 + oy, 0)
285
+ new_ev = Vertex.ByCoordinates(x2 + ox, y2 + oy, 0)
286
+
287
+ return Edge.ByVertices(new_sv, new_ev)
288
+ # @staticmethod
289
+ # def ByOffset2D(edge, offset: float = 1.0, tolerance: float = 0.0001):
290
+ # """
291
+ # Creates and edge offset from the input edge. This method is intended for edges that are in the XY plane.
292
+
293
+ # Parameters
294
+ # ----------
295
+ # edge : topologic_core.Edge
296
+ # The input edge.
297
+ # offset : float , optional
298
+ # The desired offset. The default is 1.
299
+ # tolerance : float , optional
300
+ # The desired tolerance. The default is 0.0001.
301
+
302
+ # Returns
303
+ # -------
304
+ # topologic_core.Edge
305
+ # An edge offset from the input edge.
306
+
307
+ # """
308
+ # from topologicpy.Topology import Topology
309
+ # from topologicpy.Vector import Vector
310
+
311
+ # n = Edge.Normal(edge)
312
+ # n = Vector.Normalize(n)
313
+ # n = Vector.Multiply(n, offset, tolerance=tolerance)
314
+ # edge = Topology.Translate(edge, n[0], n[1], n[2])
315
+ # return edge
284
316
 
285
317
  @staticmethod
286
318
  def ByStartVertexEndVertex(vertexA, vertexB, tolerance: float = 0.0001, silent=False):
topologicpy/Face.py CHANGED
@@ -827,7 +827,7 @@ class Face():
827
827
  return Face.ByVertices(vertices, tolerance=tolerance)
828
828
 
829
829
  @staticmethod
830
- def ByWire(wire, tolerance: float = 0.0001, silent=False):
830
+ def ByWire(wire, tolerance: float = 0.0001, silent: bool = False):
831
831
  """
832
832
  Creates a face from the input closed wire.
833
833
 
@@ -942,14 +942,21 @@ class Face():
942
942
  """
943
943
  from topologicpy.Wire import Wire
944
944
  from topologicpy.Topology import Topology
945
+ import inspect
945
946
 
946
947
  if not Topology.IsInstance(externalBoundary, "Wire"):
947
948
  if not silent:
948
949
  print("Face.ByWires - Error: The input externalBoundary parameter is not a valid topologic wire. Returning None.")
950
+ curframe = inspect.currentframe()
951
+ calframe = inspect.getouterframes(curframe, 2)
952
+ print('caller name:', calframe[1][3])
949
953
  return None
950
954
  if not Wire.IsClosed(externalBoundary):
951
955
  if not silent:
952
956
  print("Face.ByWires - Error: The input externalBoundary parameter is not a closed topologic wire. Returning None.")
957
+ curframe = inspect.currentframe()
958
+ calframe = inspect.getouterframes(curframe, 2)
959
+ print('caller name:', calframe[1][3])
953
960
  return None
954
961
  ibList = [x for x in internalBoundaries if Topology.IsInstance(x, "Wire") and Wire.IsClosed(x)]
955
962
  face = None
@@ -958,6 +965,9 @@ class Face():
958
965
  except:
959
966
  if not silent:
960
967
  print("Face.ByWires - Error: The operation failed. Returning None.")
968
+ curframe = inspect.currentframe()
969
+ calframe = inspect.getouterframes(curframe, 2)
970
+ print('caller name:', calframe[1][3])
961
971
  face = None
962
972
  return face
963
973
 
@@ -3404,7 +3414,7 @@ class Face():
3404
3414
  return None
3405
3415
  eb = Wire.RemoveCollinearEdges(Face.Wire(face), angTolerance=angTolerance, tolerance=tolerance, silent=silent)
3406
3416
  ib = [Wire.RemoveCollinearEdges(w, angTolerance=angTolerance, tolerance=tolerance, silent=silent) for w in Face.InternalBoundaries(face)]
3407
- return Face.ByWires(eb, ib)
3417
+ return Face.ByWires(eb, ib, silent=silent)
3408
3418
 
3409
3419
  @staticmethod
3410
3420
  def RHS(origin= None, width: float = 1.0, length: float = 1.0, thickness: float = 0.25, outerFillet: float = 0.0, innerFillet: float = 0.0, sides: int = 16, direction: list = [0, 0, 1], placement: str = "center", tolerance: float = 0.0001, silent: bool = False):
@@ -3602,35 +3612,51 @@ class Face():
3602
3612
  return Face.RHS(origin = origin, width = size, length = size, thickness = thickness, outerFillet = outerFillet, innerFillet = innerFillet, sides = sides, direction = direction, placement = placement, tolerance = tolerance, silent = silent)
3603
3613
 
3604
3614
  @staticmethod
3605
- def Simplify(face, tolerance=0.0001):
3615
+ def Simplify(face, method='douglas-peucker', tolerance=0.0001, silent=False):
3606
3616
  """
3607
- Simplifies the input face edges based on the Douglas Peucker algorthim. See https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm
3608
- Part of this code was contributed by gaoxipeng. See https://github.com/wassimj/topologicpy/issues/35
3617
+ Simplifies the input wire edges based on the selected algorithm: Douglas-Peucker or Visvalingam–Whyatt.
3609
3618
 
3610
3619
  Parameters
3611
3620
  ----------
3612
3621
  face : topologic_core.Face
3613
3622
  The input face.
3623
+ method : str, optional
3624
+ The simplification method to use: 'douglas-peucker' or 'visvalingam-whyatt' or 'reumann-witkam'.
3625
+ The default is 'douglas-peucker'.
3614
3626
  tolerance : float , optional
3615
- The desired tolerance. The default is 0.0001. Edges shorter than this length will be removed.
3616
-
3627
+ The desired tolerance.
3628
+ If using the douglas-peucker method, edge lengths shorter than this amount will be removed.
3629
+ If using the visvalingam-whyatt method, triangulare areas less than is amount will be removed.
3630
+ If using the Reumann-Witkam method, the tolerance specifies the maximum perpendicular distance allowed
3631
+ between any point and the current line segment; points falling within this distance are discarded.
3632
+ The default is 0.0001.
3633
+ silent : bool , optional
3634
+ If set to True, error and warning messages are suppressed. The default is False.
3635
+
3617
3636
  Returns
3618
3637
  -------
3619
3638
  topologic_core.Face
3620
3639
  The simplified face.
3640
+
3621
3641
  """
3622
3642
  from topologicpy.Wire import Wire
3623
3643
  from topologicpy.Topology import Topology
3624
3644
 
3625
3645
  if not Topology.IsInstance(face, "Face"):
3626
- print("Face.Simplify - Error: The input face parameter is not a valid face. Returning None.")
3646
+ if not silent:
3647
+ print("Face.Simplify - Error: The input face parameter is not a valid face. Returning None.")
3627
3648
  return None
3628
3649
 
3629
3650
  eb = Face.ExternalBoundary(face)
3630
- eb = Wire.Simplify(eb, tolerance=tolerance)
3651
+ eb = Wire.Simplify(eb, method=method, tolerance=tolerance, silent=silent)
3631
3652
  ibList = Face.InternalBoundaries(face)
3632
- ibList = [Wire.Simplify(ib) for ib in ibList]
3633
- return Face.ByWires(eb, ibList)
3653
+ ibList = [Wire.Simplify(ib, method=method, tolerance=tolerance, silent=silent) for ib in ibList]
3654
+ return_face = Face.ByWires(eb, ibList, tolerance=tolerance, silent=silent)
3655
+ if not Topology.IsInstance(return_face, "Face"):
3656
+ if not silent:
3657
+ print("Face.Simplify - Error: Could not simplify the face. Returning the original input face.")
3658
+ return face
3659
+ return return_face
3634
3660
 
3635
3661
  @staticmethod
3636
3662
  def Skeleton(face, boundary: bool = True, tolerance: float = 0.001):
topologicpy/Plotly.py CHANGED
@@ -743,15 +743,16 @@ class Plotly:
743
743
  labels = []
744
744
  for j, elements_cluster in enumerate(elements_clusters):
745
745
  d_color = color
746
+ d_arrowSize = arrowSize
747
+ d_dash = dash
746
748
  d = dict_clusters[j][0] # All dicitonaries have same values in dictionaries, so take first one.
747
749
  if d:
748
750
  if not colorKey == None:
749
- d_color = Dictionary.ValueAtKey(d, key=colorKey) or color
750
- d_color = Color.AnyToHex(d_color)
751
+ d_color = Color.AnyToHex(Dictionary.ValueAtKey(d, key=colorKey, default=color))
751
752
  if not dashKey == None:
752
- d_dash = Dictionary.ValueAtKey(d, key=dashKey) or dash
753
+ d_dash = Dictionary.ValueAtKey(d, key=dashKey, default=dash)
753
754
  if not arrowSizeKey == None:
754
- d_arrowSize = Dictionary.ValueAtKey(d, key=arrowSizeKey) or arrowSize
755
+ d_arrowSize = Dictionary.ValueAtKey(d, key=arrowSizeKey, default=arrowSize)
755
756
  if not labelKey == None:
756
757
  labels.append(str(Dictionary.ValueAtKey(d, labelKey, "")))
757
758
  if not widthKey == None:
@@ -787,7 +788,7 @@ class Plotly:
787
788
  marker_width = width[0]*0.25
788
789
  else:
789
790
  marker_width = width*0.25
790
- if dash:
791
+ if d_dash:
791
792
  dot = "dot"
792
793
  else:
793
794
  dot = "solid"
topologicpy/Topology.py CHANGED
@@ -6992,16 +6992,16 @@ class Topology():
6992
6992
  return_topology = Wire.RemoveCollinearEdges(topology, angTolerance=angTolerance, tolerance=tolerance, silent=silent)
6993
6993
  return return_topology
6994
6994
  elif Topology.IsInstance(topology, "Face"):
6995
- return_topology = Face.RemoveCollinearEdges(topology, angTolerance=angTolerance, tolerance=tolerance)
6995
+ return_topology = Face.RemoveCollinearEdges(topology, angTolerance=angTolerance, tolerance=tolerance, silent=silent)
6996
6996
  return return_topology
6997
6997
  elif Topology.IsInstance(topology, "Shell"):
6998
- return_topology = Shell.RemoveCollinearEdges(topology, angTolerance=angTolerance, tolerance=tolerance)
6998
+ return_topology = Shell.RemoveCollinearEdges(topology, angTolerance=angTolerance, tolerance=tolerance, silent=silent)
6999
6999
  return return_topology
7000
7000
  elif Topology.IsInstance(topology, "Cell"):
7001
- return_topology = Cell.RemoveCollinearEdges(topology, angTolerance=angTolerance, tolerance=tolerance)
7001
+ return_topology = Cell.RemoveCollinearEdges(topology, angTolerance=angTolerance, tolerance=tolerance, silent=silent)
7002
7002
  return return_topology
7003
7003
  elif Topology.IsInstance(topology, "CellComplex"):
7004
- return_topology = CellComplex.RemoveCollinearEdges(topology, angTolerance=angTolerance, tolerance=tolerance)
7004
+ return_topology = CellComplex.RemoveCollinearEdges(topology, angTolerance=angTolerance, tolerance=tolerance, silent=silent)
7005
7005
  return return_topology
7006
7006
  elif Topology.IsInstance(topology, "Cluster"):
7007
7007
  topologies = []
@@ -7009,7 +7009,7 @@ class Topology():
7009
7009
  topologies += Cluster.FreeEdges(topology)
7010
7010
  faces = Topology.Faces(topology)
7011
7011
  for face in faces:
7012
- topologies.append(Face.RemoveCollinearEdges(face, angTolerance=angTolerance, tolerance=tolerance))
7012
+ topologies.append(Face.RemoveCollinearEdges(face, angTolerance=angTolerance, tolerance=tolerance, silent=silent))
7013
7013
  return_topology = Topology.SelfMerge(Cluster.ByTopologies(topologies), tolerance=tolerance)
7014
7014
  return return_topology
7015
7015
 
topologicpy/Wire.py CHANGED
@@ -465,15 +465,13 @@ class Wire():
465
465
  from topologicpy.Cluster import Cluster
466
466
  from topologicpy.Topology import Topology
467
467
  from topologicpy.Vector import Vector
468
- from topologicpy.Helper import Helper
468
+ from topologicpy.Helper import Helper
469
469
 
470
470
  if not Topology.IsInstance(wire, "Wire"):
471
471
  if not silent:
472
472
  print("Wire.ByOffset - Error: The input wire parameter is not a valid wire. Returning None.")
473
473
  return None
474
474
 
475
- #temp_face = Face.ByWire(wire)
476
- #original_area = Face.Area(temp_face)
477
475
  if reverse == True:
478
476
  fac = -1
479
477
  else:
@@ -481,13 +479,10 @@ class Wire():
481
479
  origin = Topology.Centroid(wire)
482
480
  temp_vertices = [Topology.Vertices(wire)[0], Topology.Vertices(wire)[1], Topology.Centroid(wire)]
483
481
  temp_face = Face.ByWire(Wire.ByVertices(temp_vertices, close=True, tolerance=tolerance), silent=silent)
484
- temp_normal = Face.Normal(temp_face)
485
- flat_wire = Topology.Flatten(wire, direction=temp_normal, origin=origin)
486
482
  normal = Face.Normal(temp_face)
487
483
  flat_wire = Topology.Flatten(wire, direction=normal, origin=origin)
488
484
  original_edges = Topology.Edges(wire)
489
485
  edges = Topology.Edges(flat_wire)
490
- original_edges = Topology.Edges(wire)
491
486
  offsets = []
492
487
  offset_edges = []
493
488
  final_vertices = []
@@ -495,9 +490,7 @@ class Wire():
495
490
  edge_dictionaries = []
496
491
  for i, edge in enumerate(edges):
497
492
  d = Topology.Dictionary(original_edges[i])
498
- d_offset = Dictionary.ValueAtKey(d, offsetKey)
499
- if d_offset == None:
500
- d_offset = offset
493
+ d_offset = Dictionary.ValueAtKey(d, key=offsetKey, defaultValue=offset)
501
494
  d_offset = d_offset*fac
502
495
  offsets.append(d_offset)
503
496
  offset_edge = Edge.ByOffset2D(edge, d_offset)
@@ -595,23 +588,7 @@ class Wire():
595
588
  v1 = Topology.SetDictionary(v1, Topology.Dictionary(v_a), silent=True)
596
589
  if bisectors == True:
597
590
  bisectors_list.append(Edge.ByVertices(v_a, v1))
598
-
599
-
600
- # wire_edges = []
601
- # for i in range(len(final_vertices)-1):
602
- # v1 = final_vertices[i]
603
- # v2 = final_vertices[i+1]
604
- # w_e = Edge.ByVertices(v1,v2)
605
- # #w_e = Edge.SetLength(w_e, Edge.Length(w_e)+(2*epsilon), bothSides = True)
606
- # wire_edges.append(w_e)
607
- # if Wire.IsClosed(wire):
608
- # v1 = final_vertices[-1]
609
- # v2 = final_vertices[0]
610
- # #w_e = Edge.SetLength(w_e, Edge.Length(w_e)+(2*epsilon), bothSides = True)
611
- # wire_edges.append(w_e)
612
-
613
591
  return_wire = Wire.ByVertices(final_vertices, close=Wire.IsClosed(wire), tolerance=tolerance, silent=silent)
614
- #wire_edges = Topology.Edges(wire_edges)
615
592
  wire_edges = [Edge.SetLength(w_e, Edge.Length(w_e)+(2*epsilon), bothSides=True) for w_e in Topology.Edges(return_wire)]
616
593
  return_wire_edges = Topology.Edges(return_wire)
617
594
  if transferDictionaries == True:
@@ -651,7 +628,6 @@ class Wire():
651
628
  print("Wire.ByOffset - Warning: The resulting wire is non-manifold, please check your offsets.")
652
629
  print("Wire.ByOffset - Warning: Pursuing a workaround, but it might take longer to complete.")
653
630
 
654
- #cycles = Wire.Cycles(return_wire, maxVertices = len(final_vertices))
655
631
  temp_wire = Topology.SelfMerge(Cluster.ByTopologies(wire_edges))
656
632
  cycles = Wire.Cycles(temp_wire, maxVertices = len(final_vertices))
657
633
  if len(cycles) > 0:
@@ -679,7 +655,6 @@ class Wire():
679
655
  return_cycle = Topology.TransferDictionariesBySelectors(return_cycle, Topology.Vertices(return_wire), tranVertices=True, tolerance=tolerance, numWorkers=numWorkers)
680
656
  return_cycle = Topology.TransferDictionariesBySelectors(return_cycle, sel_edges, tranEdges=True, tolerance=tolerance, numWorkers=numWorkers)
681
657
  return_wire = return_cycle
682
-
683
658
  return_wire = Topology.Unflatten(return_wire, direction=normal, origin=origin)
684
659
  if transferDictionaries == True:
685
660
  return_wire = Topology.SetDictionary(return_wire, Topology.Dictionary(wire), silent=True)
@@ -3728,7 +3703,7 @@ class Wire():
3728
3703
  return None
3729
3704
 
3730
3705
  new_wire = cleanup(wire)
3731
- wires = Wire.Split(new_wire) if not Wire.IsManifold(new_wire) else [new_wire]
3706
+ wires = Wire.Split(new_wire) if not Wire.IsManifold(new_wire, silent=silent) else [new_wire]
3732
3707
 
3733
3708
  processed_wires = [remove_collinear_vertices(w) for w in wires]
3734
3709
 
topologicpy/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = '0.8.41'
1
+ __version__ = '0.8.42'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: topologicpy
3
- Version: 0.8.41
3
+ Version: 0.8.42
4
4
  Summary: An AI-Powered Spatial Modelling and Analysis Software Library for Architecture, Engineering, and Construction.
5
5
  Author-email: Wassim Jabi <wassim.jabi@gmail.com>
6
6
  License: AGPL v3 License
@@ -2,37 +2,37 @@ topologicpy/ANN.py,sha256=DrNAhNHp-jSvsPc1fb7KVPU46cYmejAvghhknOM430Y,47932
2
2
  topologicpy/Aperture.py,sha256=wNn5miB_IrGCBYuQ18HXQYRva20dUC3id4AJCulL7to,2723
3
3
  topologicpy/BVH.py,sha256=Iwp_8VDG8ETE4330k7ifWxdI4jmWmv9h8e8IIIZZFGY,13043
4
4
  topologicpy/CSG.py,sha256=uDkOSmc8m1V_k7T3UCerODhOSyYNO4FRDzoOqt0kEt8,15590
5
- topologicpy/Cell.py,sha256=3et98bv27m1-7OqFCeD4cLMBgC_BAsSGyxHi_4PgJ4Y,176072
6
- topologicpy/CellComplex.py,sha256=NP6yptbkGXYmlfBv9fRimOnNle0mkjV8Yo_ug5NKpKE,60877
5
+ topologicpy/Cell.py,sha256=M4Xv4gabSgtKYYA-Wh0lgYEbRNRVF9zr4DYejOXJc-4,176278
6
+ topologicpy/CellComplex.py,sha256=c2B3mF1c3iwOfT-V0JWt9qNcFdd6DPR0aBOE2UnZTn4,61165
7
7
  topologicpy/Cluster.py,sha256=wvfMAx6aPrSAt5nQ4--KnqD4EK9MGjch6Dg985WF7JQ,58748
8
8
  topologicpy/Color.py,sha256=FcR0-__giyGQqvgiOrG8GkA65arHbiS33Si-QbUADPI,23362
9
9
  topologicpy/Context.py,sha256=G3CwMvN8Jw2rnQRwB-n4MaQq_wLS0vPimbXKwsdMJ80,3055
10
10
  topologicpy/DGL.py,sha256=HQXy9iDnrvWGDxaBfe5pRbweQ2zLBvAf6UdjfhKkQYI,139041
11
11
  topologicpy/Dictionary.py,sha256=2Sxm8twR1W4ksZho0YXQB_EltK2qbZWK4UHskP3jvFQ,40846
12
- topologicpy/Edge.py,sha256=CPdQKaE7ft6zgh0vxekkfGRRUY_yEqkEJ14NvjSgJOA,73190
12
+ topologicpy/Edge.py,sha256=dLoAPuRKbjVg_dzloTgjRnQyv_05U9nfrtLO3tqyuys,74167
13
13
  topologicpy/EnergyModel.py,sha256=Pyb28gDDwhzlQIH0xqAygqS0P3SJxWyyV7OWS_AAfRs,53856
14
- topologicpy/Face.py,sha256=BT_5ymb7-s-Wb1tuaBtkopJpeNg-RbooTUk_-KInQ6c,201618
14
+ topologicpy/Face.py,sha256=pN1fssyDLYWf1vU0NOBRx69DaUL958wRSxT-7VBCuCg,203184
15
15
  topologicpy/Graph.py,sha256=GykBbB8KKcy2oPV2Dsnz_vkyWGgczxLi0puVx5NJUYU,648088
16
16
  topologicpy/Grid.py,sha256=EbI2NcYhQDpD5mItd7A1Lpr8Puuf87vZPWuoh7_gChQ,18483
17
17
  topologicpy/Helper.py,sha256=qEsE4yaboEGW94q9lFCff0I_JwwTTQnDAFXw006yHaQ,31203
18
18
  topologicpy/Honeybee.py,sha256=yctkwfdupKnp7bAOjP1Z4YaYpRrWoMEb4gz9Z5zaWwE,21751
19
19
  topologicpy/Matrix.py,sha256=LqVckk2qTwKwEo79eyNsOrHVSHdO82JCREcfy6WIk4I,22716
20
20
  topologicpy/Neo4j.py,sha256=ELKmON7R16j1kQD8xRHDGGCvzjIM2HGHNekdaXDUw6w,22371
21
- topologicpy/Plotly.py,sha256=3jTy-bFNS_zFsfqpY_WdhHlt9kdexDq_Jvp5jxR16tQ,123710
21
+ topologicpy/Plotly.py,sha256=SqoQOFqchfDY52_mTGyBOqE_OPEfBI48YI3OyuJ7JQw,123758
22
22
  topologicpy/Polyskel.py,sha256=oVfM4lqSMPTjnkHfsRU9VI8Blt6Vf0LVPkD9ebz7Wmw,27082
23
23
  topologicpy/PyG.py,sha256=zvV6jtnol_aFiN6JRoMpYwBVfOU2aFs9gdWSdEo6mtU,109757
24
24
  topologicpy/ShapeGrammar.py,sha256=UVb8VPwVKd6V3zDTNzpBecQPgYo1EjSsS10XJ8k5YcI,23364
25
25
  topologicpy/Shell.py,sha256=fx0WTndC8blkvWe38nKsJsI_AmklOA0qsjU0gbZp4b4,90501
26
26
  topologicpy/Speckle.py,sha256=-eiTqJugd7pHiHpD3pDUcDO6CGhVyPV14HFRzaqEoaw,18187
27
27
  topologicpy/Sun.py,sha256=_VBBAUIDhvpkp72JBZlv7k9qx9jYubm3yM56UZ1Nc6c,36837
28
- topologicpy/Topology.py,sha256=hGjePUb2-1MmyMva9nNtPiWr4CAWMa__BGX17mIOHfA,467519
28
+ topologicpy/Topology.py,sha256=FnDunqk4uq0iAqtOiQtjNArETXflx6cRBHMYv7NJqC8,467594
29
29
  topologicpy/Vector.py,sha256=X12eqskn28bdB7sLY1EZhq3noPYzPbNEgHPb4a959ss,42302
30
30
  topologicpy/Vertex.py,sha256=RlGQnxQSb_kAus3tJgXd-v-Ptubtt09PQPA9IMwfXmI,84835
31
- topologicpy/Wire.py,sha256=vE6IoObVucOZVTFMPiHuNN4DDezRHHyFbwhF5WRBm3s,231547
31
+ topologicpy/Wire.py,sha256=sJE8qwqYOomvN3snMWmj2P2-Sq25ul_OQ95YFz6DFUw,230553
32
32
  topologicpy/__init__.py,sha256=RMftibjgAnHB1vdL-muo71RwMS4972JCxHuRHOlU428,928
33
- topologicpy/version.py,sha256=tObOvnnCfxEdJFf4I6CjFR-B5fIFs3s0EygfFnJZgQM,23
34
- topologicpy-0.8.41.dist-info/licenses/LICENSE,sha256=FK0vJ73LuE8PYJAn7LutsReWR47-Ooovw2dnRe5yV6Q,681
35
- topologicpy-0.8.41.dist-info/METADATA,sha256=Fqkthwxq-nQkwkhyhz3ZvFA9C4tU6vPVwo2i3Q9QVmU,10535
36
- topologicpy-0.8.41.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
37
- topologicpy-0.8.41.dist-info/top_level.txt,sha256=J30bDzW92Ob7hw3zA8V34Jlp-vvsfIkGzkr8sqvb4Uw,12
38
- topologicpy-0.8.41.dist-info/RECORD,,
33
+ topologicpy/version.py,sha256=zx8I7AqRXGv-YmSUcQeFeKLCO2nWXVogDC-GQVEnTsI,23
34
+ topologicpy-0.8.42.dist-info/licenses/LICENSE,sha256=FK0vJ73LuE8PYJAn7LutsReWR47-Ooovw2dnRe5yV6Q,681
35
+ topologicpy-0.8.42.dist-info/METADATA,sha256=YEn71WRNeRaM0zD1L8Uh4HSmaxe_JJPkC5lBpaawXcc,10535
36
+ topologicpy-0.8.42.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
37
+ topologicpy-0.8.42.dist-info/top_level.txt,sha256=J30bDzW92Ob7hw3zA8V34Jlp-vvsfIkGzkr8sqvb4Uw,12
38
+ topologicpy-0.8.42.dist-info/RECORD,,