Skip to main content



TODO -> outline to case illustration

Cases add a pretty basic and minimal 3D aspect to the generation process. In this phase, we take different outlines (defined in the previous section, even the "private" ones), extrude and position them in space, and combine them into one 3D-printable object. That's it. Declarations might look something like the following:

cases:    case_name:        - what: outline # default option          name: <outline ref>          extrude: num # default = 1          shift: [x, y, z] # default = [0, 0, 0]          rotate: [ax, ay, az] # default = [0, 0, 0]          operation: add | subtract | intersect # default = add        - what: case          name: <case_ref>          # extrude makes no sense here...          shift: # same as above          rotate: # same as above          operation: # same as above        - ...    ...

Individual case parts can be both arrays or objects, just like with outline parts previously. Use whichever is more convenient.

When the what is outline, name specifies which outline to import onto the xy plane, while extrude specifies how much it should be extruded along the z axis. When the what is case, name specifies which previously defined case to use. After having established our base 3D object, it is (relatively!) rotated, shifted, and combined with what we have so far according to operation. If we only want to use an object as a building block for further objects, we can employ the same "start with an underscore" trick we learned at the outlines section to make it "private".

Individual case parts can again be listed as an object instead of an array, if that's more comfortable for inheritance/reuse (just like for outlines). And speaking of outline similarities, the [+, -, ~] plus name shorthand is available again. First it will try to look up cases, and then outlines by the name given. Stacking is omitted as it makes no sense here.


Simple Extrusion

Unibody Case