# OpenSCAD Seminar

**Seminar on "Parametric modeling with OpenSCAD" by Mitja**

We will give an introduction to parametric modeling and design a few things with OpenSCAD.

## Basic Control

Have a look at OpenSCAD's user manual for more information and specific functions!

- type into the editor on the left
- whenever you are ready to compile your code to see it in the 3D preview on the right, you can click "preview" or hit F5

- group
*arguments*with`{ ... }`

- group
*objects*by applying`union()`

to a group of arguments - important for CNC!

- group
- subtract
*objects*or groups of objects from each other with`difference()`

- everything is subtracted from the first object or union after this function

`!`

at the beginning of a line shows only that operation`#`

at the beginning of a line shows that object as defined, e.g. also the superfluous parts of a hole

## First Steps

We start by defining a small cube (units in mm) with `cube([2,2,2]);`

.

- center the cube by adding
`center=true`

after the vector, between**]**and**)** - translate (move) the cube by calling
`translate([2,0,0])`

- it will end up two mm further in positive X direction

After also tinkering with some spheres and cylinders (enter `$fn=`

followed by a number to define your desired face count, high numbers increase rendering time!), let's move on to parametric designs.

## Parametric Designs

We'll make an "L" with adjustable side lengths and a parametric hole.

The "L" is rather simple and consists of two "cubes" that are actually rectangles due to the entered values. By adding the global variable "edge_length", we can later change the dimensions of the entire letter while keeping its proportions:

edge_length = 5; union() { cube([1*edge_length,5*edge_length,1*edge_length]); cube([3*edge_length,1*edge_length,1*edge_length]); }

Then, we add a hole with a corresponding "hole_diameter" variable and turned the L into a module which can then be called similar to `cube`

or `sphere`

from the first examples:

module L(edge_length, hole_diameter) { difference() { union() { cube([1*edge_length,5*edge_length,1*edge_length]); cube([3*edge_length,1*edge_length,1*edge_length]); } translate([edge_length/2, edge_length/2, -1]) cylinder(r=hole_diameter/2, h=edge_length+2, $fn=20); //sticks out 1 mm at top/bottom, "centered" in corner } } L(4,1); translate([15,0,0]) L(6,2);

The last two lines in this example create two "L" shapes with different sizes, one of which starts at the origin while the other is moved 15 mm in X direction.

### Uploading to Thingiverse (Customizer)

Uploading the design to Thingiverse is easy, just click "This is a customizer" in the process and the app will automaticall parse your variable names and the associated comments. Make sure to comment precisely and understandably so others enjoy your customizable creation!