Compare commits

..

No commits in common. "3618e9c4f9759263b755a8a3fbf56b5342226f80" and "f2d2f652c475d08f8c94f1d2603d644e5f729891" have entirely different histories.

4 changed files with 41 additions and 314 deletions

View File

@ -7,99 +7,76 @@ from modelo import (
ti_depth,
ti_radius,
width,
thickness as model_thickness,
shell_t,
)
import keyboard
import screen_mount
hinge_radius = 6
screw_radius = 1.5 # M3
ring_radius = 5 # M3
hinge_offset = max(p[1] for p in mounting_pillar_positions) + 6
thickness = 5
hinge_width = 25
thickness = 50
distance_to_kbd_top = hinge_radius + 15 # measure
def model():
# Create a 2-part hinged lid
# Create the basic shape of the case bottom.
model = (
cq.Workplane("XY")
# Hollow box
.workplane(offset=-thickness / 2)
.box(width, height, thickness)
.faces("<Z")
.shell(-shell_t)
.box(width, height, 5)
# Outer surface of the hinge
.faces(">X")
.workplane(centerOption="CenterOfBoundBox")
.center(height / 2 - hinge_offset, thickness / 2 - hinge_radius)
.center(height / 2 - hinge_offset, -hinge_radius + thickness / 2)
.tag("rightSide")
.placeSketch(cq.Sketch().circle(hinge_radius))
.extrude(-width)
# Cut middle section between the hinges
.workplaneFromTagged("rightSide")
.workplane(offset=-hinge_width)
.placeSketch(
cq.Sketch().polygon(
[
(-hinge_radius, -hinge_radius),
(-hinge_radius, 0),
(-hinge_radius - shell_t, hinge_radius),
(-shell_t, hinge_radius),
(-shell_t, hinge_radius - shell_t),
(hinge_radius, hinge_radius - shell_t),
(hinge_radius, -hinge_radius),
(-hinge_radius, -hinge_radius),
]
)
)
.cutBlind(-width + 2 * hinge_width - 1)
# Cut middle section
.faces(">X")
.workplane(centerOption="CenterOfBoundBox", offset=-hinge_width)
.center(height / 2 - hinge_offset, 0)
.placeSketch(cq.Sketch().trapezoid(hinge_radius * 2 + 0.1, 20, 90))
.cutBlind(-width + 2 * hinge_width)
# Hole for screws
.workplaneFromTagged("rightSide")
.faces(">X")
.workplane(centerOption="CenterOfBoundBox")
.center(height / 2 - hinge_offset, 0)
.placeSketch(cq.Sketch().circle(screw_radius))
.cutBlind(-width)
# Holes for rings & screw heads
.workplaneFromTagged("rightSide")
.faces(">X")
.workplane(centerOption="CenterOfBoundBox")
.center(height / 2 - hinge_offset, 0)
.placeSketch(cq.Sketch().circle(ring_radius))
.cutBlind(-5)
.workplaneFromTagged("rightSide")
.workplane(offset=-width + 4)
.faces(">X")
.workplane(centerOption="CenterOfBoundBox", offset=-width + 4)
.center(height / 2 - hinge_offset, 0)
.placeSketch(cq.Sketch().circle(ring_radius))
.cutBlind(-5)
# Split hinge halves
.faces(">X")
.workplaneFromTagged("rightSide")
.workplane(offset=-hinge_width / 2)
.workplane(centerOption="CenterOfBoundBox", offset=-hinge_width / 2)
.center(height / 2 - hinge_offset, 0)
.placeSketch(cq.Sketch().trapezoid(hinge_radius * 2 + 1, hinge_radius * 2, 90))
.cutBlind(-1)
.workplaneFromTagged("rightSide")
.workplane(offset=-hinge_width)
.placeSketch(cq.Sketch().trapezoid(hinge_radius * 2 + 1, hinge_radius * 2, 90))
.cutBlind(-1)
.workplaneFromTagged("rightSide")
.workplane(offset=-width + hinge_width / 2)
.placeSketch(cq.Sketch().trapezoid(hinge_radius * 2 + 1, hinge_radius * 2, 90))
.cutBlind(-1)
.workplaneFromTagged("rightSide")
.workplane(offset=-width + hinge_width)
.cutBlind(2)
.faces(">X")
.workplane(centerOption="CenterOfBoundBox", offset=-width + hinge_width / 2)
.center(height / 2 - hinge_offset, 0)
.placeSketch(cq.Sketch().trapezoid(hinge_radius * 2 + 1, hinge_radius * 2, 90))
.cutBlind(-1)
# Threaded inserts
.workplaneFromTagged("rightSide")
.workplane(offset=-hinge_width / 2)
.faces(">X")
.workplane(centerOption="CenterOfBoundBox", offset=-hinge_width / 2)
.center(height / 2 - hinge_offset, 0)
.placeSketch(cq.Sketch().circle(ti_radius))
.cutBlind(-ti_depth)
.workplaneFromTagged("rightSide")
.workplane(offset=-width + hinge_width / 2)
.faces(">X")
.workplane(centerOption="CenterOfBoundBox", offset=-width + hinge_width / 2)
.center(height / 2 - hinge_offset, 0)
.placeSketch(cq.Sketch().circle(ti_radius))
.cutBlind(ti_depth)
# Split two halves
# First cut for the right hinge
.workplaneFromTagged("rightSide")
.placeSketch(
cq.Sketch()
@ -107,24 +84,14 @@ def model():
[
(0, 0),
(-hinge_radius - 0.2, 0),
(-hinge_radius - shell_t, hinge_radius),
(-hinge_radius - 0.2, hinge_radius),
(0, hinge_radius),
(0, 0),
]
)
.polygon(
[
(-hinge_radius - 0.2, 0),
(-hinge_radius - 0.2, -1000),
(-hinge_radius, -1000),
(-hinge_radius, 0),
(-hinge_radius - 0.2, 0),
]
)
.circle(hinge_radius, mode="s")
)
.cutBlind(-hinge_width / 2 - 1)
# Second cut for the right hinge
.cutBlind("next")
.workplaneFromTagged("rightSide")
.workplane(offset=-hinge_width / 2)
.placeSketch(
@ -133,32 +100,30 @@ def model():
[
(0, 0),
(hinge_radius + 0.2, 0),
(hinge_radius + 0.2 + shell_t, hinge_radius),
(hinge_radius + 0.2, hinge_radius),
(0, hinge_radius),
(0, 0),
]
)
.circle(hinge_radius, mode="s")
)
.cutBlind(-hinge_width / 2 - 1)
# First cut for the left hinge
.cutBlind(-hinge_width/2)
.workplaneFromTagged("rightSide")
.workplane(offset=-width + hinge_width)
.workplane(offset=-width+hinge_width)
.placeSketch(
cq.Sketch()
.polygon(
[
(0, 0),
(hinge_radius + 0.2, 0),
(hinge_radius + 0.2 + shell_t, hinge_radius),
(hinge_radius + 0.2, hinge_radius),
(0, hinge_radius),
(0, 0),
]
)
.circle(hinge_radius, mode="s")
)
.cutBlind(-hinge_width / 2 - 1)
# Second cut for the left hinge
.cutBlind(-hinge_width / 2)
.workplaneFromTagged("rightSide")
.workplane(offset=-width + hinge_width / 2)
.placeSketch(
@ -167,45 +132,14 @@ def model():
[
(0, 0),
(-hinge_radius - 0.2, 0),
(-hinge_radius - shell_t, hinge_radius),
(-hinge_radius - 0.2, hinge_radius),
(0, hinge_radius),
(0, 0),
]
)
.polygon(
[
(-hinge_radius - 0.2, 0),
(-hinge_radius - 0.2, -1000),
(-hinge_radius, -1000),
(-hinge_radius, 0),
(-hinge_radius - 0.2, 0),
]
)
.circle(hinge_radius, mode="s")
)
.cutBlind(-hinge_width / 2 - 1)
)
# Cut off shape of the base
model = (
model.workplaneFromTagged("rightSide")
.center(-height + hinge_offset, -thickness + hinge_radius)
.placeSketch(
cq.Sketch().polygon(
[
(0, 0),
(0, keyboard.front_thickness),
(shell_t, keyboard.front_thickness),
(keyboard.actual_height + shell_t, keyboard.back_thickness),
(keyboard.actual_height + shell_t, model_thickness),
(height, model_thickness),
(height, 0),
(0, 0),
]
)
)
.cutBlind(-1000)
.cutBlind(-hinge_width / 2)
)
return model
@ -213,14 +147,4 @@ def model():
if __name__ == "__main__":
model = model()
exporters.export(model, "hinged_lid.stl")
exporters.export(
model,
"hinged_lid.svg",
opt={
"projectionDir": (0, 0, 1),
"strokeWidth": 0.3,
},
)

