Customisable Pen Clip

Maker remi.rafael
Download https://makerworld.com/en/models/44086
Description A clip you can stick to a surface to hold a pen. The clip can be customised with text, etc.

Notes

  • Printed this in PLA and it snapped on first use. The clip was really thin.
  • It would probably work better in PETG, but looking at what was printed, it just looks like it needs thicker walls to be durable.
    • I have not tried it but I have modified the OpenSCAD code to accommodate that so you can reprint locally if you wish and give it a try.
Height=20;
Feet_size=30;
Diameter=8;
Text="3D";
Text_Size=6;
Thickness=0.8;

my_object();

module my_object()
{
    // Creates the pen clip
    translate([0,-Diameter/2,0])
    {
        difference()
        {
            difference()
            {
                cylinder(h=Height,r=Diameter/2+Thickness, center=true,$fn=100);
                cylinder(h=Height+1,r=Diameter/2, center=true,$fn=100);
            }
            translate([0,-2.75,-(Height+1)/2]) 
                cube([20,5.5,Height+1]);
        }
        translate([sqrt((Diameter)/2*(Diameter)/2-2.75*2.75)+0.8,2.75,-Height/2]) 
            color("black",0.5) 
                cylinder(Height, r=0.8,$fn=100);
        mirror([0,1,0]) 
            translate([sqrt((Diameter)/2*(Diameter)/2-2.75*2.75)+0.8,2.75,-Height/2]) 
                color("white",0.5) 
                    cylinder(Height, r=0.8,$fn=100);
    }


    difference()
    {
        // Create the base with the text
        union()
        {
            translate([-(Feet_size+sqrt((Diameter)/2*(Diameter)/2-(Diameter-1.6)/2*(Diameter-(2.5*Thickness))/2)),-Thickness,-Height/2]) 
                color("red",0.5)
                    cube([Feet_size,Thickness,Height]);

            translate([-(Feet_size/2+Diameter/2),-Thickness,0]) 
                rotate([90,0,0])
                    linear_extrude(0.4) 
                        text(Text,font="font:style=bold", halign="center", valign = "center",size = Text_Size);
        }

        // Cuts the filet
        union()
        {
            translate([-(Feet_size+sqrt((Diameter)/2*(Diameter)/2-(Diameter-(2.5*Thickness))/2*(Diameter-(2.5*Thickness))/2))-0.01,-2.5,-Height/2-0.01])
            
            difference()
            {
                cube([2.5,5,2.5]);
                translate([2.5,5.5,2.5]) 
                    rotate([90,0,0]) 
                        color("purple")
                            cylinder(h=6,r=2.5,$fn=100);
            }
            
            mirror([0,0,1])
                translate([-(Feet_size+sqrt((Diameter)/2*(Diameter)/2-(Diameter-(2.5*Thickness))/2*(Diameter-(2.5*Thickness))/2))-0.01,-2.5,-Height/2-0.01])
            
            difference()
            {
                cube([2.5,5,2.5]);
                translate([2.5,5.5,2.5]) 
                    rotate([90,0,0]) 
                        cylinder(h=7,r=2.5,$fn=100);
            }
        }
    }
}