Gas station without pumps

2019 August 11

Star-of-stars, another large pendant

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.

Once again, I had to clean up the stringing and blobbing using a riffler.

// 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

2019 August 10

More large pendants

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

I’ve done a couple more designs since then: two more large pendants that could be used with a chain of office.  These were designed for fairly fast printing, being fairly thin:

Flower pendant 1 has 12-fold symmetry (including mirror symmetries).

Flower pendant 2 has 16-fold symmetry, including mirror symmetries.

Both pendants were simple OpenSCAD code, as they consist of unions and intersections of spheres (cut to just the positive-z half-space, to get a flat back).

// Flower pendant 1
// 12-fold symmetry
// bumps in center
//
// License: Attribution-NonCommercial-ShareAlike (CC BY-NC-SA)

// Kevin Karplus
// 2019 Aug 1

module round_facet(r=15, h=5)
{
    $fa=2; $fn=60;
    intersection()
    {   cylinder(r=1.3*r, h=h);
        union()
        {
            difference()
            {   sphere(r=r);
                carve_r=1.8*r;
                rim_h = 0.4*h;
                raise = sqrt(carve_r*carve_r + rim_h*rim_h -r*r)+rim_h;
                translate([0,0,raise]) sphere(r=carve_r); 
            }
            inner_r=0.35*r;
            translate([0,0,h-inner_r]) sphere(r=inner_r);
        }
    }
}

n=6;
r=40;
for(i=[1:n])
{   tran=0.3*r;
    color(c=[i/n,0.1,(n-i)/n])
        translate(tran*[cos(360*i/n), sin(360*i/n),0])  
            round_facet(r=r-tran,h=0.3*(r-tran));
}
// Flower pendant 2
// 16-fold symmetry
//
// License: Attribution-NonCommercial-ShareAlike (CC BY-NC-SA)

// Kevin Karplus
// 2019 Aug 2

module round_facet(r=15, rim_h=2, carve_ratio=1.7)
{
    $fa=2; $fn=60;
    intersection()
    {   cylinder(r=1.3*r, h=rim_h*2);
        difference()
        {   sphere(r=r);
            carve_r=carve_ratio*r;
            raise = sqrt(carve_r*carve_r + rim_h*rim_h -r*r)+rim_h;
            translate([0,0,raise]) sphere(r=carve_r); 
        }
    }
}

module flower(petals=6, r=40, height_ratio=0.07, translate_ratio=0.4, carve_ratio=1.7)
{
    for(i=[1:petals])
    {   tran=translate_ratio*r;
        color(c=[i/petals,0.1,(petals-i)/petals])
            translate(tran*[cos(360*i/petals), sin(360*i/petals),0])  
                round_facet(r=r-tran,
                    rim_h=height_ratio*r, 
                    carve_ratio=carve_ratio);
    }
}

flower(petals=8, height_ratio=0.08);

I have not released these designs on Thingiverse, because the site keeps being unresponsive when I try to upload new designs. I realize that I shouldn’t complain about a free service, but I’m about ready to give up on Thingiverse. Is there a better 3d-printing sharing site?

Update 2019 Aug 10: Thingiverse finally let me upload as https://www.thingiverse.com/thing:3802142 and https://www.thingiverse.com/thing:3802138.

2019 July 27

3D-printed chain of office

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

I’ve done a couple more designs since then: a star pendant and a chain of office to show the director and props people at WEST Performing Arts the possibility of making stage jewelry with a 3D printer.

The front of the star. The “notches” on the top point are a horizontal hole for hanging the star from a chain or cord.

The back of the star, showing the flat spot.

I have released this star design on Thingiverse: https://www.thingiverse.com/thing:3756123.

The chain of office is more complicated, as it consists of 20 triangular plates and a pendant.  The plates took an hour apiece to print, and each one needed cleanup with a riffler to remove stringing.

The top layers of the print look pretty good, but there is a lot of stringing as the print head moved from one part of the print to another.

The bottom of each triangle looked worse than the top, as the first layer seemed to have more trouble with uniform extrusion than the higher layers.

This is what the triangles looked like after cleaning up the stringing with a riffler.  The difference in shininess is an illusion—I photographed this one with a flash, and the previous two photos were with more uniform lighting.

The triangles need to be joined with 6mm OD split rings:

Here are the triangles joined into a chain with jump rings.

The kid-size chain uses 18 of the triangular plates:

The pendant here is a design suggested by my wife, since I did not have any fake jewels to glue onto a pendant. I think that fake jewels may make for a showier pendant.

To make an adult-sized chain I added two more triangular plates, for a total of 20:

The chain of office needs to sit fairly wide on the shoulders, so probably needs to pinned or stitched to the shoulder seam, as the plastic is not heavy enough for the weight of the chain to hold it in place.

I’ve not released the chain of office on Thingiverse, mainly because their web site seems to be misbehaving this week.

2019 July 29: released as https://www.thingiverse.com/thing:3778927

2019 July 7

3D slug heart

Filed under: Uncategorized — gasstationwithoutpumps @ 18:34
Tags: , , , , , ,

