TrayLayout: Take true width of edges into account
for the base plate. Don't assume a width of one thickness as this fails if extra_length is used in the FingerJoint Settings. Resolves: #557
This commit is contained in:
parent
bbd30ec8d1
commit
aadae07278
|
@ -288,30 +288,33 @@ You can replace the space characters representing the floor by a "X" to remove t
|
||||||
lx = len(self.x)
|
lx = len(self.x)
|
||||||
ly = len(self.y)
|
ly = len(self.y)
|
||||||
t = self.thickness
|
t = self.thickness
|
||||||
|
w = self.edges["F"].startwidth()
|
||||||
b = self.burn
|
b = self.burn
|
||||||
t2 = self.thickness / 2.0
|
t2 = self.thickness / 2.0
|
||||||
|
|
||||||
tw, th = sum(self.x) + (lx + 1) * t, sum(self.y) + (ly + 1) * t
|
tw = sum(self.x) + (lx - 1) * t + 2 * w
|
||||||
|
th = sum(self.y) + (ly - 1) * t + 2 * w
|
||||||
|
|
||||||
if self.move(tw, th, move, True):
|
if self.move(tw, th, move, True):
|
||||||
return
|
return
|
||||||
|
|
||||||
for i, (x, y, a) in enumerate((
|
for i, (x, y, a) in enumerate((
|
||||||
(t, t + b, 0),
|
(w, w + b, 0),
|
||||||
(tw - t, t + b, 90),
|
(tw - w, w + b, 90),
|
||||||
(tw - t, th - t + b, 180),
|
(tw - w, th - w + b, 180),
|
||||||
(t, th - t + b, 270))):
|
(w, th - w + b, 270))):
|
||||||
self.cc(callback, i, x, y, a)
|
self.cc(callback, i, x, y, a)
|
||||||
|
|
||||||
# Horizontal lines
|
# Horizontal lines
|
||||||
posy = 0
|
posy = w - t
|
||||||
for y in range(ly, -1, -1):
|
for y in range(ly, -1, -1):
|
||||||
posx = self.thickness
|
posx = w
|
||||||
for x in range(lx):
|
for x in range(lx):
|
||||||
if self.hwalls[y][x]:
|
if self.hwalls[y][x]:
|
||||||
e = "F"
|
e = "F"
|
||||||
else:
|
else:
|
||||||
e = "e"
|
e = "e"
|
||||||
|
|
||||||
if y < ly and self.floors[y][x]:
|
if y < ly and self.floors[y][x]:
|
||||||
if y > 0 and self.floors[y - 1][x]:
|
if y > 0 and self.floors[y - 1][x]:
|
||||||
# Inside Wall
|
# Inside Wall
|
||||||
|
@ -319,25 +322,30 @@ You can replace the space characters representing the floor by a "X" to remove t
|
||||||
self.fingerHolesAt(posx, posy + t2, self.x[x], angle=0)
|
self.fingerHolesAt(posx, posy + t2, self.x[x], angle=0)
|
||||||
else:
|
else:
|
||||||
# Top edge
|
# Top edge
|
||||||
self.edgeAt(e, posx + self.x[x], posy + t + b, self.x[x],
|
self.edgeAt(e, posx + self.x[x],
|
||||||
|
posy + w + b, self.x[x],
|
||||||
-180)
|
-180)
|
||||||
if x == 0 or y == 0 or not self.floors[y - 1][x - 1]:
|
if x == 0 or not self.floors[y][x - 1]:
|
||||||
self.edgeAt("e", posx, posy + t + b, t, -180)
|
self.edgeAt("e", posx - w, posy + w + b, w, 0)
|
||||||
if x == lx - 1 or y == 0 or not self.floors[y - 1][x + 1]:
|
elif y == 0 or not self.floors[y - 1][x - 1]:
|
||||||
self.edgeAt("e", posx + self.x[x] + t, posy + t + b, t, -180)
|
self.edgeAt("e", posx - t, posy + w + b, t, 0)
|
||||||
|
if x == lx - 1 or not self.floors[y][x + 1]:
|
||||||
|
self.edgeAt("e", posx + self.x[x], posy + w + b, w, 0)
|
||||||
elif y > 0 and self.floors[y - 1][x]:
|
elif y > 0 and self.floors[y - 1][x]:
|
||||||
# Bottom Edge
|
# Bottom Edge
|
||||||
self.edgeAt(e, posx, posy - b, self.x[x])
|
self.edgeAt(e, posx, posy - b + t - w, self.x[x])
|
||||||
if x == 0 or y == ly or not self.floors[y][x - 1]:
|
if x == 0 or not self.floors[y-1][x - 1]:
|
||||||
self.edgeAt("e", posx - t, posy - b, t)
|
self.edgeAt("e", posx - w, posy + t - w - b, w)
|
||||||
if x == lx - 1 or y == ly or not self.floors[y][x + 1]:
|
elif x == 0 or y == ly or not self.floors[y][x - 1]:
|
||||||
self.edgeAt("e", posx + self.x[x], posy - b, t)
|
self.edgeAt("e", posx - t, posy + t - w - b, t)
|
||||||
|
if x == lx - 1 or y == 0 or not self.floors[y-1][x + 1]:
|
||||||
|
self.edgeAt("e", posx + self.x[x], posy + t -w - b, w)
|
||||||
posx += self.x[x] + self.thickness
|
posx += self.x[x] + self.thickness
|
||||||
posy += self.y[y - 1] + self.thickness
|
posy += self.y[y - 1] + self.thickness
|
||||||
|
|
||||||
posx = 0
|
posx = w - t
|
||||||
for x in range(lx + 1):
|
for x in range(lx + 1):
|
||||||
posy = self.thickness
|
posy = w
|
||||||
for y in range(ly - 1, -1, -1):
|
for y in range(ly - 1, -1, -1):
|
||||||
if self.vwalls[y][x]:
|
if self.vwalls[y][x]:
|
||||||
e = "F"
|
e = "F"
|
||||||
|
@ -350,18 +358,24 @@ You can replace the space characters representing the floor by a "X" to remove t
|
||||||
self.fingerHolesAt(posx + t2, posy, self.y[y])
|
self.fingerHolesAt(posx + t2, posy, self.y[y])
|
||||||
else:
|
else:
|
||||||
# Right edge
|
# Right edge
|
||||||
self.edgeAt(e, posx + t + b, posy, self.y[y], 90)
|
self.edgeAt(e, posx + w + b, posy, self.y[y], 90)
|
||||||
if x == lx or y == 0 or not self.floors[y - 1][x]:
|
if y == 0 or not self.floors[y-1][x-1]:
|
||||||
self.edgeAt("e", posx + t + b, posy + self.y[y], t, 90)
|
self.edgeAt("e", posx + w + b, posy + self.y[y], w, 90)
|
||||||
if x == lx or y == ly - 1 or not self.floors[y + 1][x]:
|
elif x == lx or y == 0 or not self.floors[y - 1][x]:
|
||||||
self.edgeAt("e", posx + t + b, posy - t, t, 90)
|
self.edgeAt("e", posx + w + b, posy + self.y[y], t, 90)
|
||||||
|
if y == ly - 1 or not self.floors[y+1][x-1]:
|
||||||
|
self.edgeAt("e", posx + w + b, posy - w, w, 90)
|
||||||
elif x < lx and self.floors[y][x]:
|
elif x < lx and self.floors[y][x]:
|
||||||
# Left edge
|
# Left edge
|
||||||
self.edgeAt(e, posx - b, posy + self.y[y], self.y[y], -90)
|
self.edgeAt(e, posx + t - w - b, posy + self.y[y], self.y[y], -90)
|
||||||
if x == 0 or y == 0 or not self.floors[y - 1][x - 1]:
|
if y == 0 or not self.floors[y - 1][x]:
|
||||||
self.edgeAt("e", posx - b, posy + self.y[y] + t, t, -90)
|
self.edgeAt("e", posx + t - w - b,
|
||||||
if x == 0 or y == ly - 1 or not self.floors[y + 1][x - 1]:
|
posy + self.y[y] + w, w, -90)
|
||||||
self.edgeAt("e", posx - b, posy, t, -90)
|
elif x == 0 or y == 0 or not self.floors[y - 1][x - 1]:
|
||||||
|
self.edgeAt("e", posx + t - w - b,
|
||||||
|
posy + self.y[y] + t, t, -90)
|
||||||
|
if y == ly - 1 or not self.floors[y + 1][x]:
|
||||||
|
self.edgeAt("e", posx + t - w - b, posy, w, -90)
|
||||||
posy += self.y[y] + self.thickness
|
posy += self.y[y] + self.thickness
|
||||||
if x < lx:
|
if x < lx:
|
||||||
posx += self.x[x] + self.thickness
|
posx += self.x[x] + self.thickness
|
||||||
|
|
Loading…
Reference in New Issue