So OpenSCAD is a big deal– it’s a tiny 7mb download that gives you the world of constructive solid geometric modeling in the form of something that looks at least a fair bit like C, and is modular and scalable to pretty complex geometry. However, it’s kind of got the, uh, opposite problem of Blender. Where Blender looks kind of like a space station, bristling with buttons the minute you open it, OpenSCAD looks like this:

It’s pretty much a blank page. However, modern versions of OpenSCAD, like Processing and the Arduino environment, come with examples, pre-linked in the file menu. However, if you’re a 3D newbie or just haven’t done much with solid geometry, even the first example file is maybe a little daunting at almost half a page, with rotations and intersections and stuff. We’ll start with the simplest file that will render, export, and print. Ready?
cube(40);
Riveting, right? That’s a 40mm cube sitting with one corner on the origin. (You can go to the View menu to show the origin, which can be really helpful.) If you hit F5, OpenSCAD will display this cube in the window on the right, and you can drag in that window to rotate the view around, and roll your scroll wheel to zoom. Pretty easy, and fairly boring. Let’s make this one step more complicated to get a compound shape:
union(){
cube(40);
translate([10, 10, 30]){cube(20);}
}
This file has two new operations: translate and union. Once you’ve typed or copy-pasted this into your window, hitting F5 will give you a cube with a bump on the top. This is done with two new operations, so let’s tackle them one at a time. First, the translate operator. The translate operator takes a triplet of numbers (also known as a 3D vector) which moves the contents of the brackets after it in three dimensions by the three numbers stated. Inside the brackets, we’ve put a cube of size 20, which starts like the first one with its corner at the origin, but is then moved by the translate operator ten units right, ten units forward, and thirty units up.
Surrounding both cubes in the descriptive language here is the union operator, which binds these two cubes together as one object so that when the file is rendered to an STL file, it will seamlessly combine these two cubes into one object. (This isn’t a hard object to model in Blender, but when you’re unioning a lot of objects Blender will kick up its legs and die where OpenSCAD will keep chugging merrily along.)
If you replace the word union with the word difference here, you’ll get the difference operator, which cuts the second cube out of the first. Union and difference operators are basically the core of how this geometry tool works, and you can get a lot done with just those and the cube, sphere and cylinder primitives. Here’s a simple file that makes use of all three primitives to get you started with them:
union(){
cube([40,40,4],true);
cylinder(40,15,5);
translate([0,0,40])sphere(10);
}
The cube primitive here has been given a vector instead of a single number, which allows you to make it any rectangular solid rather than a simple cube. The “true” keyword at the end of either a cube or a cylinder statement sets the primitive to start centered on the origin. (This is all the free translation you get though, after that you must use the translate command.)

So hopefully this was simple enough for those new to 3D and CSG but had enough content to get you properly started– the surveys so far seem to indicate there’s a lot of desire for extremely simple examples so hopefully this fits the bill.