Earlier today I posted about adding a ring to scanlime‘s banana-slug design on Thingiverse by merging two STL files in Cura.  Today, I tried using the “include” command of OpenSCAD to get a properly merged STL file that I can post to Thingiverse.

The OpenSCAD code is quite simple:

module torus(big_radius=3, small_radius=1, big_fn=100, small_fn=30)
{   rotate_extrude($fn=big_fn)
    translate([big_radius,0,0])
    circle(r=small_radius, $fn=small_fn);
}

union()
{
    import("slug-fixup.stl",convexity=5);
    translate([-15,27,0])
        intersection()
        {   translate([0,0,1]) torus(big_radius=3.6, small_radius=2);
            translate([0,0,50]) cube(size=[100,100,100], center=true);
        }
}

I decided to go one step further and make a “slug heart” as suggested by my wife—it would be good for IEEE to sell at Valentine’s Day next year:

module torus(big_radius=3, small_radius=1, big_fn=100, small_fn=30)
{   rotate_extrude($fn=big_fn)
    translate([big_radius,0,0])
    circle(r=small_radius, $fn=small_fn);
}

module slug()
{    translate([-18,0,0]) rotate(a=[0,0,-12]) import("slug-fixup.stl",convexity=5);
}
union()
{
    slug();
    mirror([1,0,0]) slug();
    translate([0,25,0])
        intersection()
        {   translate([0,0,1]) torus(big_radius=3.6, small_radius=2);
            translate([0,0,50]) cube(size=[100,100,100], center=true);
        }
}
slug heart jewelry

View of the heart showing the ring for hanging it. This was printed at “draft” resolution (0.2mm/layer)—the jewelry will look better with 0.1mm/layer

slug heart jewelry

View of the heart showing the interior heart shape. I still only have green filament, but the slug will look much better in gold.

The slug-heart pendant weighs 13.46 grams in draft mode—I suspect it will be a similar weight for the final printing when I get the gold filament.

UPDATE 2019 July 7: I released the design as https://www.thingiverse.com/thing:3735198

3D slug printing

Filed under: Uncategorized — gasstationwithoutpumps @ 14:39
Tags: , , , , , , ,

I used my Monoprice Delta Mini 3D printer again yesterday, after a long break since the last usage.  My wife wanted a banana-slug charm to hang on her new mustard-yellow purse—she liked the color and size of the 3D-printed slug I had bought her from the UCSC IEEE chapter, but it did not have any easy way to attach it to the purse.

I found the design on Thingiverse by  scanlime, and checked the licensing (CC by 3.0), which only requires attribution, even for commercial uses.

I wanted to add a ring to the slug, so that it could be attached to a keyring.  Unfortunately, the design is only available as an STL file, and I’ve been using OpenSCAD, and I forgot that OpenSCAD has an import option for importing STL files, so I did a crude hack instead:  I made a ring in OpenSCAD, exported it as STL, then placed it in Cura overlapping the slug STL file.  When I sliced the models, the two files were merged producing a single gcode file, that printed as a single object. I think I want to see if I can also use the “include” command and get a properly merged STL file that I can post to Thingiverse.

I printed the model with 0.1mm resolution (finer than the resolution used for the IEEE printing, but I was not trying to produce slugs in sufficient quantity to sell them, so a slower printing to get a smoother surface was fine for me).

The gold slug is the one I bought from the IEEE student chapter, and the green one is the one I printed with the added ring.

The green color is obviously not suitable for banana slugs, but I’ve ordered some gold filament to print the slug properly.

One interesting side effect of slicing two overlapping models is that the exterior wall of each model was preserved, so that there were interior lines in the finished slicing corresponding to the original exterior walls.  This is an interesting, if somewhat awkward, way to get Cura to create specific interior structure, in addition to the generic interior fill patterns that it uses.

I have ordered two different gold filaments: Hatchbox Gold, which is what the IEEE slug was printed with, and CC3D Silk Gold, which should be shinier.  I’ve also ordered some hardware for attaching the slug to the purse (split rings and lobster hook).  I’ll have enough filament to do hundreds of slugs, since it only weighs 6.51g (not that I plan to make more than a handful—one in each color for my wife, and maybe another one for my backpack). The extra shiny gold filament can be used to make costume jewelry for WEST Performing Arts perhaps.  The filament costs a little over 1¢/gram, so the only real cost is the design and printing time.

Incidentally, the photographs were taken using another recent acquisition: a large Shibusa Photo Studio in a Bag, which I got from American Science and Surplus.  I think that the reason they were marked down is that the sides are so warped that they unsnap under the weight of the top.  I managed to make the thing work by using binder clips to insert some MDF pieces to stiffen the sides.  I think that I want to cut a couple of permanent MDF pieces that are exactly the right size and shape to support the top cleanly.  It would probably be best to use a laser cutter, but I’ll probably just use my scroll saw.

UPDATE 2019 July 7: I released the model as https://www.thingiverse.com/thing:3735186

Next Page »

%d bloggers like this: