Course description

This course provides an introduction to distributed additive manufacturing (AM) using open-source Fused Deposit Modeling (FDM) 3D printing. We will be developing prototypes based on original objects, improvements on projects already existing extending on performance, design or function.

We will provide an overview of open-source hardware and technological development in theory and in practice.

The course is built around a selection of progressively more challenging exercises use to teach students OpenSCAD so they can solve just about any 3D printing design challenges.

Classes

The classes will take place in Room C -1.6 (basement) of the Civil Engineering — ISEL building at the lab Oficina Digital.


Required Course Material

Textbook
J.M. Pearce, The Open-Source Lab (Elsevier,2014). Other reading will be handouts in class, on-line reading, and emailed pdfs. A physical copy of the book is available at the lab. Also see schedule.
Free and opensource software
You'll need to install these software OpenSCAD, FreeCAD, LULZbot CURA, Meshlab, slic3r
Material
You will need to bring a laptop for every class.
Buy
1.75mm diameter PLA roll (any color, no solid additives: wood, metal, etc, ...) which can, for example, be purchased online or at the physical stores Mauser. Purchased can be done individually or in group.

Course content

  1. Rapid prototyping and 3D printing machines
  2. Software tools: CAD, CAM tools, slicer, g-code and calibration
  3. 3D design with OpenSCAD and parametric design
  4. Distributed digital fabrication and 3D printing
  5. Projects: from digital modeling to 3D printing

Course Schedule

Class #1 (211004)
What is a RepRap? Presentation, constructions, projects, evaluation and tasks. Open an account on youmagine, check the videos Replicating Rapid Prototyper, The RepRap project: an open source/open hardware movement for 3D-printing.

Class #2 (211004)
1st project

Rules
Create an account on Youmagine, Use OpenSCAD to design the stand better than this. Derivative works of any other design are permitted, but not the use of "randomly found code on the internet" ;)

Class #3 (211011)
RepRap project, brief history: different type of printers. Cartesian vs parallel robot. Evolution.

Class #4 (211011)
Designing and building a better phone stand. It's harder than it seems.

Class #5 (211018)
Limits on what can you print. Tips and tricks for a reasonable design. Checking 1st design project.

Class #6 (211018)
Working witha 3D printer: the basics.

Class #7 (211019)
What's in a 3dprinter sclicer profile? Parameters!?

Class #8 (211025)
Print Quality Troubleshooting Guide.

Class #9 (211025)
New project: Upcycling Common Glass Objects.

Class #10 (211101)
Up with the 2nd project.

Class #11 (211102)
Up with the 2nd project.

Class #11 (211108)
2nd project.

Class #12 (211108)
2nd project.

Class #13 (211115)
Finishing up: 2nd project.

Class #14 (211122)
Finishing up: 2nd project. Introducing the 3rd project. Some refs.:

OpenSCAD example.

// Example

m=5;
n=9;
h=10;

rvase=30;
lvase=80;
d=10;

theta=.25*360/(n-1);

translate([0,0,lvase/2])
rotate([0,0,theta])
cylinder(h=lvase,r=rvase,center=true);

for(j=[0:m-2]){
    for(i=[0:n-2]){
        rotate([0,0,i*360/(n-1)+pow(-1,j)*theta])
        translate([rvase-3,0,(d+h)*j+d])
        rotate([90,0,0])sphere(d,$fn=5);
    }}

Print it with "spiral mode". Dimensions should be: height 80mm and base_radius 30mm.


Class #15 (211129)
2nd project ended. Finishing up 3rd project.

Class #16 (211130)
4rd and final project.

Small list of projects

Lamps

Screws, engineering, drones

Audio

Robot and machines

Paste 3D printing

Cientific stuff

Musical instruments

Furniture

Plants

Prosthetic Devices


Polycylinder: OpenSCAD

//
// Mendel90
//
// GNU GPL v2
// nop.head@gmail.com
// hydraraptor.blogspot.com
//
// See http://hydraraptor.blogspot.com/2011/02/polyholes.html
//

function sides(r)=max(round(4*r),3);
function corrected_radius(r,n=0)=0.1+r/cos(180/(n ? n : sides(r)));
function corrected_diameter(d)=0.2+d/cos(180/sides(d/2));

module poly_circle(r,center=false){
    n=sides(r);
    circle(r=corrected_radius(r,n),$fn=n,center=center);}

module poly_cylinder(h,r,center=false){
    n=sides(r);
    cylinder(h=h,r=corrected_radius(r,n),$fn=n,center=center);}

module poly_d_cylinder(r,center=false){
    n=sides(r);
    r=corrected_radius(r,n);
    cylinder(h=h,r=r,$fn=n,center=center);
    translate([0,-r,0])
    cube([r,2*r,h]);}


module poly_sphere(r,center=false){
    n=sides(r);
    sphere(r=corrected_radius(r,n),$fn=n,center=center);}

Open Source Appropriate Technology

Other stuff

Created: 10-09-2019 [11:19]

Last updated: 16-02-2026 [16:02]


For attribution, please cite this page as:

Charters, T., "Design and 3D Printing Course": https://nexp.pt/di3d2122.html (16-02-2026 [16:02])


(cc-by-sa) Tiago Charters - tiagocharters@nexp.pt