topologicpy 0.7.51__py3-none-any.whl → 0.7.54__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/Face.py CHANGED
@@ -276,7 +276,7 @@ class Face():
276
276
  return face
277
277
 
278
278
  @staticmethod
279
- def ByOffset(face, offset: float = 1.0, offsetKey: str = "offset", stepOffsetA: float = 0, stepOffsetB: float = 0, stepOffsetKeyA: str = "stepOffsetA", stepOffsetKeyB: str = "stepOffsetB", reverse: bool = False, bisectors: bool = False, transferDictionaries: bool = False, tolerance: float = 0.0001, silent: bool = False):
279
+ def ByOffset(face, offset: float = 1.0, offsetKey: str = "offset", stepOffsetA: float = 0, stepOffsetB: float = 0, stepOffsetKeyA: str = "stepOffsetA", stepOffsetKeyB: str = "stepOffsetB", reverse: bool = False, bisectors: bool = False, transferDictionaries: bool = False, epsilon: float = 0.01, tolerance: float = 0.0001, silent: bool = False, numWorkers: int = None):
280
280
  """
281
281
  Creates an offset face from the input face. A positive offset value results in an offset to the interior of an anti-clockwise face.
282
282
 
@@ -302,10 +302,15 @@ class Face():
302
302
  If set to True, the direction of offsets is reversed. Otherwise, it is not. The default is False.
303
303
  transferDictionaries : bool , optional
304
304
  If set to True, the dictionaries of the original wire, its edges, and its vertices are transfered to the new wire. Otherwise, they are not. The default is False.
305
+ epsilon : float , optional
306
+ The desired epsilon (another form of tolerance for shortest edge to remove). The default is 0.01. (This is set to a larger number as it was found to work better)
305
307
  tolerance : float , optional
306
308
  The desired tolerance. The default is 0.0001.
307
309
  silent : bool , optional
308
310
  If set to True, no error and warning messages are printed. Otherwise, they are. The default is False.
311
+ numWorkers : int , optional
312
+ Number of workers run in parallel to process. If you set it to 1, no parallel processing will take place.
313
+ The default is None which causes the algorithm to use twice the number of cpu cores in the host computer.
309
314
 
310
315
  Returns
311
316
  -------
@@ -338,8 +343,10 @@ class Face():
338
343
  reverse=reverse,
339
344
  bisectors=bisectors,
340
345
  transferDictionaries=transferDictionaries,
346
+ epsilon=epsilon,
341
347
  tolerance=tolerance,
342
- silent=silent)
348
+ silent=silent,
349
+ numWorkers=numWorkers)
343
350
  offset_internal_boundaries = []
344
351
  for internal_boundary in internal_boundaries:
345
352
  offset_internal_boundary = Wire.ByOffset(internal_boundary,
@@ -352,8 +359,10 @@ class Face():
352
359
  reverse=reverse,
353
360
  bisectors=bisectors,
354
361
  transferDictionaries=transferDictionaries,
362
+ epsilon=epsilon,
355
363
  tolerance=tolerance,
356
- silent=silent)
364
+ silent=silent,
365
+ numWorkers=numWorkers)
357
366
  offset_internal_boundaries.append(offset_internal_boundary)
358
367
 
359
368
  if bisectors == True:
@@ -367,8 +376,10 @@ class Face():
367
376
  reverse=reverse,
368
377
  bisectors=False,
369
378
  transferDictionaries=transferDictionaries,
379
+ epsilon=epsilon,
370
380
  tolerance=tolerance,
371
- silent=silent)
381
+ silent=silent,
382
+ numWorkers=numWorkers)
372
383
  all_edges = Topology.Edges(offset_external_boundary)+[Topology.Edges(ib) for ib in offset_internal_boundaries]
373
384
  all_edges += Topology.Edges(face)
374
385
  all_edges = Helper.Flatten(all_edges)
topologicpy/Graph.py CHANGED
@@ -2177,6 +2177,12 @@ class Graph:
2177
2177
  for ifc_rel in ifc_relationships:
2178
2178
  source = None
2179
2179
  destinations = []
2180
+ if ifc_rel.is_a("IfcRelConnectsPorts"):
2181
+ source = ifc_rel.RelatingPort
2182
+ destinations = ifc_rel.RelatedPorts
2183
+ if ifc_rel.is_a("IfcRelConnectsPortToElement"):
2184
+ source = ifc_rel.RelatingPort
2185
+ destinations = [ifc_rel.RelatedElement]
2180
2186
  if ifc_rel.is_a("IfcRelAggregates"):
2181
2187
  source = ifc_rel.RelatingObject
2182
2188
  destinations = ifc_rel.RelatedObjects
topologicpy/Plotly.py CHANGED
@@ -635,7 +635,7 @@ class Plotly:
635
635
  labels = []
636
636
  groupList = []
637
637
  label = ""
638
- group = ""
638
+ group = None
639
639
  if labelKey or groupKey:
640
640
  if groups:
641
641
  if len(groups) > 0:
@@ -655,7 +655,7 @@ class Plotly:
655
655
  y.append(v[1])
656
656
  z.append(v[2])
657
657
  label = ""
658
- group = ""
658
+ group = None
659
659
  if len(dictionaries) > 0:
660
660
  d = dictionaries[m]
661
661
  if d:
@@ -737,7 +737,7 @@ class Plotly:
737
737
  y+=[sv[1], ev[1], None] # y-coordinates of edge ends
738
738
  z+=[sv[2], ev[2], None] # z-coordinates of edge ends
739
739
  label = ""
740
- group = ""
740
+ group = None
741
741
  if len(dictionaries) > 0:
742
742
  d = dictionaries[m]
743
743
  if d:
topologicpy/PyG.py CHANGED
@@ -176,7 +176,12 @@ class CustomGraphDataset(Dataset):
176
176
  if self.graph_level:
177
177
  label_value = self.graph_df[self.graph_df['graph_id'] == graph_id]['label'].values[0]
178
178
 
179
- if isinstance(label_value, int):
179
+ if isinstance(label_value, np.int64):
180
+ label_value = int(label_value)
181
+ if isinstance(label_value, np.float64):
182
+ label_value = float(label_value)
183
+
184
+ if isinstance(label_value, int) or isinstance(label_value, np.int64):
180
185
  y = torch.tensor([label_value], dtype=torch.long)
181
186
  elif isinstance(label_value, float):
182
187
  y = torch.tensor([label_value], dtype=torch.float)
topologicpy/Topology.py CHANGED
@@ -2475,9 +2475,9 @@ class Topology():
2475
2475
 
2476
2476
  # If no color is defined, return a consistent random color based on the entity type
2477
2477
  if "wall" in is_a:
2478
- color = (0.4, 0.4, 0.4)
2478
+ color = (175, 175, 175)
2479
2479
  elif "slab" in is_a:
2480
- color = (0.6, 0.6, 0.6)
2480
+ color = (200, 200, 200)
2481
2481
  elif "space" in is_a:
2482
2482
  color = (250, 250, 250)
2483
2483
  else:
@@ -8402,6 +8402,21 @@ class Topology():
8402
8402
  tran_mat = Vector.TransformationMatrix(up, direction)
8403
8403
  unflat_topology = Topology.Transform(topology, tran_mat)
8404
8404
  unflat_topology = Topology.Translate(unflat_topology, Vertex.X(origin), Vertex.Y(origin), Vertex.Z(origin))
8405
+
8406
+ unflat_topology = Topology.SetDictionary(unflat_topology, Topology.Dictionary(topology), silent=True)
8407
+ unflat_vertices = Topology.Vertices(unflat_topology)
8408
+ vertices = Topology.Vertices(topology)
8409
+ unflat_edges = Topology.Edges(unflat_topology)
8410
+ edges = Topology.Edges(topology)
8411
+ faces = []
8412
+ unflat_faces = []
8413
+ if Topology.IsInstance(topology, "Face"):
8414
+ unflat_faces = Topology.Faces(unflat_topology)
8415
+ faces = Topology.Faces(topology)
8416
+ elements = vertices+edges+faces
8417
+ unflat_elements = unflat_vertices+unflat_edges+unflat_faces
8418
+ for i, f, in enumerate(unflat_elements):
8419
+ f = Topology.SetDictionary(f, Topology.Dictionary(elements[i]), silent=True)
8405
8420
  return unflat_topology
8406
8421
 
8407
8422
  @staticmethod
@@ -8763,8 +8778,8 @@ class Topology():
8763
8778
  tolerance : float , optional
8764
8779
  The desired tolerance. The default is 0.0001.
8765
8780
  numWorkers : int , optional
8766
- Number of workers run in parallel to process. The default is None which causes the algorithm to use twice the number of cpu cores in the host computer.
8767
-
8781
+ Number of workers run in parallel to process. If you set it to 1, no parallel processing will take place.
8782
+ The default is None which causes the algorithm to use twice the number of cpu cores in the host computer.
8768
8783
  Returns
8769
8784
  -------
8770
8785
  Topology
@@ -8775,6 +8790,43 @@ class Topology():
8775
8790
  from topologicpy.Dictionary import Dictionary
8776
8791
  from topologicpy.Cluster import Cluster
8777
8792
  from topologicpy.Plotly import Plotly
8793
+
8794
+
8795
+ def transfer_dictionaries_by_selectors(object, selectors, tranVertices=False, tranEdges=False, tranFaces=False, tranCells=False, tolerance=0.0001):
8796
+ if tranVertices == True:
8797
+ vertices = Topology.Vertices(object)
8798
+ for vertex in vertices:
8799
+ for selector in selectors:
8800
+ d = Vertex.Distance(selector, vertex)
8801
+ if d < tolerance:
8802
+ vertex = Topology.SetDictionary(vertex, Topology.Dictionary(selector), silent=True)
8803
+ break
8804
+ if tranEdges == True:
8805
+ edges = Topology.Edges(object)
8806
+ for selector in selectors:
8807
+ for edge in edges:
8808
+ d = Vertex.Distance(selector, edge)
8809
+ if d < tolerance:
8810
+
8811
+ edge = Topology.SetDictionary(edge, Topology.Dictionary(selector), silent=True)
8812
+ break
8813
+ if tranFaces == True:
8814
+ faces = Topology.Faces(object)
8815
+ for face in faces:
8816
+ for selector in selectors:
8817
+ d = Vertex.Distance(selector, face)
8818
+ if d < tolerance:
8819
+ face = Topology.SetDictionary(face, Topology.Dictionary(selector), silent=True)
8820
+ break
8821
+ if tranCells == True:
8822
+ cells = Topology.Cells(object)
8823
+ for cell in cells:
8824
+ for selector in selectors:
8825
+ if Vertex.IsInternal(selector, cell):
8826
+ cell = Topology.SetDictionary(cell, Topology.Dictionary(selector), silent=True)
8827
+ break
8828
+ return object
8829
+
8778
8830
  if not Topology.IsInstance(topology, "Topology"):
8779
8831
  print("Topology.TransferDictionariesBySelectors - Error: The input topology parameter is not a valid topology. Returning None.")
8780
8832
  return None
@@ -8788,6 +8840,9 @@ class Topology():
8788
8840
  if len(selectors_tmp) < 1:
8789
8841
  print("Topology.TransferDictionariesBySelectors - Error: The input selectors do not contain any valid topologies. Returning None.")
8790
8842
  return None
8843
+
8844
+ if numWorkers == 1:
8845
+ return transfer_dictionaries_by_selectors(topology, selectors, tranVertices=tranVertices, tranEdges=tranEdges, tranFaces=tranFaces, tranCells=tranCells, tolerance=tolerance)
8791
8846
  sinkEdges = []
8792
8847
  sinkFaces = []
8793
8848
  sinkCells = []
topologicpy/Wire.py CHANGED
@@ -310,7 +310,7 @@ class Wire():
310
310
  return Wire.ByEdges(edges, tolerance=tolerance)
311
311
 
312
312
  @staticmethod
313
- def ByOffset(wire, offset: float = 1.0, offsetKey: str = "offset", stepOffsetA: float = 0, stepOffsetB: float = 0, stepOffsetKeyA: str = "stepOffsetA", stepOffsetKeyB: str = "stepOffsetB", reverse: bool = False, bisectors: bool = False, transferDictionaries: bool = False, tolerance: float = 0.0001, silent: bool = False):
313
+ def ByOffset(wire, offset: float = 1.0, offsetKey: str = "offset", stepOffsetA: float = 0, stepOffsetB: float = 0, stepOffsetKeyA: str = "stepOffsetA", stepOffsetKeyB: str = "stepOffsetB", reverse: bool = False, bisectors: bool = False, transferDictionaries: bool = False, epsilon: float = 0.01, tolerance: float = 0.0001, silent: bool = False, numWorkers: int = None):
314
314
  """
