-
Notifications
You must be signed in to change notification settings - Fork 0
/
simple_custom_polybowl_customizer.scad
67 lines (50 loc) · 1.34 KB
/
simple_custom_polybowl_customizer.scad
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
56
57
58
59
60
61
62
63
64
65
66
67
// simple custom polybowl
/* [Size] */
// width of the bowl (in mm)
diameter = 32;
radius = diameter/2;
// height of the main part (in mm)
bodyHeight = 35;
// height of the base and lower rim (in mm)
baseHeight = 1;
// height of the upper rim (in mm)
rimHeight = 1;
/* [Style] */
// number of polygon sides
sides = 12;
// thickness of the bowl (keep above 1.5 mm)
thickness = 1.5;
// degrees that the bowl shape will twist
bodyTwist = 0;
// factor by which bowl shape will scale out/in
bodyFlare = 2.7;
//////////////////////////////////////////////////////
// RENDERS
// base
linear_extrude( height = baseHeight )
polyShape( solid="yes" );
// body
translate([0,0,baseHeight])
linear_extrude( height = bodyHeight, twist = bodyTwist,
scale = bodyFlare, slices = 2*bodyHeight )
polyShape( solid="no" );
// rim
translate([0,0,bodyHeight+baseHeight])
rotate(-bodyTwist)
scale(bodyFlare)
linear_extrude( height = rimHeight )
polyShape( solid="no" );
//////////////////////////////////////////////////////
// MODULES
module polyShape(solid){
difference(){
// start with outer shape
offset( r=5, $fn=48 )
circle( r=radius, $fn=sides );
// take away inner shape
if (solid=="no"){
offset( r=5-thickness, $fn=48 )
circle( r=radius, $fn=sides );
}
}
}