Change edge styles to single characters
Add dummy box to main library
This commit is contained in:
parent
6cc2adf4c0
commit
52b23e2157
44
boxes.py
44
boxes.py
|
@ -305,6 +305,9 @@ class Boxes:
|
||||||
self.hole(j*2*w+i*w, i*2*dist, r)
|
self.hole(j*2*w+i*w, i*2*dist, r)
|
||||||
self.hole(j*2*w+i*w, -i*2*dist, r)
|
self.hole(j*2*w+i*w, -i*2*dist, r)
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
### parts
|
||||||
|
##################################################
|
||||||
|
|
||||||
def roundedPlate(self, x, y, r, callback=None):
|
def roundedPlate(self, x, y, r, callback=None):
|
||||||
"""fits surroundingWall
|
"""fits surroundingWall
|
||||||
|
@ -325,22 +328,27 @@ class Boxes:
|
||||||
self.ctx.restore()
|
self.ctx.restore()
|
||||||
|
|
||||||
def _edge(self, l, style):
|
def _edge(self, l, style):
|
||||||
if style == 'edge':
|
if style in 'eE':
|
||||||
self.edge(l)
|
self.edge(l)
|
||||||
elif style == 'holes':
|
elif style == 'h':
|
||||||
self.fingerHoleEdge(l)
|
self.fingerHoleEdge(l)
|
||||||
elif style == 'finger':
|
elif style == 'f':
|
||||||
|
self.fingerJoint(l)
|
||||||
|
elif style == 'F':
|
||||||
self.fingerJoint(l, positive=False)
|
self.fingerJoint(l, positive=False)
|
||||||
|
elif style in 'dD':
|
||||||
|
self.doveTailJoint(l, positive=(style=='d'))
|
||||||
|
|
||||||
def _edgewidth(self, style):
|
def _edgewidth(self, style):
|
||||||
if style == 'holes':
|
"""return how far a given edge type needs to be set out"""
|
||||||
|
if style == 'h':
|
||||||
return (self.fingerHoleEdgeWidth+1) * self.thickness
|
return (self.fingerHoleEdgeWidth+1) * self.thickness
|
||||||
elif style == 'finger':
|
elif style in 'FE':
|
||||||
return self.thickness
|
return self.thickness
|
||||||
return 0.0
|
return 0.0
|
||||||
|
|
||||||
def surroundingWall(self, x, y, r, h,
|
def surroundingWall(self, x, y, r, h,
|
||||||
bottom='edge', top='edge',
|
bottom='e', top='e',
|
||||||
callback=None):
|
callback=None):
|
||||||
"""
|
"""
|
||||||
h : inner height, not counting the joints
|
h : inner height, not counting the joints
|
||||||
|
@ -382,21 +390,39 @@ class Boxes:
|
||||||
self.edge(bottomwidth)
|
self.edge(bottomwidth)
|
||||||
self.corner(90)
|
self.corner(90)
|
||||||
|
|
||||||
|
def rectangularWall(self, x, y, edges="eeee"):
|
||||||
|
edges += edges # append for wrapping around
|
||||||
|
for i, l in enumerate((x, y, x, y)):
|
||||||
|
self._edge(self._edgewidth(edges[i-1]), 'e')
|
||||||
|
self._edge(l, edges[i])
|
||||||
|
self._edge(self._edgewidth(edges[i+1]), 'e')
|
||||||
|
self.corner(90)
|
||||||
|
|
||||||
##################################################
|
##################################################
|
||||||
### main
|
### main
|
||||||
##################################################
|
##################################################
|
||||||
|
|
||||||
def render(self, x, y, h, r):
|
def render(self, x, y, h):
|
||||||
self.ctx.save()
|
self.ctx.save()
|
||||||
|
|
||||||
# XXX add parts
|
self.moveTo(10, 10)
|
||||||
|
self.roundedPlate(x, y, 0)
|
||||||
|
self.moveTo(x+40, 0)
|
||||||
|
self.rectangularWall(x, y, "FFFF")
|
||||||
|
|
||||||
self.ctx.restore()
|
self.ctx.restore()
|
||||||
|
|
||||||
|
self.moveTo(10, y+20)
|
||||||
|
for i in range(2):
|
||||||
|
for l in (x, y):
|
||||||
|
self.rectangularWall(l, h, "hffF")
|
||||||
|
self.moveTo(l+20, 0)
|
||||||
|
self.moveTo(-x-y-40, h+20)
|
||||||
|
|
||||||
|
|
||||||
self.ctx.stroke()
|
self.ctx.stroke()
|
||||||
self.surface.flush()
|
self.surface.flush()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
b = Boxes(900, 700)
|
b = Boxes(900, 700)
|
||||||
b.render(250, 250/1.618, 120, 30)
|
b.render(100, 161.8, 120)
|
||||||
|
|
|
@ -16,7 +16,7 @@ class Silverware(Boxes):
|
||||||
])
|
])
|
||||||
|
|
||||||
def wall(self, x=100, y=100, h=100, r=0):
|
def wall(self, x=100, y=100, h=100, r=0):
|
||||||
self.surroundingWall(x,y,r,h, bottom='holes', callback={
|
self.surroundingWall(x,y,r,h, bottom='h', callback={
|
||||||
0 : lambda: self.fingerHolesAt(x/6.0, 0, h),
|
0 : lambda: self.fingerHolesAt(x/6.0, 0, h),
|
||||||
4 : lambda: self.fingerHolesAt(x/3.0-r, 0, h),
|
4 : lambda: self.fingerHolesAt(x/3.0-r, 0, h),
|
||||||
1 : lambda: self.fingerHolesAt(y/2.0-r, 0, h),
|
1 : lambda: self.fingerHolesAt(y/2.0-r, 0, h),
|
||||||
|
|
Loading…
Reference in New Issue