315
315
  Creates an offset wire from the input wire. A positive offset value results in an offset to the interior of an anti-clockwise wire.
316
316
 
@@ -336,10 +336,16 @@ class Wire():
336
336
  If set to True, The bisectors (seams) edges will be included in the returned wire. The default is False.
337
337
  transferDictionaries : bool , optional
338
338
  If set to True, the dictionaries of the original wire, its edges, and its vertices are transfered to the new wire. Otherwise, they are not. The default is False.
339
+ epsilon : float , optional
340
+ The desired epsilon (another form of tolerance for shortest edge to remove). The default is 0.01. (This is set to a larger number as it was found to work better)
339
341
  tolerance : float , optional
340
342
  The desired tolerance. The default is 0.0001.
341
343
  silent : bool , optional
342
344
  If set to True, no error and warning messages are printed. Otherwise, they are. The default is False.
345
+ numWorkers : int , optional
346
+ Number of workers run in parallel to process. If you set it to 1, no parallel processing will take place.
347
+ The default is None which causes the algorithm to use twice the number of cpu cores in the host computer.
348
+
343
349
 
344
350
  Returns
345
351
  -------
@@ -355,12 +361,15 @@ class Wire():
355
361
  from topologicpy.Cluster import Cluster
356
362
  from topologicpy.Topology import Topology