Binary file not shown.

View File

@ -1,198 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
width="800.0"
height="240.0"
>
<g transform="scale(1.1320754716981134, -1.1320754716981134) translate(332.1666667666666,-97.16666666666666)" stroke-width="0.3" fill="none">
<!-- hidden lines -->
<g stroke="rgb(160,160,160)" fill="none" stroke-dasharray="0.3,0.3" >
<path d="M155.5,19.5 L155.5,79.5 " />
<path d="M155.5,19.5 L155.5,19.3 " />
<path d="M155.5,18.74310998702215 L155.5,19.3 " />
<path d="M155.5,-76.5 L155.5,18.74310998702215 " />
<path d="M155.5,-79.5 L155.5,-76.5 " />
<path d="M155.5,30.5 L155.5,30.374639560909117 L155.5,30.004844339512097 L155.5,29.40915741234015 L155.5,28.61744900929367 L155.5,27.66941869558779 L155.5,26.61260466978157 L155.5,25.5 L155.5,24.38739533021843 L155.5,23.33058130441221 L155.5,22.38255099070633 L155.5,21.59084258765985 L155.5,20.995155660487903 L155.5,20.625360439090883 L155.5,20.500000000000004 " />
<path d="M155.5,20.5 L155.5,20.625360439090883 L155.5,20.995155660487903 L155.5,21.59084258765985 L155.5,22.38255099070633 L155.5,23.33058130441221 L155.5,24.38739533021843 L155.5,25.5 L155.5,26.61260466978157 L155.5,27.66941869558779 L155.5,28.617449009293665 L155.5,29.40915741234015 L155.5,30.004844339512097 L155.5,30.374639560909117 L155.5,30.499999999999996 " />
<path d="M142.0,17.900000000000002 L142.0,16.5 " />
<path d="M143.0,19.5 L143.0,19.650432526909057 L143.0,20.094186792585486 L143.0,20.80901110519182 L143.0,21.7590611888476 L143.0,22.89669756529465 L143.0,24.164874396262114 L143.0,25.5 L143.0,26.835125603737886 L143.0,28.10330243470535 L143.0,29.2409388111524 L143.0,30.19098889480818 L143.0,30.905813207414514 L143.0,31.349567473090943 L143.0,31.499999999999993 " />
<path d="M143.0,31.5 L143.0,31.495804228730393 L143.0,31.48322278308708 L143.0,31.462273259359456 L143.0,31.432984957350772 L143.0,31.395398839399732 L143.0,31.349567473090943 L143.0,31.295554957734414 L143.0,31.233436834716848 L143.0,31.16329998185021 L143.0,31.08524249186523 L143.0,30.999373535219867 L143.0,30.905813207414525 L143.0,30.80469236102767 L143.0,30.696152422706657 " />
<path d="M143.0,30.696152422706632 L152.5,30.696152422706632 " />
<path d="M152.5,19.5 L152.5,19.65043252690906 L152.5,20.09418679258549 L152.5,20.80901110519183 L152.5,21.759061188847607 L152.5,22.896697565294662 L152.5,24.164874396262125 L152.5,25.50000000000001 L152.5,26.835125603737897 L152.5,28.103302434705355 L152.5,29.240938811152407 L152.5,30.190988894808186 L152.5,30.905813207414518 L152.5,31.349567473090943 L152.5,31.499999999999996 " />
<path d="M152.5,31.5 L152.5,31.495804228730393 L152.5,31.48322278308708 L152.5,31.462273259359456 L152.5,31.432984957350772 L152.5,31.395398839399732 L152.5,31.349567473090943 L152.5,31.29555495773441 L152.5,31.233436834716848 L152.5,31.16329998185021 L152.5,31.08524249186523 L152.5,30.999373535219863 L152.5,30.90581320741452 L152.5,30.804692361027666 L152.5,30.696152422706657 " />
<path d="M155.5,79.5 L-155.5,79.5 " />
<path d="M-155.5,19.5 L-155.5,79.5 " />
<path d="M-152.5,19.5 L-155.5,19.5 " />
<path d="M-152.5,19.5 L-152.5,76.5 " />
<path d="M152.5,76.5 L-152.5,76.5 " />
<path d="M152.5,19.5 L152.5,76.5 " />
<path d="M155.5,19.5 L152.5,19.5 " />
<path d="M155.5,19.5 L152.5,19.5 " />
<path d="M155.5,19.3 L152.5,19.3 " />
<path d="M152.5,19.3 L155.5,19.3 " />
<path d="M152.5,18.74310998702215 L152.5,19.299999999999997 " />
<path d="M155.5,18.74310998702215 L152.5,18.74310998702215 " />
<path d="M155.5,18.74310998702215 L152.5,18.74310998702215 " />
<path d="M152.5,-76.5 L152.5,18.743109987022166 " />
<path d="M155.5,-76.5 L152.5,-76.5 " />
<path d="M152.5,-76.5 L-152.5,-76.5 " />
<path d="M-152.5,-76.5 L-155.5,-76.5 " />
<path d="M-155.5,-79.5 L-155.5,-76.5 " />
<path d="M155.5,-79.5 L-155.5,-79.5 " />
<path d="M155.5,30.5 L150.5,30.5 " />
<path d="M150.5,30.5 L150.5,30.374639560909117 L150.5,30.004844339512097 L150.5,29.40915741234015 L150.5,28.61744900929367 L150.5,27.66941869558779 L150.5,26.61260466978157 L150.5,25.5 L150.5,24.38739533021843 L150.5,23.33058130441221 L150.5,22.38255099070633 L150.5,21.59084258765985 L150.5,20.995155660487903 L150.5,20.625360439090883 L150.5,20.500000000000004 " />
<path d="M150.5,20.5 L150.5,20.625360439090883 L150.5,20.995155660487903 L150.5,21.59084258765985 L150.5,22.38255099070633 L150.5,23.33058130441221 L150.5,24.38739533021843 L150.5,25.5 L150.5,26.61260466978157 L150.5,27.66941869558779 L150.5,28.617449009293665 L150.5,29.40915741234015 L150.5,30.004844339512097 L150.5,30.374639560909117 L150.5,30.499999999999996 " />
<path d="M142.0,17.900000000000002 L142.0,20.303847577293368 " />
<path d="M142.0,31.5 L142.0,31.349567473090943 L142.0,30.905813207414518 L142.0,30.19098889480818 L142.0,29.240938811152404 L142.0,28.103302434705352 L142.0,26.83512560373789 L142.0,25.500000000000004 L142.0,24.164874396262118 L142.0,22.896697565294655 L142.0,21.759061188847603 L142.0,20.80901110519182 L142.0,20.094186792585486 L142.0,19.650432526909057 L142.0,19.500000000000007 " />
<path d="M142.0,19.5 L142.0,19.504195771269607 L142.0,19.51677721691292 L142.0,19.537726740640544 L142.0,19.567015042649228 L142.0,19.604601160600268 L142.0,19.650432526909057 L142.0,19.704445042265586 L142.0,19.766563165283152 L142.0,19.83670001814979 L142.0,19.91475750813477 L142.0,20.000626464780133 L142.0,20.094186792585475 L142.0,20.19530763897233 L142.0,20.303847577293343 " />
<path d="M142.0,27.85 L142.0,27.791080593627285 L142.0,27.617276839570685 L142.0,27.33730398379987 L142.0,26.965201034368025 L142.0,26.519626786926263 L142.0,26.02292419479734 L142.0,25.5 L142.0,24.977075805202663 L142.0,24.48037321307374 L142.0,24.034798965631975 L142.0,23.66269601620013 L142.0,23.382723160429315 L142.0,23.208919406372715 L142.0,23.15 " />
<path d="M142.0,23.15 L142.0,23.208919406372715 L142.0,23.382723160429315 L142.0,23.66269601620013 L142.0,24.034798965631975 L142.0,24.480373213073737 L142.0,24.97707580520266 L142.0,25.5 L142.0,26.022924194797337 L142.0,26.51962678692626 L142.0,26.96520103436802 L142.0,27.33730398379987 L142.0,27.617276839570685 L142.0,27.791080593627285 L142.0,27.849999999999998 " />
<path d="M-152.5,17.900000000000006 L-152.5,-76.5 " />
<path d="M-152.5,-76.5 L152.5,-76.5 " />
<path d="M152.5,17.900000000000006 L152.5,-76.5 " />
<path d="M130.5,20.303847577293368 L142.0,20.303847577293368 " />
<path d="M130.5,20.303847577293368 L130.5,18.0 " />
<path d="M-131.5,18.0 L-131.5,20.303847577293368 " />
<path d="M-143.0,20.303847577293368 L-131.5,20.303847577293368 " />
<path d="M-143.0,20.303847577293368 L-143.0,17.900000000000002 " />
<path d="M143.0,33.199999999999996 L143.0,30.696152422706632 " />
<path d="M143.0,33.199999999999996 L143.0,34.699999999999996 " />
<path d="M143.0,27.0 L143.0,26.962391868272736 L143.0,26.851453301853628 L143.0,26.672747223702046 L143.0,26.4352347027881 L143.0,26.15082560867634 L143.0,25.833781400934473 L143.0,25.5 L143.0,25.16621859906553 L143.0,24.849174391323665 L143.0,24.5647652972119 L143.0,24.327252776297954 L143.0,24.148546698146372 L143.0,24.037608131727264 L143.0,24.0 " />
<path d="M143.0,24.0 L143.0,24.037608131727264 L143.0,24.148546698146372 L143.0,24.327252776297954 L143.0,24.5647652972119 L143.0,24.84917439132366 L143.0,25.166218599065527 L143.0,25.5 L143.0,25.83378140093447 L143.0,26.150825608676335 L143.0,26.4352347027881 L143.0,26.672747223702046 L143.0,26.851453301853628 L143.0,26.962391868272736 L143.0,27.0 " />
<path d="M-152.5,76.5 L152.5,76.5 " />
<path d="M-152.5,76.5 L-152.5,30.696152422706632 " />
<path d="M-152.5,30.696152422706632 L-144.0,30.696152422706632 " />
<path d="M-144.0,30.696152422706632 L-144.0,33.199999999999996 " />
<path d="M-130.5,33.199999999999996 L-130.5,22.5 " />
<path d="M129.5,22.5 L-130.5,22.5 " />
<path d="M129.5,22.5 L129.5,33.199999999999996 " />
<path d="M152.5,76.5 L152.5,30.696152422706632 " />
<path d="M-155.5,30.5 L-155.5,30.374639560909117 L-155.5,30.004844339512097 L-155.5,29.40915741234015 L-155.5,28.61744900929367 L-155.5,27.66941869558779 L-155.5,26.61260466978157 L-155.5,25.5 L-155.5,24.38739533021843 L-155.5,23.33058130441221 L-155.5,22.38255099070633 L-155.5,21.59084258765985 L-155.5,20.995155660487903 L-155.5,20.625360439090883 L-155.5,20.500000000000004 " />
<path d="M-155.5,20.5 L-155.5,20.625360439090883 L-155.5,20.995155660487903 L-155.5,21.59084258765985 L-155.5,22.38255099070633 L-155.5,23.33058130441221 L-155.5,24.38739533021843 L-155.5,25.5 L-155.5,26.61260466978157 L-155.5,27.66941869558779 L-155.5,28.617449009293665 L-155.5,29.40915741234015 L-155.5,30.004844339512097 L-155.5,30.374639560909117 L-155.5,30.499999999999996 " />
<path d="M129.5,33.199999999999996 L129.5,34.699999999999996 " />
<path d="M-130.5,33.199999999999996 L-130.5,34.699999999999996 " />
<path d="M-144.0,33.199999999999996 L-144.0,34.699999999999996 " />
<path d="M-144.0,19.5 L-144.0,19.650432526909057 L-144.0,20.094186792585486 L-144.0,20.80901110519182 L-144.0,21.7590611888476 L-144.0,22.89669756529465 L-144.0,24.164874396262114 L-144.0,25.5 L-144.0,26.835125603737886 L-144.0,28.10330243470535 L-144.0,29.2409388111524 L-144.0,30.19098889480818 L-144.0,30.905813207414514 L-144.0,31.349567473090943 L-144.0,31.499999999999993 " />
<path d="M-144.0,31.5 L-144.0,31.495804228730393 L-144.0,31.48322278308708 L-144.0,31.462273259359456 L-144.0,31.432984957350772 L-144.0,31.395398839399732 L-144.0,31.349567473090943 L-144.0,31.295554957734414 L-144.0,31.233436834716848 L-144.0,31.16329998185021 L-144.0,31.08524249186523 L-144.0,30.999373535219867 L-144.0,30.905813207414525 L-144.0,30.80469236102767 L-144.0,30.696152422706657 " />
<path d="M-144.0,27.0 L-144.0,26.962391868272736 L-144.0,26.851453301853628 L-144.0,26.672747223702046 L-144.0,26.4352347027881 L-144.0,26.15082560867634 L-144.0,25.833781400934473 L-144.0,25.5 L-144.0,25.16621859906553 L-144.0,24.849174391323665 L-144.0,24.5647652972119 L-144.0,24.327252776297954 L-144.0,24.148546698146372 L-144.0,24.037608131727264 L-144.0,24.0 " />
<path d="M-144.0,24.0 L-144.0,24.037608131727264 L-144.0,24.148546698146372 L-144.0,24.327252776297954 L-144.0,24.5647652972119 L-144.0,24.84917439132366 L-144.0,25.166218599065527 L-144.0,25.5 L-144.0,25.83378140093447 L-144.0,26.150825608676335 L-144.0,26.4352347027881 L-144.0,26.672747223702046 L-144.0,26.851453301853628 L-144.0,26.962391868272736 L-144.0,27.0 " />
<path d="M-152.5,30.696152422706632 L-152.5,30.80469236102766 L-152.5,30.905813207414514 L-152.5,30.99937353521986 L-152.5,31.085242491865227 L-152.5,31.163299981850205 L-152.5,31.233436834716844 L-152.5,31.29555495773441 L-152.5,31.349567473090943 L-152.5,31.39539883939973 L-152.5,31.432984957350772 L-152.5,31.462273259359456 L-152.5,31.48322278308708 L-152.5,31.495804228730393 L-152.5,31.5 " />
<path d="M-152.5,31.5 L-152.5,31.349567473090943 L-152.5,30.905813207414518 L-152.5,30.19098889480818 L-152.5,29.240938811152404 L-152.5,28.103302434705352 L-152.5,26.835125603737893 L-152.5,25.500000000000007 L-152.5,24.16487439626212 L-152.5,22.89669756529466 L-152.5,21.759061188847603 L-152.5,20.809011105191825 L-152.5,20.09418679258549 L-152.5,19.650432526909057 L-152.5,19.500000000000004 " />
<path d="M-152.50000000000003,-76.5 L-152.50000000000003,18.743109987022166 " />
<path d="M-152.5,18.74310998702215 L-155.5,18.74310998702215 " />
<path d="M-155.50000000000003,-76.5 L-155.50000000000003,18.743109987022166 " />
<path d="M-155.5,18.74310998702215 L-155.5,19.299999999999997 " />
<path d="M130.5,31.5 L130.5,31.349567473090943 L130.5,30.905813207414518 L130.5,30.19098889480818 L130.5,29.240938811152404 L130.5,28.103302434705352 L130.5,26.83512560373789 L130.5,25.500000000000004 L130.5,24.164874396262118 L130.5,22.896697565294655 L130.5,21.759061188847603 L130.5,20.80901110519182 L130.5,20.094186792585486 L130.5,19.650432526909057 L130.5,19.500000000000007 " />
<path d="M130.5,19.5 L130.5,19.504195771269607 L130.5,19.51677721691292 L130.5,19.537726740640544 L130.5,19.567015042649228 L130.5,19.604601160600268 L130.5,19.650432526909057 L130.5,19.704445042265586 L130.5,19.766563165283152 L130.5,19.83670001814979 L130.5,19.91475750813477 L130.5,20.000626464780133 L130.5,20.094186792585475 L130.5,20.19530763897233 L130.5,20.303847577293343 " />
<path d="M130.5,18.0 L130.5,16.5 " />
<path d="M130.5,27.0 L130.5,26.962391868272736 L130.5,26.851453301853628 L130.5,26.672747223702046 L130.5,26.4352347027881 L130.5,26.15082560867634 L130.5,25.833781400934473 L130.5,25.5 L130.5,25.16621859906553 L130.5,24.849174391323665 L130.5,24.5647652972119 L130.5,24.327252776297954 L130.5,24.148546698146372 L130.5,24.037608131727264 L130.5,24.0 " />
<path d="M130.5,24.0 L130.5,24.037608131727264 L130.5,24.148546698146372 L130.5,24.327252776297954 L130.5,24.5647652972119 L130.5,24.84917439132366 L130.5,25.166218599065527 L130.5,25.5 L130.5,25.83378140093447 L130.5,26.150825608676335 L130.5,26.4352347027881 L130.5,26.672747223702046 L130.5,26.851453301853628 L130.5,26.962391868272736 L130.5,27.0 " />
<path d="M-131.5,18.0 L-131.5,16.5 " />
<path d="M-131.5,31.5 L-131.5,31.349567473090943 L-131.5,30.905813207414518 L-131.5,30.19098889480818 L-131.5,29.240938811152404 L-131.5,28.103302434705352 L-131.5,26.83512560373789 L-131.5,25.500000000000004 L-131.5,24.164874396262118 L-131.5,22.896697565294655 L-131.5,21.759061188847603 L-131.5,20.80901110519182 L-131.5,20.094186792585486 L-131.5,19.650432526909057 L-131.5,19.500000000000007 " />
<path d="M-131.5,19.5 L-131.5,19.504195771269607 L-131.5,19.51677721691292 L-131.5,19.537726740640544 L-131.5,19.567015042649228 L-131.5,19.604601160600268 L-131.5,19.650432526909057 L-131.5,19.704445042265586 L-131.5,19.766563165283152 L-131.5,19.83670001814979 L-131.5,19.91475750813477 L-131.5,20.000626464780133 L-131.5,20.094186792585475 L-131.5,20.19530763897233 L-131.5,20.303847577293343 " />
<path d="M-131.5,27.0 L-131.5,26.962391868272736 L-131.5,26.851453301853628 L-131.5,26.672747223702046 L-131.5,26.4352347027881 L-131.5,26.15082560867634 L-131.5,25.833781400934473 L-131.5,25.5 L-131.5,25.16621859906553 L-131.5,24.849174391323665 L-131.5,24.5647652972119 L-131.5,24.327252776297954 L-131.5,24.148546698146372 L-131.5,24.037608131727264 L-131.5,24.0 " />
<path d="M-131.5,24.0 L-131.5,24.037608131727264 L-131.5,24.148546698146372 L-131.5,24.327252776297954 L-131.5,24.5647652972119 L-131.5,24.84917439132366 L-131.5,25.166218599065527 L-131.5,25.5 L-131.5,25.83378140093447 L-131.5,26.150825608676335 L-131.5,26.4352347027881 L-131.5,26.672747223702046 L-131.5,26.851453301853628 L-131.5,26.962391868272736 L-131.5,27.0 " />
<path d="M-143.0,31.5 L-143.0,31.349567473090943 L-143.0,30.905813207414518 L-143.0,30.19098889480818 L-143.0,29.240938811152404 L-143.0,28.103302434705352 L-143.0,26.83512560373789 L-143.0,25.500000000000004 L-143.0,24.164874396262118 L-143.0,22.896697565294655 L-143.0,21.759061188847603 L-143.0,20.80901110519182 L-143.0,20.094186792585486 L-143.0,19.650432526909057 L-143.0,19.500000000000007 " />
<path d="M-143.0,19.5 L-143.0,19.504195771269607 L-143.0,19.51677721691292 L-143.0,19.537726740640544 L-143.0,19.567015042649228 L-143.0,19.604601160600268 L-143.0,19.650432526909057 L-143.0,19.704445042265586 L-143.0,19.766563165283152 L-143.0,19.83670001814979 L-143.0,19.91475750813477 L-143.0,20.000626464780133 L-143.0,20.094186792585475 L-143.0,20.19530763897233 L-143.0,20.303847577293343 " />
<path d="M-143.0,17.900000000000002 L-143.0,16.5 " />
<path d="M-143.0,27.85 L-143.0,27.791080593627285 L-143.0,27.617276839570685 L-143.0,27.33730398379987 L-143.0,26.965201034368025 L-143.0,26.519626786926263 L-143.0,26.02292419479734 L-143.0,25.5 L-143.0,24.977075805202663 L-143.0,24.48037321307374 L-143.0,24.034798965631975 L-143.0,23.66269601620013 L-143.0,23.382723160429315 L-143.0,23.208919406372715 L-143.0,23.15 " />
<path d="M-143.0,23.15 L-143.0,23.208919406372715 L-143.0,23.382723160429315 L-143.0,23.66269601620013 L-143.0,24.034798965631975 L-143.0,24.480373213073737 L-143.0,24.97707580520266 L-143.0,25.5 L-143.0,26.022924194797337 L-143.0,26.51962678692626 L-143.0,26.96520103436802 L-143.0,27.33730398379987 L-143.0,27.617276839570685 L-143.0,27.791080593627285 L-143.0,27.849999999999998 " />
<path d="M150.5,27.0 L150.5,26.962391868272736 L150.5,26.851453301853628 L150.5,26.672747223702046 L150.5,26.4352347027881 L150.5,26.15082560867634 L150.5,25.833781400934473 L150.5,25.5 L150.5,25.16621859906553 L150.5,24.849174391323665 L150.5,24.5647652972119 L150.5,24.327252776297954 L150.5,24.148546698146372 L150.5,24.037608131727264 L150.5,24.0 " />
<path d="M150.5,24.0 L150.5,24.037608131727264 L150.5,24.148546698146372 L150.5,24.327252776297954 L150.5,24.5647652972119 L150.5,24.84917439132366 L150.5,25.166218599065527 L150.5,25.5 L150.5,25.83378140093447 L150.5,26.150825608676335 L150.5,26.4352347027881 L150.5,26.672747223702046 L150.5,26.851453301853628 L150.5,26.962391868272736 L150.5,27.0 " />
<path d="M142.0,27.85 L136.75,27.85 " />
<path d="M136.75,27.85 L136.75,27.791080593627285 L136.75,27.617276839570685 L136.75,27.33730398379987 L136.75,26.965201034368025 L136.75,26.519626786926263 L136.75,26.02292419479734 L136.75,25.5 L136.75,24.977075805202663 L136.75,24.48037321307374 L136.75,24.034798965631975 L136.75,23.66269601620013 L136.75,23.382723160429315 L136.75,23.208919406372715 L136.75,23.15 " />
<path d="M136.75,23.15 L136.75,23.208919406372715 L136.75,23.382723160429315 L136.75,23.66269601620013 L136.75,24.034798965631975 L136.75,24.480373213073737 L136.75,24.97707580520266 L136.75,25.5 L136.75,26.022924194797337 L136.75,26.51962678692626 L136.75,26.96520103436802 L136.75,27.33730398379987 L136.75,27.617276839570685 L136.75,27.791080593627285 L136.75,27.849999999999998 " />
<path d="M-152.5,18.74310998702215 L-152.5,19.299999999999997 " />
<path d="M150.5,27.0 L143.0,27.0 " />
<path d="M-151.5,30.5 L-151.5,30.374639560909117 L-151.5,30.004844339512097 L-151.5,29.40915741234015 L-151.5,28.61744900929367 L-151.5,27.66941869558779 L-151.5,26.61260466978157 L-151.5,25.5 L-151.5,24.38739533021843 L-151.5,23.33058130441221 L-151.5,22.38255099070633 L-151.5,21.59084258765985 L-151.5,20.995155660487903 L-151.5,20.625360439090883 L-151.5,20.500000000000004 " />
<path d="M-151.5,20.5 L-151.5,20.625360439090883 L-151.5,20.995155660487903 L-151.5,21.59084258765985 L-151.5,22.38255099070633 L-151.5,23.33058130441221 L-151.5,24.38739533021843 L-151.5,25.5 L-151.5,26.61260466978157 L-151.5,27.66941869558779 L-151.5,28.617449009293665 L-151.5,29.40915741234015 L-151.5,30.004844339512097 L-151.5,30.374639560909117 L-151.5,30.499999999999996 " />
<path d="M-151.5,30.5 L-155.5,30.5 " />
<path d="M-144.0,27.0 L-151.5,27.0 " />
<path d="M-151.5,27.0 L-151.5,26.962391868272736 L-151.5,26.851453301853628 L-151.5,26.672747223702046 L-151.5,26.4352347027881 L-151.5,26.15082560867634 L-151.5,25.833781400934473 L-151.5,25.5 L-151.5,25.16621859906553 L-151.5,24.849174391323665 L-151.5,24.5647652972119 L-151.5,24.327252776297954 L-151.5,24.148546698146372 L-151.5,24.037608131727264 L-151.5,24.0 " />
<path d="M-151.5,24.0 L-151.5,24.037608131727264 L-151.5,24.148546698146372 L-151.5,24.327252776297954 L-151.5,24.5647652972119 L-151.5,24.84917439132366 L-151.5,25.166218599065527 L-151.5,25.5 L-151.5,25.83378140093447 L-151.5,26.150825608676335 L-151.5,26.4352347027881 L-151.5,26.672747223702046 L-151.5,26.851453301853628 L-151.5,26.962391868272736 L-151.5,27.0 " />
<path d="M-152.5,18.74310998702215 L-155.5,18.74310998702215 " />
<path d="M-155.5,19.3 L-152.5,19.3 " />
<path d="M136.75,27.0 L136.75,26.962391868272736 L136.75,26.851453301853628 L136.75,26.672747223702046 L136.75,26.4352347027881 L136.75,26.15082560867634 L136.75,25.833781400934473 L136.75,25.5 L136.75,25.16621859906553 L136.75,24.849174391323665 L136.75,24.5647652972119 L136.75,24.327252776297954 L136.75,24.148546698146372 L136.75,24.037608131727264 L136.75,24.0 " />
<path d="M136.75,24.0 L136.75,24.037608131727264 L136.75,24.148546698146372 L136.75,24.327252776297954 L136.75,24.5647652972119 L136.75,24.84917439132366 L136.75,25.166218599065527 L136.75,25.5 L136.75,25.83378140093447 L136.75,26.150825608676335 L136.75,26.4352347027881 L136.75,26.672747223702046 L136.75,26.851453301853628 L136.75,26.962391868272736 L136.75,27.0 " />
<path d="M136.75,27.0 L130.5,27.0 " />
<path d="M-131.5,27.0 L-136.75,27.0 " />
<path d="M-136.75,27.0 L-136.75,26.962391868272736 L-136.75,26.851453301853628 L-136.75,26.672747223702046 L-136.75,26.4352347027881 L-136.75,26.15082560867634 L-136.75,25.833781400934473 L-136.75,25.5 L-136.75,25.16621859906553 L-136.75,24.849174391323665 L-136.75,24.5647652972119 L-136.75,24.327252776297954 L-136.75,24.148546698146372 L-136.75,24.037608131727264 L-136.75,24.0 " />
<path d="M-136.75,24.0 L-136.75,24.037608131727264 L-136.75,24.148546698146372 L-136.75,24.327252776297954 L-136.75,24.5647652972119 L-136.75,24.84917439132366 L-136.75,25.166218599065527 L-136.75,25.5 L-136.75,25.83378140093447 L-136.75,26.150825608676335 L-136.75,26.4352347027881 L-136.75,26.672747223702046 L-136.75,26.851453301853628 L-136.75,26.962391868272736 L-136.75,27.0 " />
<path d="M-143.0,27.85 L-136.75,27.85 " />
<path d="M-136.75,27.85 L-136.75,27.791080593627285 L-136.75,27.617276839570685 L-136.75,27.33730398379987 L-136.75,26.965201034368025 L-136.75,26.519626786926263 L-136.75,26.02292419479734 L-136.75,25.5 L-136.75,24.977075805202663 L-136.75,24.48037321307374 L-136.75,24.034798965631975 L-136.75,23.66269601620013 L-136.75,23.382723160429315 L-136.75,23.208919406372715 L-136.75,23.15 " />
<path d="M-136.75,23.15 L-136.75,23.208919406372715 L-136.75,23.382723160429315 L-136.75,23.66269601620013 L-136.75,24.034798965631975 L-136.75,24.480373213073737 L-136.75,24.97707580520266 L-136.75,25.5 L-136.75,26.022924194797337 L-136.75,26.51962678692626 L-136.75,26.96520103436802 L-136.75,27.33730398379987 L-136.75,27.617276839570685 L-136.75,27.791080593627285 L-136.75,27.849999999999998 " />
<path d="M143.0,31.5 L152.5,31.5 " />
<path d="M150.5,20.5 L155.5,20.5 " />
<path d="M-152.5,31.5 L-144.0,31.5 " />
<path d="M130.5,19.5 L142.0,19.5 " />
<path d="M-143.0,19.5 L-131.5,19.5 " />
<path d="M136.75,23.15 L142.0,23.15 " />
<path d="M143.0,24.0 L150.5,24.0 " />
<path d="M-155.5,20.5 L-151.5,20.5 " />
<path d="M-151.5,24.0 L-144.0,24.0 " />
<path d="M130.5,24.0 L136.75,24.0 " />
<path d="M-136.75,24.0 L-131.5,24.0 " />
<path d="M-136.75,23.15 L-143.0,23.15 " />
</g>
<!-- solid lines -->
<g stroke="rgb(0,0,0)" fill="none">
<path d="M155.5,19.3 L155.5,16.5 " />
<path d="M155.5,19.5 L155.5,19.3 " />
<path d="M155.5,25.5 L155.5,24.828213143380154 L155.5,24.164874396262114 L155.5,23.518325628268997 L155.5,22.89669756529465 L155.5,22.30780754090798 L155.5,21.7590611888476 L155.5,21.257359312880716 L155.5,20.80901110519182 L155.5,20.419654804630294 L155.5,20.094186792585486 L155.5,19.836700018149795 L155.5,19.650432526909057 L155.5,19.537726740640544 L155.5,19.5 " />
<path d="M155.5,79.5 L155.5,25.5 " />
<path d="M155.5,16.5 L155.5,-79.5 " />
<path d="M155.5,16.5 L142.0,16.5 " />
<path d="M152.5,17.900000000000006 L142.0,17.900000000000006 " />
<path d="M152.5,19.299999999999997 L152.5,17.899999999999995 " />
<path d="M155.5,19.3 L152.5,19.3 " />
<path d="M152.5,19.5 L152.5,19.299999999999997 " />
<path d="M155.5,19.5 L152.5,19.5 " />
<path d="M155.5,25.5 L143.0,25.5 " />
<path d="M143.0,25.5 L143.0,24.828213143380154 L143.0,24.164874396262114 L143.0,23.518325628268997 L143.0,22.89669756529465 L143.0,22.30780754090798 L143.0,21.7590611888476 L143.0,21.257359312880716 L143.0,20.80901110519182 L143.0,20.419654804630294 L143.0,20.094186792585486 L143.0,19.836700018149795 L143.0,19.650432526909057 L143.0,19.537726740640544 L143.0,19.5 " />
<path d="M-155.5,79.5 L-155.5,25.5 " />
<path d="M-155.5,79.5 L155.5,79.5 " />
<path d="M143.0,34.7 L143.0,25.5 " />
<path d="M143.0,34.7 L129.5,34.7 " />
<path d="M129.5,22.5 L129.5,34.7 " />
<path d="M129.5,22.5 L-130.5,22.5 " />
<path d="M-130.5,34.7 L-130.5,22.5 " />
<path d="M-130.5,34.7 L-144.0,34.7 " />
<path d="M-144.0,25.5 L-144.0,34.7 " />
<path d="M-144.0,25.5 L-155.5,25.5 " />
<path d="M-155.5,-79.5 L155.5,-79.5 " />
<path d="M142.0,16.5 L142.0,25.5 " />
<path d="M142.0,25.5 L130.5,25.5 " />
<path d="M130.5,25.5 L130.5,16.5 " />
<path d="M130.5,16.5 L-131.5,16.5 " />
<path d="M-131.5,16.5 L-131.5,25.5 " />
<path d="M-131.5,25.5 L-143.0,25.5 " />
<path d="M-143.0,25.5 L-143.0,16.5 " />
<path d="M-143.0,16.5 L-155.5,16.5 " />
<path d="M-155.5,16.5 L-155.5,-79.5 " />
<path d="M142.0,25.5 L142.0,26.171786856619846 L142.0,26.835125603737886 L142.0,27.481674371731003 L142.0,28.10330243470535 L142.0,28.69219245909202 L142.0,29.2409388111524 L142.0,29.742640687119284 L142.0,30.19098889480818 L142.0,30.580345195369702 L142.0,30.905813207414514 L142.0,31.163299981850205 L142.0,31.349567473090943 L142.0,31.462273259359456 L142.0,31.5 " />
<path d="M-143.0,17.900000000000006 L-152.5,17.900000000000006 " />
<path d="M130.5,18.000000000000014 L-131.5,18.000000000000014 " />
<path d="M-130.5,33.2 L-144.0,33.2 " />
<path d="M143.0,33.2 L129.5,33.2 " />
<path d="M-155.5,25.5 L-155.5,24.828213143380154 L-155.5,24.164874396262114 L-155.5,23.518325628268997 L-155.5,22.89669756529465 L-155.5,22.30780754090798 L-155.5,21.7590611888476 L-155.5,21.257359312880716 L-155.5,20.80901110519182 L-155.5,20.419654804630294 L-155.5,20.094186792585486 L-155.5,19.836700018149795 L-155.5,19.650432526909057 L-155.5,19.537726740640544 L-155.5,19.5 " />
<path d="M-144.0,25.5 L-144.0,24.828213143380154 L-144.0,24.164874396262114 L-144.0,23.518325628268997 L-144.0,22.89669756529465 L-144.0,22.30780754090798 L-144.0,21.7590611888476 L-144.0,21.257359312880716 L-144.0,20.80901110519182 L-144.0,20.419654804630294 L-144.0,20.094186792585486 L-144.0,19.836700018149795 L-144.0,19.650432526909057 L-144.0,19.537726740640544 L-144.0,19.5 " />
<path d="M-152.5,19.5 L-155.5,19.5 " />
<path d="M-155.5,19.299999999999997 L-155.5,16.5 " />
<path d="M130.5,25.5 L130.5,26.171786856619846 L130.5,26.835125603737886 L130.5,27.481674371731003 L130.5,28.10330243470535 L130.5,28.69219245909202 L130.5,29.2409388111524 L130.5,29.742640687119284 L130.5,30.19098889480818 L130.5,30.580345195369702 L130.5,30.905813207414514 L130.5,31.163299981850205 L130.5,31.349567473090943 L130.5,31.462273259359456 L130.5,31.5 " />
<path d="M-131.5,25.5 L-131.5,26.171786856619846 L-131.5,26.835125603737886 L-131.5,27.481674371731003 L-131.5,28.10330243470535 L-131.5,28.69219245909202 L-131.5,29.2409388111524 L-131.5,29.742640687119284 L-131.5,30.19098889480818 L-131.5,30.580345195369702 L-131.5,30.905813207414514 L-131.5,31.163299981850205 L-131.5,31.349567473090943 L-131.5,31.462273259359456 L-131.5,31.5 " />
<path d="M-143.0,25.5 L-143.0,26.171786856619846 L-143.0,26.835125603737886 L-143.0,27.481674371731003 L-143.0,28.10330243470535 L-143.0,28.69219245909202 L-143.0,29.2409388111524 L-143.0,29.742640687119284 L-143.0,30.19098889480818 L-143.0,30.580345195369702 L-143.0,30.905813207414514 L-143.0,31.163299981850205 L-143.0,31.349567473090943 L-143.0,31.462273259359456 L-143.0,31.5 " />
<path d="M-152.5,19.299999999999997 L-152.5,17.899999999999995 " />
<path d="M-152.5,19.3 L-155.5,19.3 " />
<path d="M143.0,19.5 L152.5,19.5 " />
<path d="M-152.5,19.5 L-144.0,19.5 " />
<path d="M130.5,31.5 L142.0,31.5 " />
<path d="M-143.0,31.5 L-131.5,31.5 " />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 27 KiB

View File

@ -19,6 +19,7 @@ shell_t = 3
# Size of the kbd board
kbd_height = 95.5
kbd_width = 305
kbd_angle = 5
# Size of the whole object
width = kbd_width + 2 * shell_t