Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
stl_text = stl_file.readlines()
# Initial Conditions
triangles = []
vertices = []
normal = None
# For every line in the file
for line in stl_text:
file_line = line.split()
# If blank line (skip)
if not file_line:
pass
# If a face
elif file_line[0] == b'facet':
normal = vec(
float(file_line[2]),
float(file_line[3]),
float(file_line[4])
)
# If a vertex
elif file_line[0] == b'vertex':
vertices.append(
vertex(
pos=vec(
float(file_line[1]),
float(file_line[2]),
float(file_line[3])
),
normal=normal,
color=color.white
)
for p in network.Ps:
r = network[Psize][p]/2
xyz = network['pore.coords'][p]
c = Pcolor[p]
sphere(pos=vec(*xyz), radius=r, color=c,
shininess=.5)
for t in network.Ts:
head = network['throat.endpoints.head'][t]
tail = network['throat.endpoints.tail'][t]
v = tail - head
r = network[Tsize][t]
L = sp.sqrt(sp.sum((head-tail)**2))
c = Tcolor[t]
cylinder(pos=vec(*head), axis=vec(*v), opacity=1, size=vec(L, r, r),
color=c)
return scene
if Pcolor is None:
Pcolor = [vec(230/255, 57/255, 0/255)]*network.Np
else:
a = cmap(network[Pcolor]/network[Pcolor].max())
Pcolor = [vec(row[0], row[1], row[2]) for row in a]
if Tcolor is None:
Tcolor = [vec(51/255, 153/255, 255/255)]*network.Nt
else:
a = cmap(network[Tcolor]/network[Tcolor].max())
Tcolor = [vec(row[0], row[1], row[2]) for row in a]
# Set default values for canvas properties
if 'background' not in kwargs.keys():
kwargs['background'] = vec(1.0, 1.0, 1.0)
if 'height' not in kwargs.keys():
kwargs['height'] = 500
if 'width' not in kwargs.keys():
kwargs['width'] = 800
# Parse any given values for canvas properties
for item in kwargs.keys():
try:
kwargs[item] = vec(*kwargs[item])
except TypeError:
pass
scene = canvas(title=network.name, **kwargs)
for p in network.Ps:
r = network[Psize][p]/2
xyz = network['pore.coords'][p]
c = Pcolor[p]
if t not in rings:
rings[t] = []
if t in tr:
if tr[t] not in rings[t]:
rings[t].append(tr[t])
tr3d[i].append(rings[t].index(tr[t]))
else:
rings[t].append(("unk", -1))
tr3d[i].append(len(rings[t]) - 1)
for t in rings:
r = rings[t]
tmp_len = len(r)
for i in range(tmp_len):
if r[i][1] == -1:
col = vpython.vec(0.75, 0.75, 0.75)
elif r[i][1]:
col = vpython.color.green
else:
col = vpython.color.blue
s = IPsphere(pos=vpython.vec((tmp_len - 1) * vpython.cos(2 * i * vpython.pi / tmp_len), (tmp_len - 1) * vpython.sin(2 * i * vpython.pi / tmp_len), 2 * t), # noqa: E501
ip=r[i][0],
color=col)
for trlst in six.itervalues(tr3d):
if t <= len(trlst):
if trlst[t - 1] == i:
trlst[t - 1] = s
forecol = colgen(0.625, 0.4375, 0.25, 0.125)
for trlst in six.itervalues(tr3d):
col = vpython.vec(*next(forecol))
start = vpython.vec(0, 0, 0)
elif r[i][1]:
col = vpython.color.green
else:
col = vpython.color.blue
s = IPsphere(pos=vpython.vec((tmp_len - 1) * vpython.cos(2 * i * vpython.pi / tmp_len), (tmp_len - 1) * vpython.sin(2 * i * vpython.pi / tmp_len), 2 * t), # noqa: E501
ip=r[i][0],
color=col)
for trlst in six.itervalues(tr3d):
if t <= len(trlst):
if trlst[t - 1] == i:
trlst[t - 1] = s
forecol = colgen(0.625, 0.4375, 0.25, 0.125)
for trlst in six.itervalues(tr3d):
col = vpython.vec(*next(forecol))
start = vpython.vec(0, 0, 0)
for ip in trlst:
vpython.cylinder(pos=start, axis=ip.pos - start, color=col, radius=0.2) # noqa: E501
start = ip.pos
vpython.rate(50)
# Keys handling
# TODO: there is currently no way of closing vpython correctly
# https://github.com/BruceSherwood/vpython-jupyter/issues/36
# def keyboard_press(ev):
# k = ev.key
# if k == "esc" or k == "q":
# pass # TODO: close
#
# vpython.scene.bind('keydown', keyboard_press)
else:
rings[t].append(("unk", -1))
tr3d[i].append(len(rings[t]) - 1)
for t in rings:
r = rings[t]
tmp_len = len(r)
for i in range(tmp_len):
if r[i][1] == -1:
col = vpython.vec(0.75, 0.75, 0.75)
elif r[i][1]:
col = vpython.color.green
else:
col = vpython.color.blue
s = IPsphere(pos=vpython.vec((tmp_len - 1) * vpython.cos(2 * i * vpython.pi / tmp_len), (tmp_len - 1) * vpython.sin(2 * i * vpython.pi / tmp_len), 2 * t), # noqa: E501
ip=r[i][0],
color=col)
for trlst in six.itervalues(tr3d):
if t <= len(trlst):
if trlst[t - 1] == i:
trlst[t - 1] = s
forecol = colgen(0.625, 0.4375, 0.25, 0.125)
for trlst in six.itervalues(tr3d):
col = vpython.vec(*next(forecol))
start = vpython.vec(0, 0, 0)
for ip in trlst:
vpython.cylinder(pos=start, axis=ip.pos - start, color=col, radius=0.2) # noqa: E501
start = ip.pos
vpython.rate(50)
if t not in rings:
rings[t] = []
if t in tr:
if tr[t] not in rings[t]:
rings[t].append(tr[t])
tr3d[i].append(rings[t].index(tr[t]))
else:
rings[t].append(("unk", -1))
tr3d[i].append(len(rings[t]) - 1)
for t in rings:
r = rings[t]
tmp_len = len(r)
for i in range(tmp_len):
if r[i][1] == -1:
col = vpython.vec(0.75, 0.75, 0.75)
elif r[i][1]:
col = vpython.color.green
else:
col = vpython.color.blue
s = IPsphere(pos=vpython.vec((tmp_len - 1) * vpython.cos(2 * i * vpython.pi / tmp_len), (tmp_len - 1) * vpython.sin(2 * i * vpython.pi / tmp_len), 2 * t), # noqa: E501
ip=r[i][0],
color=col)
for trlst in six.itervalues(tr3d):
if t <= len(trlst):
if trlst[t - 1] == i:
trlst[t - 1] = s
forecol = colgen(0.625, 0.4375, 0.25, 0.125)
for trlst in six.itervalues(tr3d):
col = vpython.vec(*next(forecol))
start = vpython.vec(0, 0, 0)
col = vpython.vec(0.75, 0.75, 0.75)
elif r[i][1]:
col = vpython.color.green
else:
col = vpython.color.blue
s = IPsphere(pos=vpython.vec((tmp_len - 1) * vpython.cos(2 * i * vpython.pi / tmp_len), (tmp_len - 1) * vpython.sin(2 * i * vpython.pi / tmp_len), 2 * t), # noqa: E501
ip=r[i][0],
color=col)
for trlst in six.itervalues(tr3d):
if t <= len(trlst):
if trlst[t - 1] == i:
trlst[t - 1] = s
forecol = colgen(0.625, 0.4375, 0.25, 0.125)
for trlst in six.itervalues(tr3d):
col = vpython.vec(*next(forecol))
start = vpython.vec(0, 0, 0)
for ip in trlst:
vpython.cylinder(pos=start, axis=ip.pos - start, color=col, radius=0.2) # noqa: E501
start = ip.pos
vpython.rate(50)
# Keys handling
# TODO: there is currently no way of closing vpython correctly
# https://github.com/BruceSherwood/vpython-jupyter/issues/36
# def keyboard_press(ev):
# k = ev.key
# if k == "esc" or k == "q":
# pass # TODO: close
#
# vpython.scene.bind('keydown', keyboard_press)
col = vpython.vec(0.75, 0.75, 0.75)
elif r[i][1]:
col = vpython.color.green
else:
col = vpython.color.blue
s = IPsphere(pos=vpython.vec((tmp_len - 1) * vpython.cos(2 * i * vpython.pi / tmp_len), (tmp_len - 1) * vpython.sin(2 * i * vpython.pi / tmp_len), 2 * t), # noqa: E501
ip=r[i][0],
color=col)
for trlst in six.itervalues(tr3d):
if t <= len(trlst):
if trlst[t - 1] == i:
trlst[t - 1] = s
forecol = colgen(0.625, 0.4375, 0.25, 0.125)
for trlst in six.itervalues(tr3d):
col = vpython.vec(*next(forecol))
start = vpython.vec(0, 0, 0)
for ip in trlst:
vpython.cylinder(pos=start, axis=ip.pos - start, color=col, radius=0.2) # noqa: E501
start = ip.pos
vpython.rate(50)
# Keys handling
# TODO: there is currently no way of closing vpython correctly
# https://github.com/BruceSherwood/vpython-jupyter/issues/36
# def keyboard_press(ev):
# k = ev.key
# if k == "esc" or k == "q":
# pass # TODO: close
#
# vpython.scene.bind('keydown', keyboard_press)