357
363
  from topologicpy.Vector import Vector
364
+ from topologicpy.Helper import Helper
358
365
 
359
366
  if not Topology.IsInstance(wire, "Wire"):
360
367
  if not silent:
361
368
  print("Wire.ByOffset - Error: The input wire parameter is not a valid wire. Returning None.")
362
369
  return None
363
370
 
371
+ temp_face = Face.ByWire(wire)
372
+ original_area = Face.Area(temp_face)
364
373
  if reverse == True:
365
374
  fac = -1
366
375
  else:
@@ -372,6 +381,7 @@ class Wire():
372
381
  flat_wire = Topology.Flatten(wire, direction=temp_normal, origin=origin)
373
382
  normal = Face.Normal(temp_face)
374
383
  flat_wire = Topology.Flatten(wire, direction=normal, origin=origin)
384
+ original_edges = Topology.Edges(wire)
375
385
  edges = Topology.Edges(flat_wire)
376
386
  original_edges = Topology.Edges(wire)
377
387
  offsets = []
@@ -482,16 +492,24 @@ class Wire():
482
492
  if bisectors == True:
483
493
  bisectors_list.append(Edge.ByVertices(v_a, v1))
484
494
 
485
- return_wire = Wire.ByVertices(final_vertices, close=Wire.IsClosed(wire))
486
- if not Topology.IsInstance(return_wire, "Wire"):
487
- if not silent:
488
- print("Wire.ByOffset - Warning: The resulting wire is not well-formed, please check your offsets.")
489
- else:
490
- if not Wire.IsManifold(return_wire) and bisectors == False:
491
- if not silent:
492
- print("Wire.ByOffset - Warning: The resulting wire is non-manifold, please check your offsets.")
493
- wire_edges = Topology.Edges(return_wire)
494
495
 
