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 +15 -4
- topologicpy/Graph.py +6 -0
- topologicpy/Plotly.py +3 -3
- topologicpy/PyG.py +6 -1
- topologicpy/Topology.py +59 -4
- topologicpy/Wire.py +69 -14
- topologicpy/version.py +1 -1
- {topologicpy-0.7.51.dist-info → topologicpy-0.7.54.dist-info}/METADATA +1 -1
- {topologicpy-0.7.51.dist-info → topologicpy-0.7.54.dist-info}/RECORD +12 -12
- {topologicpy-0.7.51.dist-info → topologicpy-0.7.54.dist-info}/WHEEL +1 -1
- {topologicpy-0.7.51.dist-info → topologicpy-0.7.54.dist-info}/LICENSE +0 -0
- {topologicpy-0.7.51.dist-info → topologicpy-0.7.54.dist-info}/top_level.txt +0 -0
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,
|
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 = (
|
2478
|
+
color = (175, 175, 175)
|
2479
2479
|
elif "slab" in is_a:
|
2480
|
-
color = (
|
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.
|
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(
|
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.
|
1
|
+
__version__ = '0.7.54'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: topologicpy
|
3
|
-
Version: 0.7.
|
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=
|
13
|
-
topologicpy/Graph.py,sha256=
|
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=
|
19
|
+
topologicpy/Plotly.py,sha256=Aaq6D9D7gov5OrfoKLs_j3LJfdkCC-Gh8GaU5n2UOGQ,106199
|
20
20
|
topologicpy/Polyskel.py,sha256=EFsuh2EwQJGPLiFUjvtXmAwdX-A4r_DxP5hF7Qd3PaU,19829
|
21
|
-
topologicpy/PyG.py,sha256=
|
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=
|
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=
|
28
|
+
topologicpy/Wire.py,sha256=OoPb7SJl0VpZDZpGL0-VkYJ35zPANS7gHDt9tixOSxc,157629
|
29
29
|
topologicpy/__init__.py,sha256=D7ky87CAQMiS2KE6YLvcTLkTgA2PY7rASe6Z23pjp9k,872
|
30
|
-
topologicpy/version.py,sha256=
|
31
|
-
topologicpy-0.7.
|
32
|
-
topologicpy-0.7.
|
33
|
-
topologicpy-0.7.
|
34
|
-
topologicpy-0.7.
|
35
|
-
topologicpy-0.7.
|
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,,
|
File without changes
|
File without changes
|