Skip to content

Instantly share code, notes, and snippets.

@rahji
Last active April 12, 2023 23:41
Show Gist options
  • Save rahji/0510cb91d1fd9e932dfe7eead5aebe50 to your computer and use it in GitHub Desktop.
Save rahji/0510cb91d1fd9e932dfe7eead5aebe50 to your computer and use it in GitHub Desktop.
Go game board (Goban) generator for laser cutting and engraving
// gramlanguage.com
size = 19 // 19 or 13 or 9
margin = 30 // board cutout margin/padding
// ---------------------------------------
size = size - 1
w = 22
h = 23.7
ww = w*size
hh = h*size
def star:
rectangle 4 4
grid = layer:
x = layer:
forward size*w
copypaste size:
translate 0 h
y = layer:
right ~90
forward size*h 0
copypaste size:
translate w 0
originate
center = layer:
star
if size > 9:
layer:
star
translate ww/2-(3*w) hh/2-(3*h)
layer:
star
translate ww/2-(3*w) ~hh/2+(3*h)
layer:
star
translate ~ww/2+(3*w) hh/2-(3*h)
layer:
star
translate ~ww/2+(3*w) ~hh/2+(3*h)
if size > 13:
layer:
star
translate ww/2-(3*w) 0
layer:
star
translate ~ww/2+(3*w) 0
layer:
star
translate ww/2-(3*w) 0
layer:
star
translate ~ww/2+(3*w) 0
layer:
star
translate 0 hh/2-(3*h)
layer:
star
translate 0 ~hh/2+(3*h)
strokecolor "blue"
cutout = layer:
rectangle (size*w)+(margin*2) (size*h)+(margin*2)
strokecolor "red"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment