Photo by Keenaan Stratman
FA user icon.svg Angle down icon.svg User data
Name Tobin Blair (He/They)
Languages English
Registered 2023
Create your first content page

This page is part of the Principia College 3-D Printing Technology course. It is designed to share the designs that Tobin creates in this class.

Past Work Relevant to Appropedia[edit | edit source]

Tobin Blair has seen a 3D printer in action before. Now, Tobin has worked with one of them during the class.

Mini projects[edit | edit source]

These are several mini projects that I created

Mini Projects.jpg

What I learned[edit | edit source]

I used three different design software in making these projects: Blender, OpenSCAD, and FreeCAD. This taught me how to use each of them, and which one I liked best (openSCAD).

I also learned, eventually, how to make my printer stop stringing. These three projects did not have rthe best print quality, as you can tell from the picture. Through the amount of stringing and lack of retraction, I found out that my idler wasn't pressing against the filament, it was, well, being idle. Once I fixed that, my Print quality got a whole lot better, as you can see on my projects below.

Rock Wall Hold[edit | edit source]

I designed this using OpenSCAD. I created several spheres and used the hull() feature to go over it. Then I created a model screw and used the difference() feature to remove it.

Propeller[edit | edit source]

I designed the propeller using FreeCAD. It was a lot of fun and I liked how I was able to draw something and then set parameters to it to make it a specific way. I think that if I were to develop something complicated I would use FreeCAD.

Snowman[edit | edit source]

I used Blender for the snowman. I did not like Blender very much. it seems immensely powerful but I had and still have no idea how to maneuver in Blender. I like my snowman's nose, though.


Board Game Project[edit | edit source]

This project is a Board Game that Tobin is designing both through rules and parts. As of now, the parts that are designed are laid out as follows.

The game is designed to simulate the growth of a forest as it goes through periods of disaster and regrowth. the Board will be made up of 21 hexagons of three different varieties, "1", "2", and "3". The files labeled board refer to a different board that is a representation of the actual board. On this board, cups will get placed with different lettered circles in them to show the growth of different trees on the actual board. Different colored cups will instead show disasters, which will harm trees on the board.

These are the rules for the Forest Management Board Game.
These are the rules for the Forest Management Board Game.

The exact rules of the game as of now are only rough approximations. They can be seen on the PDF on the right. The STL files below are the files designed for this part of the game to run. This was created in OpenSCAD. Code for the various pieces of the game can be found at the bottom of the page. They can be used any modified in OpenSCAD.

This game needs five types of trees. One of which I designed myself and present below. Others can be found elsewhere. A tree that I printed was created by user Alzibiff on Thingiverse, which can be found here [1].

File:Forest Management Board Game Action Board.stl

File:Forest Management Board Game Action Token.stl

This is a combined picture of the Forest Management Board game. It includes my work and trees from User Alzibiff on Thingiverse.
This is a combined picture of the Forest Management Board game. It includes my work and trees from User Alzibiff on Thingiverse.

File:Forest Management Board Game Board STL.stl

File:Forest Management Board Game Board ACircle.stl

File:Forest Management Board Game Board BCircle.stl

File:Forest Management Board Game Board Cup.stl

File:Forest Management Board Game Board CCircle.stl

File:Forest Management Board Game Board DCircle.stl

File:Forest Management Board Game ICircle.stl

File:Forest Management Board Game XCircle.stl

File:Forest Management Board Game YCircle.stl

File:Forest Management Board Game ZCircle.stl

File:Forest Management Board Game Board Hexagon1.stl

File:Forest Management Board Game Board Hexagon2.stl

File:Forest Management Board Game Board Hexagon3.stl

File:Forest Management Board Game Tree.stl

Forest Management Board Game.jpg



OSAT project[edit | edit source]

CustomizableHinge(1).jpg