496
+ # wire_edges = []
497
+ # for i in range(len(final_vertices)-1):
498
+ # v1 = final_vertices[i]
499
+ # v2 = final_vertices[i+1]
500
+ # w_e = Edge.ByVertices(v1,v2)
501
+ # #w_e = Edge.SetLength(w_e, Edge.Length(w_e)+(2*epsilon), bothSides = True)
502
+ # wire_edges.append(w_e)
503
+ # if Wire.IsClosed(wire):
504
+ # v1 = final_vertices[-1]
505
+ # v2 = final_vertices[0]
506
+ # #w_e = Edge.SetLength(w_e, Edge.Length(w_e)+(2*epsilon), bothSides = True)
507
+ # wire_edges.append(w_e)
508
+
509
+ return_wire = Wire.ByVertices(final_vertices, close=Wire.IsClosed(wire))
510
+ #wire_edges = Topology.Edges(wire_edges)
511
+ wire_edges = [Edge.SetLength(w_e, Edge.Length(w_e)+(2*epsilon), bothSides=True) for w_e in Topology.Edges(return_wire)]
512
+ return_wire_edges = Topology.Edges(return_wire)
495
513
  if transferDictionaries == True:
496
514
  if not len(wire_edges) == len(edge_dictionaries):
497
515
  if not silent:
