topologicpy 0.7.94__py3-none-any.whl → 0.7.97__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 +30 -29
- topologicpy/CellComplex.py +9 -8
- topologicpy/DGL.py +3 -2
- topologicpy/Edge.py +14 -14
- topologicpy/EnergyModel.py +7 -7
- topologicpy/Graph.py +262 -130
- topologicpy/Honeybee.py +1 -1
- topologicpy/Neo4j.py +3 -2
- topologicpy/Shell.py +9 -9
- topologicpy/Topology.py +6 -5
- topologicpy/Vertex.py +21 -15
- topologicpy/Wire.py +133 -52
- topologicpy/version.py +1 -1
- {topologicpy-0.7.94.dist-info → topologicpy-0.7.97.dist-info}/METADATA +1 -1
- {topologicpy-0.7.94.dist-info → topologicpy-0.7.97.dist-info}/RECORD +18 -18
- {topologicpy-0.7.94.dist-info → topologicpy-0.7.97.dist-info}/LICENSE +0 -0
- {topologicpy-0.7.94.dist-info → topologicpy-0.7.97.dist-info}/WHEEL +0 -0
- {topologicpy-0.7.94.dist-info → topologicpy-0.7.97.dist-info}/top_level.txt +0 -0
topologicpy/Vertex.py
CHANGED
@@ -1728,11 +1728,13 @@ class Vertex():
|
|
1728
1728
|
The X coordinate of the input vertex.
|
1729
1729
|
|
1730
1730
|
"""
|
1731
|
-
|
1732
|
-
|
1733
|
-
|
1734
|
-
|
1735
|
-
|
1731
|
+
try:
|
1732
|
+
return round(vertex.X(), mantissa) # Hook to Core
|
1733
|
+
except:
|
1734
|
+
try:
|
1735
|
+
return round(vertex.x(), mantissa) # Hook to Core
|
1736
|
+
except:
|
1737
|
+
return None
|
1736
1738
|
|
1737
1739
|
@staticmethod
|
1738
1740
|
def Y(vertex, mantissa: int = 6) -> float:
|
@@ -1752,11 +1754,13 @@ class Vertex():
|
|
1752
1754
|
The Y coordinate of the input vertex.
|
1753
1755
|
|
1754
1756
|
"""
|
1755
|
-
|
1756
|
-
|
1757
|
-
|
1758
|
-
|
1759
|
-
|
1757
|
+
try:
|
1758
|
+
return round(vertex.Y(), mantissa) # Hook to Core
|
1759
|
+
except:
|
1760
|
+
try:
|
1761
|
+
return round(vertex.y(), mantissa) # Hook to Core
|
1762
|
+
except:
|
1763
|
+
return None
|
1760
1764
|
|
1761
1765
|
@staticmethod
|
1762
1766
|
def Z(vertex, mantissa: int = 6) -> float:
|
@@ -1776,9 +1780,11 @@ class Vertex():
|
|
1776
1780
|
The Z coordinate of the input vertex.
|
1777
1781
|
|
1778
1782
|
"""
|
1779
|
-
|
1780
|
-
|
1781
|
-
|
1782
|
-
|
1783
|
-
|
1783
|
+
try:
|
1784
|
+
return round(vertex.Z(), mantissa) # Hook to Core
|
1785
|
+
except:
|
1786
|
+
try:
|
1787
|
+
return round(vertex.z(), mantissa) # Hook to Core
|
1788
|
+
except:
|
1789
|
+
return None
|
1784
1790
|
|
topologicpy/Wire.py
CHANGED
@@ -982,9 +982,9 @@ class Wire():
|
|
982
982
|
sides = int(math.floor(sides))
|
983
983
|
for i in range(sides+1):
|
984
984
|
angle = fromAngle + math.radians(angleRange/sides)*i
|
985
|
-
x = math.sin(angle)*radius +
|
986
|
-
y = math.cos(angle)*radius +
|
987
|
-
z =
|
985
|
+
x = math.sin(angle)*radius + Vertex.X(origin)
|
986
|
+
y = math.cos(angle)*radius + Vertex.Y(origin)
|
987
|
+
z = Vertex.Z(origin)
|
988
988
|
xList.append(x)
|
989
989
|
yList.append(y)
|
990
990
|
baseV.append(Vertex.ByCoordinates(x, y, z))
|
@@ -1663,7 +1663,7 @@ class Wire():
|
|
1663
1663
|
|
1664
1664
|
graph = []
|
1665
1665
|
for anEdge in tEdges:
|
1666
|
-
graph.append([vIndex(
|
1666
|
+
graph.append([vIndex(Edge.StartVertex(anEdge), tVertices, tolerance), vIndex(Edge.EndVertex(anEdge), tVertices, tolerance)]) # Hook to Core
|
1667
1667
|
|
1668
1668
|
cycles = []
|
1669
1669
|
resultingCycles = main(graph, cycles, maxVertices)
|
@@ -1952,9 +1952,9 @@ class Wire():
|
|
1952
1952
|
sides = int(math.floor(sides))
|
1953
1953
|
for i in range(sides+1):
|
1954
1954
|
angle = fromAngle + math.radians(angleRange/sides)*i
|
1955
|
-
x = math.sin(angle)*a +
|
1956
|
-
y = math.cos(angle)*b +
|
1957
|
-
z =
|
1955
|
+
x = math.sin(angle)*a + Vertex.X(origin)
|
1956
|
+
y = math.cos(angle)*b + Vertex.Y(origin)
|
1957
|
+
z = Vertex.Z(origin)
|
1958
1958
|
xList.append(x)
|
1959
1959
|
yList.append(y)
|
1960
1960
|
baseV.append(Vertex.ByCoordinates(x, y, z))
|
@@ -1968,8 +1968,8 @@ class Wire():
|
|
1968
1968
|
baseWire = Topology.Translate(baseWire, a, b, 0)
|
1969
1969
|
baseWire = Topology.Orient(baseWire, origin=origin, dirA=[0, 0, 1], dirB=direction)
|
1970
1970
|
# Create a Cluster of the two foci
|
1971
|
-
v1 = Vertex.ByCoordinates(c+
|
1972
|
-
v2 = Vertex.ByCoordinates(-c+
|
1971
|
+
v1 = Vertex.ByCoordinates(c+Vertex.X(origin), 0+Vertex.Y(origin), 0)
|
1972
|
+
v2 = Vertex.ByCoordinates(-c+Vertex.X(origin), 0+Vertex.Y(origin), 0)
|
1973
1973
|
foci = Cluster.ByTopologies([v1, v2])
|
1974
1974
|
if placement.lower() == "lowerleft":
|
1975
1975
|
foci = Topology.Translate(foci, a, b, 0)
|
@@ -2483,18 +2483,18 @@ class Wire():
|
|
2483
2483
|
return False
|
2484
2484
|
|
2485
2485
|
def angleBetweenEdges(e1, e2, tolerance=0.0001):
|
2486
|
-
a =
|
2487
|
-
b =
|
2488
|
-
c =
|
2489
|
-
d = Vertex.Distance(
|
2486
|
+
a = Vertex.X(Edge.EndVertex(e1)) - Vertex.X(Edge.StartVertex(e1))
|
2487
|
+
b = Vertex.Y(Edge.EndVertex(e1)) - Vertex.Y(Edge.StartVertex(e1))
|
2488
|
+
c = Vertex.Z(Edge.EndVertex(e1)) - Vertex.Z(Edge.StartVertex(e1))
|
2489
|
+
d = Vertex.Distance(Edge.EndVertex(e1), Edge.StartVertex(e2))
|
2490
2490
|
if d <= tolerance:
|
2491
|
-
d =
|
2492
|
-
e =
|
2493
|
-
f =
|
2491
|
+
d = Vertex.X(Edge.StartVertex(e2)) - Vertex.X(Edge.EndVertex(e2))
|
2492
|
+
e = Vertex.Y(Edge.StartVertex(e2)) - Vertex.Y(Edge.EndVertex(e2))
|
2493
|
+
f = Vertex.Z(Edge.StartVertex(e2)) - Vertex.Z(Edge.EndVertex(e2))
|
2494
2494
|
else:
|
2495
|
-
d =
|
2496
|
-
e =
|
2497
|
-
f =
|
2495
|
+
d = Vertex.X(Edge.EndVertex(e2)) - Vertex.X(Edge.StartVertex(e2))
|
2496
|
+
e = Vertex.Y(Edge.EndVertex(e2)) - Vertex.Y(Edge.StartVertex(e2))
|
2497
|
+
f = Vertex.Z(Edge.EndVertex(e2)) - Vertex.Z(Edge.StartVertex(e2))
|
2498
2498
|
dotProduct = a*d + b*e + c*f
|
2499
2499
|
modOfVector1 = math.sqrt( a*a + b*b + c*c)*math.sqrt(d*d + e*e + f*f)
|
2500
2500
|
angle = dotProduct/modOfVector1
|
@@ -2538,7 +2538,6 @@ class Wire():
|
|
2538
2538
|
return True
|
2539
2539
|
return False
|
2540
2540
|
|
2541
|
-
|
2542
2541
|
@staticmethod
|
2543
2542
|
def IShape(origin=None,
|
2544
2543
|
width=1,
|
@@ -3318,7 +3317,7 @@ class Wire():
|
|
3318
3317
|
return None
|
3319
3318
|
if not direction:
|
3320
3319
|
direction = -1*Face.Normal(face, outputType="xyz", mantissa=mantissa)
|
3321
|
-
large_face = Topology.Scale(face,
|
3320
|
+
large_face = Topology.Scale(face, Topology.CenterOfMass(face), 500, 500, 500)
|
3322
3321
|
edges = []
|
3323
3322
|
_ = wire.Edges(None, edges)
|
3324
3323
|
projected_edges = []
|
@@ -3328,8 +3327,8 @@ class Wire():
|
|
3328
3327
|
for edge in edges:
|
3329
3328
|
if edge:
|
3330
3329
|
if (Topology.Type(edge) == Topology.TypeID("Edge")):
|
3331
|
-
sv =
|
3332
|
-
ev =
|
3330
|
+
sv = Edge.StartVertex(edge)
|
3331
|
+
ev = Edge.EndVertex(edge)
|
3333
3332
|
|
3334
3333
|
psv = Vertex.Project(vertex=sv, face=large_face, direction=direction)
|
3335
3334
|
pev = Vertex.Project(vertex=ev, face=large_face, direction=direction)
|
@@ -3404,10 +3403,10 @@ class Wire():
|
|
3404
3403
|
xOffset = -width*0.5
|
3405
3404
|
yOffset = -length*0.5
|
3406
3405
|
|
3407
|
-
vb1 = Vertex.ByCoordinates(
|
3408
|
-
vb2 = Vertex.ByCoordinates(
|
3409
|
-
vb3 = Vertex.ByCoordinates(
|
3410
|
-
vb4 = Vertex.ByCoordinates(
|
3406
|
+
vb1 = Vertex.ByCoordinates(Vertex.X(origin)-width*0.5+xOffset,Vertex.Y(origin)-length*0.5+yOffset,Vertex.Z(origin))
|
3407
|
+
vb2 = Vertex.ByCoordinates(Vertex.X(origin)+width*0.5+xOffset,Vertex.Y(origin)-length*0.5+yOffset,Vertex.Z(origin))
|
3408
|
+
vb3 = Vertex.ByCoordinates(Vertex.X(origin)+width*0.5+xOffset,Vertex.Y(origin)+length*0.5+yOffset,Vertex.Z(origin))
|
3409
|
+
vb4 = Vertex.ByCoordinates(Vertex.X(origin)-width*0.5+xOffset,Vertex.Y(origin)+length*0.5+yOffset,Vertex.Z(origin))
|
3411
3410
|
|
3412
3411
|
baseWire = Wire.ByVertices([vb1, vb2, vb3, vb4], True)
|
3413
3412
|
if direction != [0, 0, 1]:
|
@@ -3628,6 +3627,88 @@ class Wire():
|
|
3628
3627
|
else:
|
3629
3628
|
return wire
|
3630
3629
|
|
3630
|
+
@staticmethod
|
3631
|
+
def Representation(wire, normalize: bool = True, rotate: bool = True, mantissa: int = 6, tolerance: float = 0.0001):
|
3632
|
+
"""
|
3633
|
+
Returns a normalized representation of a closed wire with alternating edge lengths and interior angles.
|
3634
|
+
|
3635
|
+
Parameters
|
3636
|
+
----------
|
3637
|
+
wire : topologic_core.Wire
|
3638
|
+
The input wire.
|
3639
|
+
normalize : bool , optional
|
3640
|
+
If set to True, the lengths in the list are normalized so that the shortest edge has a length of 1. the default is True.
|
3641
|
+
rotate : bool , optional
|
3642
|
+
If set to True, the list is rotated such that the shortest edge appears first.
|
3643
|
+
mantissa : int , optional
|
3644
|
+
The desired length of the mantissa. The default is 6.
|
3645
|
+
tolerance : float , optional
|
3646
|
+
The desired tolerance. The default is 0.0001.
|
3647
|
+
|
3648
|
+
Returns
|
3649
|
+
-------
|
3650
|
+
list
|
3651
|
+
The representation list.
|
3652
|
+
|
3653
|
+
"""
|
3654
|
+
from topologicpy.Vertex import Vertex
|
3655
|
+
from topologicpy.Edge import Edge
|
3656
|
+
import math
|
3657
|
+
|
3658
|
+
def angleBetweenEdges(e1, e2, tolerance=0.0001):
|
3659
|
+
a = Vertex.X(Edge.EndVertex(e1)) - Vertex.X(Edge.StartVertex(e1))
|
3660
|
+
b = Vertex.Y(Edge.EndVertex(e1)) - Vertex.Y(Edge.StartVertex(e1))
|
3661
|
+
c = Vertex.Z(Edge.EndVertex(e1)) - Vertex.Z(Edge.StartVertex(e1))
|
3662
|
+
d = Vertex.Distance(Edge.EndVertex(e1), Edge.StartVertex(e2))
|
3663
|
+
if d <= tolerance:
|
3664
|
+
d = Vertex.X(Edge.StartVertex(e2)) - Vertex.X(Edge.EndVertex(e2))
|
3665
|
+
e = Vertex.Y(Edge.StartVertex(e2)) - Vertex.Y(Edge.EndVertex(e2))
|
3666
|
+
f = Vertex.Z(Edge.StartVertex(e2)) - Vertex.Z(Edge.EndVertex(e2))
|
3667
|
+
else:
|
3668
|
+
d = Vertex.X(Edge.EndVertex(e2)) - Vertex.X(Edge.StartVertex(e2))
|
3669
|
+
e = Vertex.Y(Edge.EndVertex(e2)) - Vertex.Y(Edge.StartVertex(e2))
|
3670
|
+
f = Vertex.Z(Edge.EndVertex(e2)) - Vertex.Z(Edge.StartVertex(e2))
|
3671
|
+
dotProduct = a*d + b*e + c*f
|
3672
|
+
modOfVector1 = math.sqrt( a*a + b*b + c*c)*math.sqrt(d*d + e*e + f*f)
|
3673
|
+
angle = dotProduct/modOfVector1
|
3674
|
+
angleInDegrees = math.degrees(math.acos(angle))
|
3675
|
+
return angleInDegrees
|
3676
|
+
|
3677
|
+
def getInteriorAngles(edges, tolerance=0.0001):
|
3678
|
+
angles = []
|
3679
|
+
for i in range(len(edges)-1):
|
3680
|
+
e1 = edges[i]
|
3681
|
+
e2 = edges[i+1]
|
3682
|
+
angles.append(angleBetweenEdges(e1, e2, tolerance=tolerance))
|
3683
|
+
return angles
|
3684
|
+
|
3685
|
+
def rotate_list_to_minimum(nums):
|
3686
|
+
if not nums:
|
3687
|
+
return nums # Return the empty list as-is
|
3688
|
+
|
3689
|
+
min_index = nums.index(min(nums))
|
3690
|
+
return nums[min_index:] + nums[:min_index]
|
3691
|
+
|
3692
|
+
def getRep(edges, normalize=True, rotate=True, tolerance=0.0001):
|
3693
|
+
angles = getInteriorAngles(edges, tolerance=tolerance)
|
3694
|
+
lengths = []
|
3695
|
+
normalizedLengths = []
|
3696
|
+
for anEdge in edges:
|
3697
|
+
lengths.append(Edge.Length(anEdge))
|
3698
|
+
if normalize == True:
|
3699
|
+
minLength = min(lengths)
|
3700
|
+
else:
|
3701
|
+
minLength = 1
|
3702
|
+
for aLength in lengths:
|
3703
|
+
normalizedLengths.append(aLength/minLength)
|
3704
|
+
if rotate == True:
|
3705
|
+
return rotate_list_to_minimum([x for x in itertools.chain(*itertools.zip_longest(normalizedLengths, angles)) if x is not None])
|
3706
|
+
return [x for x in itertools.chain(*itertools.zip_longest(normalizedLengths, angles)) if x is not None]
|
3707
|
+
|
3708
|
+
edges = Topology.Edges(wire)
|
3709
|
+
return_list = [round(x, mantissa) for x in getRep(edges, normalize=normalize, rotate=rotate, tolerance=tolerance)]
|
3710
|
+
return return_list
|
3711
|
+
|
3631
3712
|
@staticmethod
|
3632
3713
|
def Reverse(wire, transferDictionaries = False, tolerance: float = 0.0001):
|
3633
3714
|
"""
|
@@ -3752,7 +3833,7 @@ class Wire():
|
|
3752
3833
|
eb_vertices = Topology.Vertices(eb_wire)
|
3753
3834
|
if normal[2] > 0:
|
3754
3835
|
eb_vertices = list(reversed(eb_vertices))
|
3755
|
-
eb_polygon_coordinates = [(
|
3836
|
+
eb_polygon_coordinates = [(Vertex.X(v), Vertex.Y(v), Vertex.Z(v)) for v in eb_vertices]
|
3756
3837
|
eb_polygonxy = [(x[0], x[1]) for x in eb_polygon_coordinates]
|
3757
3838
|
|
3758
3839
|
ib_polygonsxy = []
|
@@ -3761,7 +3842,7 @@ class Wire():
|
|
3761
3842
|
ib_vertices = Topology.Vertices(ib_wire)
|
3762
3843
|
if normal[2] > 0:
|
3763
3844
|
ib_vertices = list(reversed(ib_vertices))
|
3764
|
-
ib_polygon_coordinates = [(
|
3845
|
+
ib_polygon_coordinates = [(Vertex.X(v), Vertex.Y(v), Vertex.Z(v)) for v in ib_vertices]
|
3765
3846
|
ib_polygonxy = [(x[0], x[1]) for x in ib_polygon_coordinates]
|
3766
3847
|
ib_polygonsxy.append(ib_polygonxy)
|
3767
3848
|
zero_coordinates += ib_polygon_coordinates
|
@@ -3828,12 +3909,12 @@ class Wire():
|
|
3828
3909
|
|
3829
3910
|
def perpendicular_distance(point, line_start, line_end):
|
3830
3911
|
# Calculate the perpendicular distance from a point to a line segment
|
3831
|
-
x0 =
|
3832
|
-
y0 =
|
3833
|
-
x1 =
|
3834
|
-
y1 =
|
3835
|
-
x2 =
|
3836
|
-
y2 =
|
3912
|
+
x0 = Vertex.X(point)
|
3913
|
+
y0 = Vertex.Y(point)
|
3914
|
+
x1 = Vertex.X(line_start)
|
3915
|
+
y1 = Vertex.Y(line_start)
|
3916
|
+
x2 = Vertex.X(line_end)
|
3917
|
+
y2 = Vertex.Y(line_end)
|
3837
3918
|
|
3838
3919
|
numerator = abs((y2 - y1) * x0 - (x2 - x1) * y0 + x2 * y1 - y2 * x1)
|
3839
3920
|
denominator = Vertex.Distance(line_start, line_end)
|
@@ -3880,7 +3961,7 @@ class Wire():
|
|
3880
3961
|
# Calculate the effective area for each point except the first and last
|
3881
3962
|
def effective_area(p1, p2, p3):
|
3882
3963
|
# Triangle area formed by p1, p2, and p3
|
3883
|
-
return 0.5 * abs(
|
3964
|
+
return 0.5 * abs(Vertex.X(p1) * (Vertex.Y(p2) - Vertex.Y(p3)) + Vertex.X(p2) * (Vertex.Y(p3) - Vertex.Y(p1)) + Vertex.X(p3) * (Vertex.Y(p1) - Vertex.Y(p2)))
|
3884
3965
|
|
3885
3966
|
# Keep track of effective areas
|
3886
3967
|
areas = [None] # First point has no area
|
@@ -4358,9 +4439,9 @@ class Wire():
|
|
4358
4439
|
else:
|
4359
4440
|
radius = radiusB
|
4360
4441
|
angle = math.radians(360/sides)*i
|
4361
|
-
x = math.sin(angle)*radius +
|
4362
|
-
y = math.cos(angle)*radius +
|
4363
|
-
z =
|
4442
|
+
x = math.sin(angle)*radius + Vertex.X(origin)
|
4443
|
+
y = math.cos(angle)*radius + Vertex.Y(origin)
|
4444
|
+
z = Vertex.Z(origin)
|
4364
4445
|
xList.append(x)
|
4365
4446
|
yList.append(y)
|
4366
4447
|
baseV.append([x, y])
|
@@ -4368,29 +4449,29 @@ class Wire():
|
|
4368
4449
|
if placement.lower() == "lowerleft":
|
4369
4450
|
xmin = min(xList)
|
4370
4451
|
ymin = min(yList)
|
4371
|
-
xOffset =
|
4372
|
-
yOffset =
|
4452
|
+
xOffset = Vertex.X(origin) - xmin
|
4453
|
+
yOffset = Vertex.Y(origin) - ymin
|
4373
4454
|
elif placement.lower() == "upperleft":
|
4374
4455
|
xmin = min(xList)
|
4375
4456
|
ymax = max(yList)
|
4376
|
-
xOffset =
|
4377
|
-
yOffset =
|
4457
|
+
xOffset = Vertex.X(origin) - xmin
|
4458
|
+
yOffset = Vertex.Y(origin) - ymax
|
4378
4459
|
elif placement.lower() == "lowerright":
|
4379
4460
|
xmax = max(xList)
|
4380
4461
|
ymin = min(yList)
|
4381
|
-
xOffset =
|
4382
|
-
yOffset =
|
4462
|
+
xOffset = Vertex.X(origin) - xmax
|
4463
|
+
yOffset = Vertex.Y(origin) - ymin
|
4383
4464
|
elif placement.lower() == "upperright":
|
4384
4465
|
xmax = max(xList)
|
4385
4466
|
ymax = max(yList)
|
4386
|
-
xOffset =
|
4387
|
-
yOffset =
|
4467
|
+
xOffset = Vertex.X(origin) - xmax
|
4468
|
+
yOffset = Vertex.Y(origin) - ymax
|
4388
4469
|
else:
|
4389
4470
|
xOffset = 0
|
4390
4471
|
yOffset = 0
|
4391
4472
|
tranBase = []
|
4392
4473
|
for coord in baseV:
|
4393
|
-
tranBase.append(Vertex.ByCoordinates(coord[0]+xOffset, coord[1]+yOffset,
|
4474
|
+
tranBase.append(Vertex.ByCoordinates(coord[0]+xOffset, coord[1]+yOffset, Vertex.Z(origin)))
|
4394
4475
|
|
4395
4476
|
baseWire = Wire.ByVertices(tranBase, True)
|
4396
4477
|
baseWire = Wire.Reverse(baseWire)
|
@@ -4501,10 +4582,10 @@ class Wire():
|
|
4501
4582
|
xOffset = -(max((widthA*0.5 + offsetA), (widthB*0.5 + offsetB)))
|
4502
4583
|
yOffset = -length*0.5
|
4503
4584
|
|
4504
|
-
vb1 = Vertex.ByCoordinates(
|
4505
|
-
vb2 = Vertex.ByCoordinates(
|
4506
|
-
vb3 = Vertex.ByCoordinates(
|
4507
|
-
vb4 = Vertex.ByCoordinates(
|
4585
|
+
vb1 = Vertex.ByCoordinates(Vertex.X(origin)-widthA*0.5+offsetA+xOffset,Vertex.Y(origin)-length*0.5+yOffset,Vertex.Z(origin))
|
4586
|
+
vb2 = Vertex.ByCoordinates(Vertex.X(origin)+widthA*0.5+offsetA+xOffset,Vertex.Y(origin)-length*0.5+yOffset,Vertex.Z(origin))
|
4587
|
+
vb3 = Vertex.ByCoordinates(Vertex.X(origin)+widthB*0.5+offsetB+xOffset,Vertex.Y(origin)+length*0.5+yOffset,Vertex.Z(origin))
|
4588
|
+
vb4 = Vertex.ByCoordinates(Vertex.X(origin)-widthB*0.5++offsetB+xOffset,Vertex.Y(origin)+length*0.5+yOffset,Vertex.Z(origin))
|
4508
4589
|
|
4509
4590
|
baseWire = Wire.ByVertices([vb1, vb2, vb3, vb4], True)
|
4510
4591
|
if direction != [0, 0, 1]:
|
topologicpy/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = '0.7.
|
1
|
+
__version__ = '0.7.97'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: topologicpy
|
3
|
-
Version: 0.7.
|
3
|
+
Version: 0.7.97
|
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
|
@@ -1,36 +1,36 @@
|
|
1
1
|
topologicpy/ANN.py,sha256=m_WxD1lgQqDhUpaM20Lia6TmJACDYaAE96wigsi-99U,47932
|
2
2
|
topologicpy/Aperture.py,sha256=p9pUzTQSBWoUaDiug1V1R1hnEIEwYSXFg2t7iRAmNRY,2723
|
3
3
|
topologicpy/BVH.py,sha256=mKVCAu9K8qzcWXtPDVH5usXZV1DNNNJl4n3rU5Lh1ZM,12931
|
4
|
-
topologicpy/Cell.py,sha256=
|
5
|
-
topologicpy/CellComplex.py,sha256
|
4
|
+
topologicpy/Cell.py,sha256=o5CxsBXxtnV439I4f8VMUoDMVwO5o3q0lHinHHMSmFg,108571
|
5
|
+
topologicpy/CellComplex.py,sha256=-s8RKGa2H1eqLO7g6qyQvvuFMFJ0aIgXvIr9kOVgpjA,51608
|
6
6
|
topologicpy/Cluster.py,sha256=__PvNVjRnFfy12aawd7HSrb3UBX3Rtd1iWSSQnPGpfk,55768
|
7
7
|
topologicpy/Color.py,sha256=q9xsGmxFMz7sQKmygwSVS12GaTRB-OT0-_i6t3-cthE,20307
|
8
8
|
topologicpy/Context.py,sha256=ppApYKngZZCQBFWaxIMi2z2dokY23c935IDCBosxDAE,3055
|
9
|
-
topologicpy/DGL.py,sha256=
|
9
|
+
topologicpy/DGL.py,sha256=M_znFtyPBJJz-iXLYZs2wwBj24fhevIo739dGha0chM,139041
|
10
10
|
topologicpy/Dictionary.py,sha256=t0O7Du-iPq46FyKqZfcjHfsUK1E8GS_e67R2V5cpkbw,33186
|
11
|
-
topologicpy/Edge.py,sha256=
|
12
|
-
topologicpy/EnergyModel.py,sha256=
|
11
|
+
topologicpy/Edge.py,sha256=gaLqyjFOqFHpw69Ftr4rc-kvakYpauQwhOK4ZO-V35g,67287
|
12
|
+
topologicpy/EnergyModel.py,sha256=UoQ9Jm-hYsN383CbcLKw-y6BKitRHj0uyh84yQ-8ACg,53856
|
13
13
|
topologicpy/Face.py,sha256=wczXpMcfub8Eb10lA4rrXksvi5YYCbRjBdp3lOTUwK0,172618
|
14
|
-
topologicpy/Graph.py,sha256=
|
14
|
+
topologicpy/Graph.py,sha256=tAm-kvvHAgadPJIcXvqgEoMuAdAo3RS3mu9uhhgx7TI,460497
|
15
15
|
topologicpy/Grid.py,sha256=2s9cSlWldivn1i9EUz4OOokJyANveqmRe_vR93CAndI,18245
|
16
16
|
topologicpy/Helper.py,sha256=F3h4_qcOD_PHAoVe0tEbEE7_jYyVcaHjtwVs4QHOZuI,23978
|
17
|
-
topologicpy/Honeybee.py,sha256=
|
17
|
+
topologicpy/Honeybee.py,sha256=Y_El6M8x3ixvvIe_VcRiwj_4C89ZZg5_WlT7adbCkpw,21849
|
18
18
|
topologicpy/Matrix.py,sha256=umgR7An919-wGInXJ1wpqnoQ2jCPdyMe2rcWTZ16upk,8079
|
19
|
-
topologicpy/Neo4j.py,sha256=
|
19
|
+
topologicpy/Neo4j.py,sha256=BKOF29fRgXmdpMGkrNzuYbyqgCJ6ElPPMYlfTxXiVbc,22392
|
20
20
|
topologicpy/Plotly.py,sha256=Tvo0_zKVEHtPhsMNNvLy5G0HIys5FPAOyp_o4QN_I_A,115760
|
21
21
|
topologicpy/Polyskel.py,sha256=EFsuh2EwQJGPLiFUjvtXmAwdX-A4r_DxP5hF7Qd3PaU,19829
|
22
22
|
topologicpy/PyG.py,sha256=LU9LCCzjxGPUM31qbaJXZsTvniTtgugxJY7y612t4A4,109757
|
23
|
-
topologicpy/Shell.py,sha256=
|
23
|
+
topologicpy/Shell.py,sha256=fLRnQ79vtdBDRW1Xn8Gaap34XheGbw7UBFd-ALJ2Y1g,87978
|
24
24
|
topologicpy/Speckle.py,sha256=AlsGlSDuKRtX5jhVsPNSSjjbZis079HbUchDH_5RJmE,18187
|
25
25
|
topologicpy/Sun.py,sha256=42tDWMYpwRG7Z2Qjtp94eRgBuqySq7k8TgNUZDK7QxQ,36837
|
26
|
-
topologicpy/Topology.py,sha256=
|
26
|
+
topologicpy/Topology.py,sha256=kAnJrVyrwJX8c-C4q1cewJ80byG8uaoBWUuk0T6U4SY,441788
|
27
27
|
topologicpy/Vector.py,sha256=Cl7besf20cAGmyNPh-9gbFAHnRU5ZWSMChJ3VyFIDs4,35416
|
28
|
-
topologicpy/Vertex.py,sha256=
|
29
|
-
topologicpy/Wire.py,sha256=
|
28
|
+
topologicpy/Vertex.py,sha256=QkeNPFTX-adKhEHMole0et9FCy0xXmTHVcmsYqqotSw,73904
|
29
|
+
topologicpy/Wire.py,sha256=bX8wO96gFa7HZPY0CFlmYQBOUP_1e0jCb02BPxaY-ao,222981
|
30
30
|
topologicpy/__init__.py,sha256=vlPCanUbxe5NifC4pHcnhSzkmmYcs_UrZrTlVMsxcFs,928
|
31
|
-
topologicpy/version.py,sha256=
|
32
|
-
topologicpy-0.7.
|
33
|
-
topologicpy-0.7.
|
34
|
-
topologicpy-0.7.
|
35
|
-
topologicpy-0.7.
|
36
|
-
topologicpy-0.7.
|
31
|
+
topologicpy/version.py,sha256=eF2oD9YC4qAbKpy4BgX03mi3PRuOcHb_V4K8lN5jAn0,23
|
32
|
+
topologicpy-0.7.97.dist-info/LICENSE,sha256=FK0vJ73LuE8PYJAn7LutsReWR47-Ooovw2dnRe5yV6Q,681
|
33
|
+
topologicpy-0.7.97.dist-info/METADATA,sha256=pingqvbKxBUf-eX6CrZQCoIyEV1tduXqvZwpol4DDuQ,10513
|
34
|
+
topologicpy-0.7.97.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
35
|
+
topologicpy-0.7.97.dist-info/top_level.txt,sha256=J30bDzW92Ob7hw3zA8V34Jlp-vvsfIkGzkr8sqvb4Uw,12
|
36
|
+
topologicpy-0.7.97.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|