[Customizable Hinges#Customizable Hinges]

The purpose of this project was to create an Open Source Appropriate Technology (OSAT). For my OSAT, I made fully customizable hinges in OpenSCAD. The Abstract for my page is:

"To size up the work done by hinges, you simply have to imagine that every time you want to get in or out of a building you have to do the work as a prisoner trying to escape or a gangster trying to rob a bank, plus the work of those who rebuild either the prison's or the bank's walls." - Bruno Latour[1]. While it is whimsical to think of having to destroy and rebuild a wall every time you want to go inside or outside, it does highlight how necessary hinges are. Not only are they necessary for doors, but windows, toilet seats, and more. In short, hinges are necessary for buildings to function.

United Nations Sustainable Development Goal 9 is "Industry, Innovation, and Infrastructure"[2]. This is related directly to the building, and especially maintaining, of infrastructure. In certain communities, particularly in developing countries, getting access to hinges or replacement hinges can be hard. Especially if a hinge breaks, there may not be a replacement available. There may also be a limited variety of hinges available, none of which will fit. A 3-D printable customizable hinge is OSAT because it provides easy access to whatever size hinge someone needs. The hinge can be adapted for any size screw or nail, and any size rod.


Please see the page for more details. [Customizable Hinges]

Board Game Code[edit | edit source]

Prep Board:

$fn=6;
h=3;
r=9;
module ring(){
    $fn=6;
    translate ([0,0,h]) difference(){
    cylinder(h, 1.2*r, 1.2*r);
    cylinder(h,r,r);
    }
}
module draw(){
    union(){
rotate([0,0,30]) cylinder (h,7*r, 7*r);
ring();
translate ([0,2.5*r,0]) ring();
translate ([0,5*r,0]) ring();
translate ([0,-2.5*r,0]) ring();
translate ([0,-5*r,0]) ring();
translate ([r*2.5*sqrt(3)/2,-1.25*r,0]) ring();
translate ([r*5*sqrt(3)/2,-2.5*r,0]) ring();
translate ([-r*2.5*sqrt(3)/2,-1.25*r,0]) ring();
translate ([-r*5*sqrt(3)/2,-2.5*r,0]) ring();
translate ([r*2.5*sqrt(3)/2,1.25*r,0]) ring();
translate ([r*5*sqrt(3)/2,2.5*r,0]) ring();
translate ([-r*2.5*sqrt(3)/2,1.25*r,0]) ring();
translate ([-r*5*sqrt(3)/2,2.5*r,0]) ring();
translate ([r*2.5*sqrt(3)/2,-3.75*r,0]) ring();
translate ([r*2.5*sqrt(3)/2,3.75*r,0]) ring();
translate ([-r*2.5*sqrt(3)/2,-3.75*r,0]) ring();
translate ([-r*2.5*sqrt(3)/2,3.75*r,0]) ring();
translate ([r*5*sqrt(3)/2,0,0]) ring();
translate ([-r*5*sqrt(3)/2,0,0]) ring();
    }
}
draw();

Cup:

$fn=6;
h=3;
r=9;
difference(){
    base();
    extra();
}
module base(){
cylinder(h,.95*r,.95*r);
translate ([0,0,.6*h])cylinder(2*h,1.2*r,1.2*r);
}
module extra(){
translate([0,0,h]) cylinder (2*h,r,r);
}

Action Board:

h=2.5;
r=40;
module base(){
    cylinder(h,r,r);
}
module flat(){
    difference(){
    difference(){
    rotate([0,90,0])cylinder(r*.5,r/2.8,r/12);
        translate([0,0,h/30])cylinder(h*30,r,r);
        translate([0,0,-(h*30)-h/30])cylinder(h*30,r,r);
    }
    }
}
module cup(){
    hull(){
        flat();
        translate([0,0,h])flat();
    } 
}

module baseTwo(){
difference(){
    difference(){
        difference(){
            difference(){
                difference(){
                    difference(){
translate([0,0,-h/2])base();
translate([-r*.8,0,0])cup();
rotate([0,0,60])translate([-r*.8,0,0])cup();
rotate([0,0,120])translate([-r*.8,0,0])cup();
rotate([0,0,180])translate([-r*.8,0,0])cup();
rotate([0,0,240])translate([-r*.8,0,0])cup();
rotate([0,0,300])translate([-r*.8,0,0])cup();
                    }
                }
            }
        }
    }
}
}
module run(){
    union(){
        baseTwo();
        rotate([0,0,30])translate([0,1.8*r/2,h/2])linear_extrude (height=h/10) text("1", halign = "center", valign="center",size=r/9,font="liberation Sans");
        rotate([0,0,90])translate([0,1.8*r/2,h/2])linear_extrude (height=h/10) text("2", halign = "center", valign="center",size=r/9,font="liberation Sans");
        rotate([0,0,150])translate([0,1.8*r/2,h/2])linear_extrude (height=h/10) text("3", halign = "center", valign="center",size=r/9,font="liberation Sans");
        rotate([0,0,210])translate([0,1.8*r/2,h/2])linear_extrude (height=h/10) text("4", halign = "center", valign="center",size=r/9,font="liberation Sans");
        rotate([0,0,270])translate([0,1.8*r/2,h/2])linear_extrude (height=h/10) text("5", halign = "center", valign="center",size=r/9,font="liberation Sans");
        rotate([0,0,330])translate([0,1.8*r/2,h/2])linear_extrude (height=h/10) text("6", halign = "center", valign="center",size=r/9,font="liberation Sans");
    }
}
run();
</syntaxhighlight>
Action Token:<syntaxhighlight>
h=2.5;
r=40;
module flat(){
    difference(){
    difference(){
    rotate([0,90,0])cylinder(r*.48,r/2.8,r/12);
        translate([0,0,h/30])cylinder(h*30,r,r);
        translate([0,0,-(h*30)-h/30])cylinder(h*30,r,r);
    }
    }
}
module underFlat(){
    translate([r*.03,0,0])difference(){
    difference(){
    rotate([0,90,0])cylinder(r*.44,r/3.2,r/13);
        translate([0,0,h/30])cylinder(h*30,r,r);
        translate([0,0,-(h*30)-h/30])cylinder(h*30,r,r);
    }
    }
}
module cup(){
    hull(){
        underFlat();
        translate([0,0,h])underFlat();
    } 
}
module cupBad(){
    translate([0,0,h])hull(){
        flat();
        translate([0,0,h])flat();
    }
}
module superFlat(){
    difference(){
    difference(){
    rotate([0,90,0])cylinder(r*.56,r/2.4,r/10);
        translate([0,0,h/30])cylinder(h*30,r,r);
        translate([0,0,-(h*30)-h/30])cylinder(h*30,r,r);
    }
    }
}
module superCup(){
    hull(){
        translate([-r*.03,0,0])superFlat();
        translate([-r*.03,0,0])translate([0,0,h])superFlat();
    }
}
module run(){
    difference(){
        union(){
            cup();
            translate([0,0,h/2])superCup();
        }
        cupBad();
    }
}
translate([-r*.8,0,0])run();
/*
rotate([0,0,60])translate([-r*.8,0,0])run();
rotate([0,0,120])translate([-r*.8,0,0])run();
rotate([0,0,180])translate([-r*.8,0,0])run();
rotate([0,0,240])translate([-r*.8,0,0])run();
rotate([0,0,300])translate([-r*.8,0,0])run();
*/

Customizable Circle:

//height
h=3;
//radius of circle
r=9;
//Thsi is the letter that will be on top of the circle. Enter a different letter to get a different letter on top.
write="A";
union(){
cylinder(h/3,.7*r,.7*r,$fn=30);
 linear_extrude (height=h/2) text(write, halign = "center", valign="center",size=7*r/9,font="liberation Sans");
}

Customizable Hexagon:

//This is the radius of the hexagon
r=22;
//This is the height of the hexagon
h=2.5;
$fn=6;
//This is the number that will be displayed on the hexagon
num="1";
difference(){
cylinder(h,r,r);
translate ([0,0,4*h/5])
linear_extrude (height=h) text(num, halign = "center", valign="center",size=17*r/22,font="liberation Sans");
}
</syntaxhighlight>
Player Border:<syntaxhighlight>
r=22;
h=2.5;
module badOne(){
    $fn=6;
cylinder(h,r*1.03,r*1.03);
}
module hex (){
    $fn=6;
    cylinder(1,r*1.1,r*1.1);
}
module hexTwo(){
    $fn=6;
    cylinder(1,r*1.07,r*1.07);
}
module combine() {
    translate([0,0,h])hex();
    translate([0,0,h-1])hexTwo();
}
module badTwo (){
    $fn=6;
    cylinder(h+1,r*.95,r*.95);
}
module run(){
    difference(){
        difference(){
            combine();
            badOne();
        }
        badTwo();
    }
}
run();

Tree:

s=8;
h=10;
$fn=50;
union(){
cylinder(h,s,0);
translate([0,0,s/2])cylinder(h-2.5,s-2.5,0);
translate([0,0,s])cylinder(h-5,s-5,0);
}
FA info icon.svg Angle down icon.svg Page data
Authors Tobin Blair
License CC-BY-SA-4.0
Language English (en)
Related 0 subpages, 4 pages link here
Impact 371 page views
Created February 17, 2023 by Tobin Blair (He/They)
Modified February 28, 2024 by Felipe Schenone
Cookies help us deliver our services. By using our services, you agree to our use of cookies.