-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtop_coin.py
55 lines (49 loc) · 1.36 KB
/
top_coin.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import math
from solid2 import *
from datetime import datetime
import coin_lib
# Retrieve basic coin shape
base_coin = coin_lib.BaseCoin()
coin = base_coin.common_coin()
coin_diameter = base_coin.coin_diameter
coin_thickness = base_coin.coin_thickness
fn = base_coin.fn
# Write out "bitcoin" on the back side in negative space
coin -= (
text(
"bitcoin",
size=10,
halign="center",
valign="center",
font="Liberation Sans:style=Bold Italic",
)
.linear_extrude(height=1)
.mirror([1, 0, 0])
.rotate([180, 180, 0])
)
# Import BitcoinSign.svg onto face of coin
coin += (
import_(file="BitcoinSign.svg")
.linear_extrude(height=coin_thickness - 3)
.scale([0.52, 0.52, 1])
.translate([-18, -24, 3])
)
# Write "LIBERTY" across the top
for letter in coin_lib.ArchimedeanSpiralString(
string="LIBERTY",
letter_size=5,
dot_dist=15,
init_degrees=360 * 6,
spiral_separation=360 / 8,
).generate_letters():
coin += letter.linear_extrude(height=0.6).up(3).rotate([0, 0, 5])
# Add year
for letter in coin_lib.ArchimedeanSpiralString(
string=str(datetime.now().year)[::-1],
letter_size=5,
dot_dist=5,
init_degrees=360 * 6,
spiral_separation=360 / 8,
).generate_letters(outward_facing=True):
coin += letter.linear_extrude(height=0.6).up(3).rotate([0, 0, -103])
coin.save_as_scad()