Universal Mount

A standardised, 3D-printable mounting system from the go3dp project. See the full design document for the review of existing designs, the parameter table, and the v0/v1/v2 build plan.

v0 — solid octagonal frustum, size series

The first build target: a solid octagonal frustum block, fastened to a wall (or any flat surface) by countersunk wood screws passing axially through it. The 45° outer slope means every external face prints support-free in any of six orthogonal orientations. Adaptors will attach by sliding onto the outer face — that mating geometry is deferred to the next stage; v0 currently has no central insert and no clamp screw.

All four sizes are 2 mm tall. The screw head is recessed 0.25 mm below the outer face so it cannot foul whatever sits against it. All sizes use the same Spax 3.5 × 16 wood screw (see the parts catalogue).

Each size ships in three printable parts plus a non-printed negative volume for integration into other prints:

  • Block — small face on the wall, large face out. Fixed to the wall with countersunk wood screws.
  • Blockcut (negative volume, not printed) — the cavity-and-slot shape to subtract from a host object (cup, holder, bracket) so a v0 block can slide into it laterally and lock at the centre. Octagonal frustum at the origin (block + per-face tolerance) unioned with a 45°-tapered slot extending +X to a flat square end. Use the STL or 3MF as a Boolean subtraction in CAD; the resulting cavity prints support-free in the same orientation as the block.
  • Cover cap — rectangular cuboid that slides laterally over a wall-mounted v0 block. Cavity matches V0BlockCut (octagonal recess + tapered slot extending +X). The +X face is the slide-in opening; the other four closed faces (-X, ±Y, +Z) carry 2.5 mm of wall material. Sits flush with the wall on z=0.
  • Slide-on adaptor (first member of the adaptor family) — a separate sleeve that slides laterally over the block and provides a flat surface for attachments. Open at one end, closed at the other with a half-octagonal cap, with the v0 mount captured inside via a cavity matching the v0 frustum + a per-material tolerance (0.15 mm per face for PLA at 0.4 mm nozzle / 0.2 mm layer height — see V0AdaptorPLA for the full preset). Future adaptor types (hooks, brackets, pipe saddles) will share the same pocket geometry but vary the outer "utility" portion.
Variant Wall screws Layout Wi (wall) Wo (room) H
v0-XS 1 central 10 mm 14 mm 2 mm
v0-S 2 Y axis at ±6 mm 22 mm 26 mm 2 mm
v0-M 3 equilateral triangle, R = 10 mm 30 mm 34 mm 2 mm
v0-L 3 equilateral triangle, R = 15 mm 40 mm 44 mm 2 mm

Triangles are oriented with the first vertex at +Y (12 o'clock).

Variants

v0-XS — single central screw

Block

Cross section

axial cutaway

Top view (z = H/2)

top cutaway

Downloads

Blockcut

Cross section

axial cutaway

Top view (z = H/2)

top cutaway

Downloads

Cover

Cross section

cover axial cutaway

Top view (z = H/2)

cover top cutaway

Downloads

Adaptor (slide-on, PLA)

Cross section

adaptor axial cutaway

Top view (z = H/2)

adaptor top cutaway

Downloads

v0-S — two screws on the Y axis

Block

Cross section (through Y = 0, between the two screws)

axial cutaway through centre

Cross section (through +Y screw at Y = 6)

axial cutaway through +Y screw

Top view (z = H/2)

top cutaway

Downloads

Blockcut

Cross section (through Y = 0)

axial cutaway

Cross section (through +Y screw at Y = 6)

axial cutaway through +Y screw

Top view (z = H/2)

top cutaway

Downloads

Cover

Cross section (through Y = 0)

cover axial cutaway

Cross section (through +Y screw)

cover axial cutaway through +Y screw

Top view (z = H/2)

cover top cutaway

Downloads

Adaptor (slide-on, PLA)

Cross section (through Y = 0)

adaptor axial cutaway

Cross section (through Y = 6)

adaptor cutaway through Y=6

Top view (z = H/2)

adaptor top cutaway

Downloads

v0-M — three screws on a 10 mm triangle

Block

Cross section (through Y = 0, between two of the three screws)

axial cutaway through centre

Cross section (through the +Y vertex screw)

axial cutaway through +Y vertex

Top view (z = H/2)

top cutaway

Downloads

Blockcut

Cross section (through Y = 0)

axial cutaway

Cross section (through +Y vertex screw)

axial cutaway through +Y vertex

Top view (z = H/2)

top cutaway

Downloads

Cover

Cross section (through Y = 0)

cover axial cutaway

Cross section (through +Y vertex screw)

cover axial cutaway through +Y vertex

Top view (z = H/2)

cover top cutaway

Downloads

Adaptor (slide-on, PLA)

Cross section (through Y = 0)

adaptor axial cutaway

Cross section (through Y = 10)

adaptor cutaway through Y=10

Top view (z = H/2)

adaptor top cutaway

Downloads

v0-L — three screws on a 15 mm triangle

Block

Cross section (through Y = 0)

axial cutaway through centre

Cross section (through the +Y vertex screw)

axial cutaway through +Y vertex

Top view (z = H/2)

top cutaway

Downloads

Blockcut

Cross section (through Y = 0)

axial cutaway

Cross section (through +Y vertex screw)

axial cutaway through +Y vertex

Top view (z = H/2)

top cutaway

Downloads

Cover

Cross section (through Y = 0)

cover axial cutaway

Cross section (through +Y vertex screw)

cover axial cutaway through +Y vertex

Top view (z = H/2)

cover top cutaway

Downloads

Adaptor (slide-on, PLA)

Cross section (through Y = 0)

adaptor axial cutaway

Cross section (through Y = 15)

adaptor cutaway through Y=15

Top view (z = H/2)

adaptor top cutaway

Downloads

Building

task v0           # all sizes, block + cover, STL + 3MF + SVG
task v0:xs        # XS only (block + cover)
task v0:s         # S only
task v0:m         # M only
task v0:l         # L only
task v0:block     # all sizes, block only
task v0:cover     # all sizes, cover only
task v0:adaptor   # all sizes, slide-on adaptor only (PLA tolerances)
task v0:stl       # all sizes, STL only
task v0:3mf       # all sizes, 3MF only
task v0:svg       # all sizes, SVG cutaways only
task docs:build   # this page, rendered to docs/index.html

3MF mesher selection

3MF output goes through one of three mesher pipelines. The choice is set with -mesh on go run .; the Taskfile uses the default.

-mesh Pipeline When to use
merge dual contouring + planar-region merge Default. Smallest files; collapses each flat face to a fan of triangles. Adaptors shrink ~95%, blocks/covers 15–35%.
dc dual contouring only Same triangle count as merge before merging — useful to bisect a slicer issue blamed on the merge step.
octree octree + marching cubes Original pipeline. Use if a slicer rejects the merged output (potential T-junctions across faces) or to compare.

Examples:

go run . -size=m -out=3mf                # default: merge
go run . -size=m -out=3mf -mesh=dc       # dual contouring without merging
go run . -size=m -out=3mf -mesh=octree   # marching cubes (largest files)