I’ve previously posted about my 3D-printed stage jewelry: the 3D slugs , the diamond, the chain of office, and large pendants printed on my Monoprice Delta Mini printer using CC3D Silk Gold PLA filament.

I designed another pendant yesterday, and printed it today—this one using stars instead of spheres as the main design element.

// Star of stars // by Kevin Karplus // Creative Commons Attribution-ShareAlike (CC BY-SA 3.0) // 2019 Aug 10 use <BOSL2/std.scad> // BOSL2 from https://github.com/revarbat/BOSL2/ // used for offset function inner_radius(r_outer, n, k) = assert(k<n/2) assert(k>0) let(straight_ratio = cos(180/n) + sin(180/n)*tan(180*k/n)) r_outer/ straight_ratio; function star_points(r_outer=5, n=5, k=2)= // Points on circle centered at (0,0) with radius r_outer. // First point on positive x axis. // k determines how far out the inner points of the star are, // with k<1 making a convex polygon with 2n sides, // k=1 making a regular n-gon // k=2 making a star that connects alternate points // k=3 making a star that connects every third point, ... // k need not be integer // You can get a nice, fat star with k=(n-2)/2 let(r_inner = inner_radius(r_outer, n, k)) [for (i=[0:2*n-1]) (i%2==0? r_outer: r_inner)*[cos(i*180/n), sin(i*180/n)]]; module star(r_outer=5, n=5, k=2) // Make a polyhedral star with n points. { points = star_points(r_outer=r_outer,n=n,k=k); polygon(points=points, convexity=n); } module star_outline(n=5, r=50, line=2,k=undef) { k_star = k==undef? (n-2)/2: k; points = star_points(r_outer=r,n=n,k=k_star); echo(points=points); inner = offset(points, delta=-line, closed=true); echo(inner=inner); difference() { polygon(points); polygon(inner); } } module star_of_stars(n=5, r=50, line=2, k=undef) { k_star = k==undef? (n-1)/2: k; r_sub = inner_radius(r, n, k_star); star_outline(n=n, r= 2*r_sub, line=line, k=k_star); for (i=[0:n-1]) { rotate((2*i+1)*180/n) translate([2*cos(180/n)*r_sub,0]) rotate(((n+1)%2)*180/n) star_outline(n=n,r=r_sub+0.001, line=line, k=k_star); } } module solid_star(n=5, r=50, k=undef, height=undef) // Make a solid star with n points and outer radius r // k is a skinniness parameter (0 to n/2), as defined in star // default value is (n-2)/2, which makes a slightly fat star // (try n/2 for a skinny star) // height is the height of the star, default is r/3 { k_star = k==undef? (n-2)/2: k; h = height==undef? r/3: height; linear_extrude(height=h, scale=0) star(n=n,k=k_star, r_outer=r); } module solid_star_of_stars(n=5, line=2, r=50) { small_r = 3*line; r_sub = inner_radius(r, n, (n-1)/2); outer_center= [(2*cos(180/n)+1)*r_sub-small_r,0]; difference() { union() { linear_extrude(line) star_of_stars(r=r, n=n, line=line); intersection() { translate([0,0,0.0015]) cylinder(r=1.2*r, h=2*line, $fn=20); for (i=[0:n-1]) { rotate([0,0,i*360/n]) translate([r_sub,0,0]) { linear_extrude(line) star(r_outer=3*line,n=n, k=(n-2)/2); color("blue") translate([0,0,line]) solid_star(r=small_r, height=2*line, n=n, k=(n-2)/2); } } } intersection() { translate([0,0,0.001]) cylinder(r=1.2*r, h=2*line, $fn=20); for (i=[0:n-1]) { rotate((2*i+1)*180/n) translate(outer_center) { rotate(((n+1)%2)*180/n) { linear_extrude(line) star(r_outer=3*line,n=n, k=(n-2)/2); color("red") translate([0,0,line]) solid_star(r=3*line, height=2*line, n=n, k=(n-2)/2); } } } } } for (i=[0:n-1]) { rotate((2*i+1)*180/n) translate(outer_center) cylinder(d=line, h=5*line, center=true, $fn=30); } } } solid_star_of_stars(n=5);

Released on Thingiverse as https://www.thingiverse.com/thing:3805111

## Leave a Reply