@@ -502,8 +520,9 @@ class Wire():
502
520
  if len(edge_dictionaries) > 0:
503
521
  temp_dictionary = edge_dictionaries[min(i,len(edge_dictionaries)-1)]
504
522
  wire_edge = Topology.SetDictionary(wire_edge, temp_dictionary, silent=True)
523
+ return_wire_edges[i] = Topology.SetDictionary(return_wire_edges[i], temp_dictionary, silent=True)
505
524
  if bisectors == True:
506
- temp_return_wire = Topology.SelfMerge(Cluster.ByTopologies(Topology.Edges(return_wire)+bisectors_list))
525
+ temp_return_wire = Topology.SelfMerge(Cluster.ByTopologies(wire_edges+bisectors_list))
507
526
  if transferDictionaries == True:
508
527
  sel_vertices = Topology.Vertices(return_wire)
509
528
  sel_vertices += Topology.Vertices(flat_wire)
@@ -512,11 +531,47 @@ class Wire():
512
531
  for edge in edges:
513
532
  d = Topology.Dictionary(edge)
514
533
  c = Topology.Centroid(edge)
515
- c = Topology.SetDictionary(c, d)
534
+ c = Topology.SetDictionary(c, d, silent=True)
516
535
  sel_edges.append(c)
517
- temp_return_wire = Topology.TransferDictionariesBySelectors(temp_return_wire, sel_vertices, tranVertices=True)
518
- temp_return_wire = Topology.TransferDictionariesBySelectors(temp_return_wire, sel_edges, tranEdges=True)
536
+ temp_return_wire = Topology.TransferDictionariesBySelectors(temp_return_wire, sel_vertices, tranVertices=True, numWorkers=numWorkers)
537
+ temp_return_wire = Topology.TransferDictionariesBySelectors(temp_return_wire, sel_edges, tranEdges=True, numWorkers=numWorkers)
538
+
519
539
  return_wire = temp_return_wire
540
+
541
+ if not Topology.IsInstance(return_wire, "Wire"):
542
+ if not silent:
543
+ print("Wire.ByOffset - Warning: The resulting wire is not well-formed, please check your offsets.")
544
+ else:
545
+ if not Wire.IsManifold(return_wire) and bisectors == False:
546
+ if not silent:
547
+ print("Wire.ByOffset - Warning: The resulting wire is non-manifold, please check your offsets.")
548
+ print("Wire.ByOffset - Warning: Pursuing a workaround, but it might take a longer to complete.")
549
+
550
+ #cycles = Wire.Cycles(return_wire, maxVertices = len(final_vertices))
551
+ temp_wire = Topology.SelfMerge(Cluster.ByTopologies(wire_edges))
552
+ cycles = Wire.Cycles(temp_wire, maxVertices = len(final_vertices))
553
+ distances = []
554
+ for cycle in cycles:
555
+ cycle_centroid = Topology.Centroid(cycle)
556
+ distance = Vertex.Distance(origin, cycle_centroid)
557
+ distances.append(distance)
558
+ cycles = Helper.Sort(cycles, distances)
559
+ # Get the top three or less
560
+ cycles = cycles[:min(3, len(cycles))]
561
+ areas = [Face.Area(Face.ByWire(cycle)) for cycle in cycles]
562
+ cycles = Helper.Sort(cycles, areas)
563
+ return_cycle = Wire.Reverse(cycles[-1])
564
+ return_cycle = Wire.Simplify(return_cycle, tolerance=epsilon)
565
+ return_cycle = Wire.RemoveCollinearEdges(return_cycle)
566
+ sel_edges = []
567
+ for temp_edge in wire_edges:
568
+ x = Topology.Centroid(temp_edge)
569
+ d = Topology.Dictionary(temp_edge)
570
+ x = Topology.SetDictionary(x, d, silent=True)
571
+ sel_edges.append(x)
572
+ return_cycle = Topology.TransferDictionariesBySelectors(return_cycle, Topology.Vertices(return_wire), tranVertices=True, tolerance=tolerance, numWorkers=numWorkers)
573
+ return_cycle = Topology.TransferDictionariesBySelectors(return_cycle, sel_edges, tranEdges=True, tolerance=tolerance, numWorkers=numWorkers)
574
+ return_wire = return_cycle
520
575
  return_wire = Topology.Unflatten(return_wire, direction=normal, origin=origin)
