topologicpy 0.7.30__py3-none-any.whl → 0.7.34__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/Graph.py +13 -6
- topologicpy/Plotly.py +4 -0
- topologicpy/Shell.py +2 -2
- topologicpy/Topology.py +13 -2
- topologicpy/Vertex.py +3 -3
- topologicpy/Wire.py +78 -22
- topologicpy/version.py +1 -1
- {topologicpy-0.7.30.dist-info → topologicpy-0.7.34.dist-info}/METADATA +1 -1
- {topologicpy-0.7.30.dist-info → topologicpy-0.7.34.dist-info}/RECORD +12 -12
- {topologicpy-0.7.30.dist-info → topologicpy-0.7.34.dist-info}/LICENSE +0 -0
- {topologicpy-0.7.30.dist-info → topologicpy-0.7.34.dist-info}/WHEEL +0 -0
- {topologicpy-0.7.30.dist-info → topologicpy-0.7.34.dist-info}/top_level.txt +0 -0
topologicpy/Graph.py
CHANGED
@@ -1142,8 +1142,6 @@ class Graph:
|
|
1142
1142
|
The desired key name to use for geometry. The default is "brep".
|
1143
1143
|
typeKey : str , optional
|
1144
1144
|
The dictionary key to use to look up the type of the node. The default is "type".
|
1145
|
-
geometryKey : str , optional
|
1146
|
-
The dictionary key to use to look up the geometry of the node. The default is "brep".
|
1147
1145
|
spaceType : str , optional
|
1148
1146
|
The dictionary string value to use to look up vertices of type "space". The default is "space".
|
1149
1147
|
wallType : str , optional
|
@@ -1778,7 +1776,7 @@ class Graph:
|
|
1778
1776
|
edges_ds = [] # A list to hold the vertices data structures until we can build the actual graphs
|
1779
1777
|
# Access specific columns within the grouped DataFrame
|
1780
1778
|
for graph_id, group_edge_df in grouped_edges:
|
1781
|
-
|
1779
|
+
vertices = vertices_ds[graph_id]
|
1782
1780
|
edges = []
|
1783
1781
|
es = [] # a list to check for duplicate edges
|
1784
1782
|
duplicate_edges = 0
|
@@ -1807,7 +1805,11 @@ class Graph:
|
|
1807
1805
|
values = [label, mask]+featureList
|
1808
1806
|
if not (src_id == dst_id) and not [src_id, dst_id] in es and not [dst_id, src_id] in es:
|
1809
1807
|
es.append([src_id, dst_id])
|
1810
|
-
|
1808
|
+
try:
|
1809
|
+
edge = Edge.ByVertices([vertices[src_id], vertices[dst_id]], tolerance=tolerance)
|
1810
|
+
except:
|
1811
|
+
print("Graph.ByCSVPath - Warning: Failed to create and add a edge to the list of edges.")
|
1812
|
+
edge = None
|
1811
1813
|
if Topology.IsInstance(edge, "Edge"):
|
1812
1814
|
d = Dictionary.ByKeysValues(edge_keys, values)
|
1813
1815
|
if Topology.IsInstance(d, "Dictionary"):
|
@@ -4886,14 +4888,14 @@ class Graph:
|
|
4886
4888
|
edgeSRCHeader="src_id", edgeDSTHeader="dst_id",
|
4887
4889
|
edgeLabelHeader="label", edgeFeaturesHeader="feat",
|
4888
4890
|
edgeTrainMaskHeader="train_mask", edgeValidateMaskHeader="val_mask", edgeTestMaskHeader="test_mask",
|
4889
|
-
edgeMaskKey=
|
4891
|
+
edgeMaskKey="mask",
|
4890
4892
|
edgeTrainRatio=0.8, edgeValidateRatio=0.1, edgeTestRatio=0.1,
|
4891
4893
|
bidirectional=True,
|
4892
4894
|
|
4893
4895
|
nodeLabelKey="label", defaultNodeLabel=0, nodeFeaturesKeys=[],
|
4894
4896
|
nodeIDHeader="node_id", nodeLabelHeader="label", nodeFeaturesHeader="feat",
|
4895
4897
|
nodeTrainMaskHeader="train_mask", nodeValidateMaskHeader="val_mask", nodeTestMaskHeader="test_mask",
|
4896
|
-
nodeMaskKey=
|
4898
|
+
nodeMaskKey="mask",
|
4897
4899
|
nodeTrainRatio=0.8, nodeValidateRatio=0.1, nodeTestRatio=0.1,
|
4898
4900
|
mantissa=6, tolerance=0.0001, overwrite=False):
|
4899
4901
|
"""
|
@@ -4920,6 +4922,8 @@ class Graph:
|
|
4920
4922
|
The edge label dictionary key saved in each graph edge. The default is "label".
|
4921
4923
|
defaultEdgeLabel : int , optional
|
4922
4924
|
The default edge label to use if no edge label is found. The default is 0.
|
4925
|
+
edgeLabelHeader : str , optional
|
4926
|
+
The desired edge label column header. The default is "label".
|
4923
4927
|
edgeSRCHeader : str , optional
|
4924
4928
|
The desired edge source column header. The default is "src_id".
|
4925
4929
|
edgeDSTHeader : str , optional
|
@@ -4967,6 +4971,9 @@ class Graph:
|
|
4967
4971
|
The desired node validate mask column header. The default is "val_mask".
|
4968
4972
|
nodeTestMaskHeader : str , optional
|
4969
4973
|
The desired node test mask column header. The default is "test_mask".
|
4974
|
+
nodeMaskKey : str , optional
|
4975
|
+
The dictionary key where the node train, validate, test category is to be found. The value should be 0 for train
|
4976
|
+
1 for validate, and 2 for test. If no key is found, the ratio of train/validate/test will be used. The default is "mask".
|
4970
4977
|
nodeTrainRatio : float , optional
|
4971
4978
|
The desired ratio of the node data to use for training. The number must be between 0 and 1. The default is 0.8 which means 80% of the data will be used for training.
|
4972
4979
|
This value is ignored if an nodeMaskKey is foud.
|
topologicpy/Plotly.py
CHANGED
@@ -2032,6 +2032,10 @@ class Plotly:
|
|
2032
2032
|
return None
|
2033
2033
|
if not camera == None and not center == None and not up == None:
|
2034
2034
|
figure = Plotly.SetCamera(figure, camera=camera, center=center, up=up, projection=projection)
|
2035
|
+
figure.update_layout(
|
2036
|
+
autosize=True,
|
2037
|
+
margin=dict(l=40, r=40, t=40, b=40)
|
2038
|
+
)
|
2035
2039
|
if renderer.lower() == "offline":
|
2036
2040
|
ofl.plot(figure)
|
2037
2041
|
else:
|
topologicpy/Shell.py
CHANGED
@@ -1189,12 +1189,12 @@ class Shell():
|
|
1189
1189
|
----------
|
1190
1190
|
shell : topologic_core.Shell
|
1191
1191
|
The input shell.
|
1192
|
-
tolerance : float, optional
|
1193
|
-
The desired tolerance. The default is 0.0001.
|
1194
1192
|
origin : topologic_core.Vertex , optional
|
1195
1193
|
The desired origin of the plane unto which the planar shell will be projected. If set to None, the centroid of the input shell will be chosen. The default is None.
|
1196
1194
|
mantissa : int , optional
|
1197
1195
|
The desired length of the mantissa. The default is 6.
|
1196
|
+
tolerance : float, optional
|
1197
|
+
The desired tolerance. The default is 0.0001.
|
1198
1198
|
|
1199
1199
|
Returns
|
1200
1200
|
-------
|
topologicpy/Topology.py
CHANGED
@@ -1955,11 +1955,13 @@ class Topology():
|
|
1955
1955
|
converted_entity = Wire.Circle(origin, radius)
|
1956
1956
|
|
1957
1957
|
elif entity_type in ['POLYLINE', 'LWPOLYLINE']:
|
1958
|
-
|
1958
|
+
with entity.points('xyz') as points:
|
1959
|
+
vertices = [Vertex.ByCoordinates(*_) for _ in points]
|
1959
1960
|
converted_entity = Wire.ByVertices(vertices)
|
1960
1961
|
|
1961
1962
|
elif entity_type == 'ARC':
|
1962
|
-
|
1963
|
+
with entity.points('xyz') as points:
|
1964
|
+
vertices = [Vertex.ByCoordinates(*_) for _ in points]
|
1963
1965
|
converted_entity = Wire.ByVertices(vertices)
|
1964
1966
|
|
1965
1967
|
elif entity_type == 'MESH':
|
@@ -7393,6 +7395,12 @@ class Topology():
|
|
7393
7395
|
The list of vertices.
|
7394
7396
|
|
7395
7397
|
"""
|
7398
|
+
from topologicpy.Graph import Graph
|
7399
|
+
|
7400
|
+
if Topology.IsInstance(topology, "Vertex"):
|
7401
|
+
return []
|
7402
|
+
if Topology.IsInstance(topology, "Graph"):
|
7403
|
+
return Graph.Vertices(topology)
|
7396
7404
|
return Topology.SubTopologies(topology=topology, subTopologyType="vertex")
|
7397
7405
|
|
7398
7406
|
@staticmethod
|
@@ -7411,8 +7419,11 @@ class Topology():
|
|
7411
7419
|
The list of edges.
|
7412
7420
|
|
7413
7421
|
"""
|
7422
|
+
from topologicpy.Graph import Graph
|
7414
7423
|
if Topology.IsInstance(topology, "Edge") or Topology.IsInstance(topology, "Vertex"):
|
7415
7424
|
return []
|
7425
|
+
if Topology.IsInstance(topology, "Graph"):
|
7426
|
+
return Graph.Edges(topology)
|
7416
7427
|
return Topology.SubTopologies(topology=topology, subTopologyType="edge")
|
7417
7428
|
|
7418
7429
|
@staticmethod
|
topologicpy/Vertex.py
CHANGED
@@ -511,7 +511,7 @@ class Vertex():
|
|
511
511
|
# Calculate the Euclidean distance
|
512
512
|
distance = np.linalg.norm(point1 - point2)
|
513
513
|
|
514
|
-
return distance
|
514
|
+
return float(distance)
|
515
515
|
|
516
516
|
def distance_point_to_line(point, line_start, line_end):
|
517
517
|
# Convert input points to NumPy arrays for vector operations
|
@@ -1493,8 +1493,8 @@ class Vertex():
|
|
1493
1493
|
|
1494
1494
|
# Calculate the distance between the closest point and the given point
|
1495
1495
|
distance = np.linalg.norm(point - closest_point)
|
1496
|
-
|
1497
|
-
|
1496
|
+
return float(distance)
|
1497
|
+
|
1498
1498
|
if not Topology.IsInstance(vertex, "Vertex"):
|
1499
1499
|
print("Vertex.PerpendicularDistance - Error: The input vertex is not a valid topologic vertex. Returning None.")
|
1500
1500
|
return None
|
topologicpy/Wire.py
CHANGED
@@ -21,7 +21,7 @@ from topologicpy.Topology import Topology
|
|
21
21
|
import math
|
22
22
|
import itertools
|
23
23
|
|
24
|
-
class Wire(
|
24
|
+
class Wire():
|
25
25
|
@staticmethod
|
26
26
|
def Arc(startVertex, middleVertex, endVertex, sides: int = 16, close: bool = True, tolerance: float = 0.0001):
|
27
27
|
"""
|
@@ -310,7 +310,7 @@ class Wire(Topology):
|
|
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", bisectors: 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", bisectors: bool = False, transferDictionaries: bool = False, tolerance: float = 0.0001, silent: bool = False):
|
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
|
|
@@ -332,6 +332,8 @@ class Wire(Topology):
|
|
332
332
|
The vertex dictionary key under which to find the step offset B value. If a value cannot be found, the stepOffsetB input parameter value is used instead. The default is "stepOffsetB".
|
333
333
|
bisectors : bool , optional
|
334
334
|
If set to True, The bisectors (seams) edges will be included in the returned wire. The default is False.
|
335
|
+
tranferDictionaries : bool , optional
|
336
|
+
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.
|
335
337
|
tolerance : float , optional
|
336
338
|
The desired tolerance. The default is 0.0001.
|
337
339
|
silent : bool , optional
|
@@ -369,6 +371,7 @@ class Wire(Topology):
|
|
369
371
|
offset_edges = []
|
370
372
|
final_vertices = []
|
371
373
|
bisectors_list = []
|
374
|
+
edge_dictionaries = []
|
372
375
|
for edge in edges:
|
373
376
|
d = Topology.Dictionary(edge)
|
374
377
|
d_offset = Dictionary.ValueAtKey(d, offsetKey)
|
@@ -377,25 +380,66 @@ class Wire(Topology):
|
|
377
380
|
offsets.append(d_offset)
|
378
381
|
offset_edge = Edge.ByOffset2D(edge, d_offset)
|
379
382
|
offset_edges.append(offset_edge)
|
380
|
-
o_edges = []
|
381
383
|
for i in range(len(edges)):
|
382
|
-
edge_a = edges[i]
|
383
384
|
o_edge_a = offset_edges[i]
|
384
385
|
v_a = Edge.StartVertex(edges[i])
|
385
386
|
if i == 0:
|
386
387
|
if Wire.IsClosed(wire) == False:
|
387
388
|
v1 = Edge.StartVertex(offset_edges[0])
|
389
|
+
if transferDictionaries == True:
|
390
|
+
d_temp = Topology.Dictionary(v_a)
|
391
|
+
v1 = Topology.SetDictionary(v1, Topology.Dictionary(v_a), silent=True)
|
392
|
+
edge_dictionaries.append(Topology.Dictionary(edges[i]))
|
388
393
|
final_vertices.append(v1)
|
389
394
|
if bisectors == True:
|
390
395
|
bisectors_list.append(Edge.ByVertices(v_a, v1))
|
391
396
|
else:
|
392
397
|
prev_edge = offset_edges[-1]
|
398
|
+
v1 = Edge.Intersect2D(prev_edge, o_edge_a, silent=True)
|
399
|
+
if Topology.IsInstance(v1, "Vertex"):
|
400
|
+
if bisectors == True:
|
401
|
+
bisectors_list.append(Edge.ByVertices(v_a, v1))
|
402
|
+
if transferDictionaries == True:
|
403
|
+
d_temp = Topology.Dictionary(v_a)
|
404
|
+
v1 = Topology.SetDictionary(v1, Topology.Dictionary(v_a))
|
405
|
+
edge_dictionaries.append(Topology.Dictionary(edges[i]))
|
406
|
+
final_vertices.append(v1)
|
407
|
+
else:
|
408
|
+
connection = Edge.Connection(prev_edge, o_edge_a)
|
409
|
+
if Topology.IsInstance(connection, "Edge"):
|
410
|
+
d = Topology.Dictionary(v_a)
|
411
|
+
d_stepOffsetA = Dictionary.ValueAtKey(d, stepOffsetKeyA)
|
412
|
+
if d_stepOffsetA == None:
|
413
|
+
d_stepOffsetA = stepOffsetA
|
414
|
+
d_stepOffsetB = Dictionary.ValueAtKey(d, stepOffsetKeyB)
|
415
|
+
if d_stepOffsetB == None:
|
416
|
+
d_stepOffsetB = stepOffsetB
|
417
|
+
v1_1 = Topology.TranslateByDirectionDistance(Edge.EndVertex(prev_edge),
|
418
|
+
direction = Vector.Reverse(Edge.Direction(prev_edge)),
|
419
|
+
distance = d_stepOffsetA)
|
420
|
+
|
421
|
+
v1_2 = Topology.TranslateByDirectionDistance(Edge.StartVertex(o_edge_a),
|
422
|
+
direction = Edge.Direction(o_edge_a),
|
423
|
+
distance = d_stepOffsetB)
|
424
|
+
bisectors_list.append(Edge.ByVertices(v_a, v1_1))
|
425
|
+
bisectors_list.append(Edge.ByVertices(v_a, v1_2))
|
426
|
+
final_vertices.append(v1_1)
|
427
|
+
final_vertices.append(v1_2)
|
428
|
+
if transferDictionaries == True:
|
429
|
+
v1_1 = Topology.SetDictionary(v1_1, Topology.Dictionary(v_a), silent=True)
|
430
|
+
v1_2 = Topology.SetDictionary(v1_2, Topology.Dictionary(v_a), silent=True)
|
431
|
+
edge_dictionaries.append(Topology.Dictionary(v_a))
|
432
|
+
edge_dictionaries.append(Topology.Dictionary(edges[i]))
|
393
433
|
else:
|
394
434
|
prev_edge = offset_edges[i-1]
|
395
435
|
v1 = Edge.Intersect2D(prev_edge, o_edge_a, silent=True)
|
396
436
|
if Topology.IsInstance(v1, "Vertex"):
|
397
437
|
if bisectors == True:
|
398
438
|
bisectors_list.append(Edge.ByVertices(v_a, v1))
|
439
|
+
if transferDictionaries == True:
|
440
|
+
d_temp = Topology.Dictionary(v_a)
|
441
|
+
v1 = Topology.SetDictionary(v1, Topology.Dictionary(v_a), silent=True)
|
442
|
+
edge_dictionaries.append(Topology.Dictionary(edges[i]))
|
399
443
|
final_vertices.append(v1)
|
400
444
|
else:
|
401
445
|
connection = Edge.Connection(prev_edge, o_edge_a)
|
@@ -418,31 +462,26 @@ class Wire(Topology):
|
|
418
462
|
bisectors_list.append(Edge.ByVertices(v_a, v1_2))
|
419
463
|
final_vertices.append(v1_1)
|
420
464
|
final_vertices.append(v1_2)
|
465
|
+
if transferDictionaries == True:
|
466
|
+
v1_1 = Topology.SetDictionary(v1_1, Topology.Dictionary(v_a))
|
467
|
+
v1_2 = Topology.SetDictionary(v1_2, Topology.Dictionary(v_a))
|
468
|
+
edge_dictionaries.append(Topology.Dictionary(v_a))
|
469
|
+
edge_dictionaries.append(Topology.Dictionary(edges[i]))
|
470
|
+
v_a = Edge.EndVertex(edges[-1])
|
421
471
|
if Wire.IsClosed(wire) == False:
|
422
|
-
v_a = Edge.EndVertex(edges[-1])
|
423
472
|
v1 = Edge.EndVertex(offset_edges[-1])
|
424
473
|
final_vertices.append(v1)
|
474
|
+
if transferDictionaries == True:
|
475
|
+
v1 = Topology.SetDictionary(v1, Topology.Dictionary(v_a), silent=True)
|
425
476
|
if bisectors == True:
|
426
477
|
bisectors_list.append(Edge.ByVertices(v_a, v1))
|
427
|
-
else:
|
428
|
-
v1 = Edge.Intersect2D(o_edge_a, offset_edges[0], silent=True)
|
429
|
-
if Topology.IsInstance(v1, "Vertex"):
|
430
|
-
if bisectors == True:
|
431
|
-
bisectors_list.append(Edge.ByVertices(Edge.StartVertex(edges[0]), v1))
|
432
|
-
final_vertices.append(v1)
|
433
|
-
else:
|
434
|
-
connection = Edge.Connection(offset_edges[0], o_edge_a)
|
435
|
-
if Topology.IsInstance(connection, "Edge"):
|
436
|
-
v1_1 = Edge.StartVertex(connection)
|
437
|
-
v1_2 = Edge.EndVertex(connection)
|
438
|
-
bisectors_list.append(Edge.ByVertices(v_a, v1_1))
|
439
|
-
bisectors_list.append(Edge.ByVertices(v_a, v1_2))
|
440
|
-
final_vertices.append(v1_1)
|
441
|
-
final_vertices.append(v1_2)
|
442
478
|
|
479
|
+
|
443
480
|
return_wire = Wire.ByVertices(final_vertices, close=Wire.IsClosed(wire))
|
444
|
-
|
445
|
-
|
481
|
+
wire_edges = Topology.Edges(return_wire)
|
482
|
+
if transferDictionaries == True:
|
483
|
+
for i, wire_edge in enumerate(wire_edges):
|
484
|
+
wire_edge = Topology.SetDictionary(wire_edge, edge_dictionaries[i], silent=True)
|
446
485
|
if not Topology.IsInstance(return_wire, "Wire"):
|
447
486
|
if not silent:
|
448
487
|
print("Wire.ByOffset - Warning: The resulting wire is not well-formed, please check your offsets.")
|
@@ -450,7 +489,24 @@ class Wire(Topology):
|
|
450
489
|
if not Wire.IsManifold(return_wire) and bisectors == False:
|
451
490
|
if not silent:
|
452
491
|
print("Wire.ByOffset - Warning: The resulting wire is non-manifold, please check your offsets.")
|
492
|
+
if bisectors == True:
|
493
|
+
temp_return_wire = Topology.SelfMerge(Cluster.ByTopologies(Topology.Edges(return_wire)+bisectors_list))
|
494
|
+
if transferDictionaries == True:
|
495
|
+
sel_vertices = Topology.Vertices(return_wire)
|
496
|
+
sel_vertices += Topology.Vertices(flat_wire)
|
497
|
+
edges = Topology.Edges(return_wire)
|
498
|
+
sel_edges = []
|
499
|
+
for edge in edges:
|
500
|
+
d = Topology.Dictionary(edge)
|
501
|
+
c = Topology.Centroid(edge)
|
502
|
+
c = Topology.SetDictionary(c, d)
|
503
|
+
sel_edges.append(c)
|
504
|
+
temp_return_wire = Topology.TransferDictionariesBySelectors(temp_return_wire, sel_vertices, tranVertices=True)
|
505
|
+
temp_return_wire = Topology.TransferDictionariesBySelectors(temp_return_wire, sel_edges, tranEdges=True)
|
506
|
+
return_wire = temp_return_wire
|
453
507
|
return_wire = Topology.Unflatten(return_wire, direction=normal, origin=origin)
|
508
|
+
if transferDictionaries == True:
|
509
|
+
return_wire = Topology.SetDictionary(return_wire, Topology.Dictionary(wire), silent=True)
|
454
510
|
return return_wire
|
455
511
|
|
456
512
|
@staticmethod
|
topologicpy/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = '0.7.
|
1
|
+
__version__ = '0.7.34'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: topologicpy
|
3
|
-
Version: 0.7.
|
3
|
+
Version: 0.7.34
|
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
|
@@ -10,25 +10,25 @@ topologicpy/Dictionary.py,sha256=KqJ29YyE23Y3Xc6XmKLSCZXRfBvm-OEOxlMZ4dt-rfM,270
|
|
10
10
|
topologicpy/Edge.py,sha256=vhYHkobSLGSWV-oe2oJFFDobqFToDyb7s71yQ840AAA,65166
|
11
11
|
topologicpy/EnergyModel.py,sha256=ni0H1JgvLl1-q90yK9Sm1qj5P1fTuidlimEIcwuj6qE,53287
|
12
12
|
topologicpy/Face.py,sha256=u-DPS5guhzfwxZUuUNYqtPJG6OdeHpY1XQHRSKn6rqk,110148
|
13
|
-
topologicpy/Graph.py,sha256=
|
13
|
+
topologicpy/Graph.py,sha256=ICwFUYLka6tEPMo43I9QAe24ljItMUZOZYL21xpDPIg,392146
|
14
14
|
topologicpy/Grid.py,sha256=Q-2WNBkvIsJks7pbGkzzkRWVB4fTMYgWipG3lcDXbpE,18496
|
15
15
|
topologicpy/Helper.py,sha256=mLwJmhyc-d-JqW82MBf7JwM91zWHVx8RzOmndPWHm-k,17717
|
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=Gy2PS4Ky8BNhohKreoV4zgzW9OXCjhSwiZF_Aq21_wU,19589
|
19
|
-
topologicpy/Plotly.py,sha256=
|
19
|
+
topologicpy/Plotly.py,sha256=qMhBMAYoNMsc-cKdNpqM2p9rqAVXWvBNTzmTKw7iU_0,98963
|
20
20
|
topologicpy/Polyskel.py,sha256=4R5_DEdfrmi-4gR6axHNoHTCSAE2TCekOyN8jvb7bHQ,19722
|
21
|
-
topologicpy/Shell.py,sha256=
|
21
|
+
topologicpy/Shell.py,sha256=bJ8zu5gj-TSOADR-p3YQ9yLPHFTffnv-29uD5b6Zvuc,79912
|
22
22
|
topologicpy/Speckle.py,sha256=rUS6PCaxIjEF5_fUruxvMH47FMKg-ohcoU0qAUb-yNM,14267
|
23
23
|
topologicpy/Sun.py,sha256=_gZfVyH0SDLQmmt775UeeAJ_BtwXO1STQnUMV1qkU0s,37161
|
24
|
-
topologicpy/Topology.py,sha256=
|
24
|
+
topologicpy/Topology.py,sha256=iL2kCRHtFTMBqFbvdJy_-E0NtLChsD7606x_F1UrKFE,362074
|
25
25
|
topologicpy/Vector.py,sha256=WQQUbwrg7VKImtxuBUi2i-FRiPT77WlrzLP05gdXKM8,33079
|
26
|
-
topologicpy/Vertex.py,sha256=
|
27
|
-
topologicpy/Wire.py,sha256=
|
26
|
+
topologicpy/Vertex.py,sha256=EQdVYHmW85_pZdHZB3N8pEi0GiadCCkF3z_oqohA7B0,71161
|
27
|
+
topologicpy/Wire.py,sha256=Luau9ko3AA-CxPx--JX_OzscSFgUU23m8_bs5KNYgHc,153544
|
28
28
|
topologicpy/__init__.py,sha256=D7ky87CAQMiS2KE6YLvcTLkTgA2PY7rASe6Z23pjp9k,872
|
29
|
-
topologicpy/version.py,sha256=
|
30
|
-
topologicpy-0.7.
|
31
|
-
topologicpy-0.7.
|
32
|
-
topologicpy-0.7.
|
33
|
-
topologicpy-0.7.
|
34
|
-
topologicpy-0.7.
|
29
|
+
topologicpy/version.py,sha256=cxijp04lr4v3ZnLuLmrlFIoTuvxTkFkuNf13YTxYPmo,23
|
30
|
+
topologicpy-0.7.34.dist-info/LICENSE,sha256=BRNw73R2WdDBICtwhI3wm3cxsaVqLTAGuRwrTltcfxs,1068
|
31
|
+
topologicpy-0.7.34.dist-info/METADATA,sha256=YtAZb3NSLWZL8AsRQy3xLzd7Ja1pvRnrgypt0V_hKVE,10916
|
32
|
+
topologicpy-0.7.34.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
|
33
|
+
topologicpy-0.7.34.dist-info/top_level.txt,sha256=J30bDzW92Ob7hw3zA8V34Jlp-vvsfIkGzkr8sqvb4Uw,12
|
34
|
+
topologicpy-0.7.34.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|