521
576
  if transferDictionaries == True:
522
577
  return_wire = Topology.SetDictionary(return_wire, Topology.Dictionary(wire), silent=True)
topologicpy/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = '0.7.51'
1
+ __version__ = '0.7.54'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: topologicpy
3
- Version: 0.7.51
3
+ Version: 0.7.54
4
4
  Summary: An Advanced Spatial Modelling and Analysis Software Library for Architecture, Engineering, and Construction.
5
5
  Author-email: Wassim Jabi <wassim.jabi@gmail.com>
6
6
  License: MIT License
@@ -9,27 +9,27 @@ topologicpy/DGL.py,sha256=Dd6O08D-vSxpjHYgKm45JpKiaeGvWlg1BRMzYMAXGNc,138991
9
9
  topologicpy/Dictionary.py,sha256=X_WARSYtWtYIsEUKdLH-plZmGZ3pHz_FBFxxeHGHdrU,27065
10
10
  topologicpy/Edge.py,sha256=vhYHkobSLGSWV-oe2oJFFDobqFToDyb7s71yQ840AAA,65166
11
11
  topologicpy/EnergyModel.py,sha256=XcCP55VW5WHDIIKcURijmBOZEgNUDEn_V9h5EejkntA,53876
12
- topologicpy/Face.py,sha256=7GCYo4ATkMW1skiv4gXOVARM29A7Buim9lTQu57B22Y,115489
13
- topologicpy/Graph.py,sha256=1dtcE342b6d7cTiMbtUWWOud6Vu0vHaf4HP2eG_-iqg,402544
12
+ topologicpy/Face.py,sha256=YjU6TxxW2Mf5InumMvzXUXVVRdtjxyRGauRIhGXzkao,116411
13
+ topologicpy/Graph.py,sha256=capDrtqrvNSyivrcRnHDIEGgO43ZxjqykeFiGBV3GIA,402880
14
14
  topologicpy/Grid.py,sha256=3-sn7CHWGcXk18XCnHjsUttNJTWwmN63g_Insj__p04,18218
15
15
  topologicpy/Helper.py,sha256=i-AfI29NMsZXBaymjilfvxQbuS3wpYbpPw4RWu1YCHs,16358
16
16
  topologicpy/Honeybee.py,sha256=vcBECJlgWVjNNdD9ZmjNik_pA1Y_ZNoOorsQb2CiyGA,21965
17
17
  topologicpy/Matrix.py,sha256=umgR7An919-wGInXJ1wpqnoQ2jCPdyMe2rcWTZ16upk,8079
18
18
  topologicpy/Neo4j.py,sha256=YvtF7RYUMATEZ8iHwFwK_MOxEDyARby2DTI2CCK6-cI,19694
19
- topologicpy/Plotly.py,sha256=gfGadsDBgXOeefzzceXkVshqONuPtkGiW-XNVuT2rrA,106193
19
+ topologicpy/Plotly.py,sha256=Aaq6D9D7gov5OrfoKLs_j3LJfdkCC-Gh8GaU5n2UOGQ,106199
20
20
  topologicpy/Polyskel.py,sha256=EFsuh2EwQJGPLiFUjvtXmAwdX-A4r_DxP5hF7Qd3PaU,19829
21
- topologicpy/PyG.py,sha256=3U59QObO56EBwrvaplGeLZhbTao0gJCYhWm3oTpjFAE,109505
21
+ topologicpy/PyG.py,sha256=LU9LCCzjxGPUM31qbaJXZsTvniTtgugxJY7y612t4A4,109757
22
22
  topologicpy/Shell.py,sha256=joahFtpRQTWJpQOmi3qU4Xe0Sx2XXeayHlXTNx8CzMk,87610
23
23
  topologicpy/Speckle.py,sha256=rUS6PCaxIjEF5_fUruxvMH47FMKg-ohcoU0qAUb-yNM,14267
24
24
  topologicpy/Sun.py,sha256=42tDWMYpwRG7Z2Qjtp94eRgBuqySq7k8TgNUZDK7QxQ,36837
25
- topologicpy/Topology.py,sha256=100DUg9EUcFg3K9wlNdaKrXcFEZLvqHsexs3R-8pbYw,416196
25
+ topologicpy/Topology.py,sha256=q-RMY4i0Ub7LmJOmh14hf4GoHJ2TF5YN4YtkhUN_z-s,419052
26
26
  topologicpy/Vector.py,sha256=WQQUbwrg7VKImtxuBUi2i-FRiPT77WlrzLP05gdXKM8,33079
27
27
  topologicpy/Vertex.py,sha256=bLY60YWoMsgCgHk7F7k9F93Sq2FJ6AzUcTfJ83NZfHA,71107
28
- topologicpy/Wire.py,sha256=h-vcKAuyHVvfX34nJx4bVF-AxeaUCx4NbVzGBq98M9o,154201
28
+ topologicpy/Wire.py,sha256=OoPb7SJl0VpZDZpGL0-VkYJ35zPANS7gHDt9tixOSxc,157629
29
29
  topologicpy/__init__.py,sha256=D7ky87CAQMiS2KE6YLvcTLkTgA2PY7rASe6Z23pjp9k,872
30
- topologicpy/version.py,sha256=Nl_BpJIhLQbbkeSiv2q5IgytCINu26pAUqkPjuq0FPg,23
31
- topologicpy-0.7.51.dist-info/LICENSE,sha256=BRNw73R2WdDBICtwhI3wm3cxsaVqLTAGuRwrTltcfxs,1068
32
- topologicpy-0.7.51.dist-info/METADATA,sha256=E68AdA4I73vasiialUPW6sDhhX4xFhYSwysUl_7ZR1g,10918
33
- topologicpy-0.7.51.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
34
- topologicpy-0.7.51.dist-info/top_level.txt,sha256=J30bDzW92Ob7hw3zA8V34Jlp-vvsfIkGzkr8sqvb4Uw,12
35
- topologicpy-0.7.51.dist-info/RECORD,,
30
+ topologicpy/version.py,sha256=QSD1X6KT5Pd5JrzAuS4UG70OK1cKLrNByM8LpoGYluI,23
31
+ topologicpy-0.7.54.dist-info/LICENSE,sha256=BRNw73R2WdDBICtwhI3wm3cxsaVqLTAGuRwrTltcfxs,1068
32
+ topologicpy-0.7.54.dist-info/METADATA,sha256=TCoA8opbxCAdgeBy9D49fzOIFXzclFi8w6LDHLKU9RA,10918
33
+ topologicpy-0.7.54.dist-info/WHEEL,sha256=uCRv0ZEik_232NlR4YDw4Pv3Ajt5bKvMH13NUU7hFuI,91
34
+ topologicpy-0.7.54.dist-info/top_level.txt,sha256=J30bDzW92Ob7hw3zA8V34Jlp-vvsfIkGzkr8sqvb4Uw,12
35
+ topologicpy-0.7.54.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (74.0.0)
2
+ Generator: setuptools (74.1.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5