VESA 75 to 100 Adapter
An adapter plate that lets a monitor or small TV with a VESA 75 x 75 mount attach to an arm or wall bracket made for VESA 100 x 100, or the other way around by flipping it over. The small pattern is counterbored on the arm side so the M4 cap screw heads sit flush, and the large pattern has hex nut traps on the device side, so both faces stay flat and every screw can be tightened without interference. The plate is 118 x 118 x 8 mm with a lightening hole in the center. Print it flat with the counterbored face on the bed and no supports; a one-layer sacrificial membrane bridges each counterbore and is pushed out with the screw afterwards. Thickness, edge margin, corner radius, the two hole patterns (50/75 and 75/100), screw clearance, counterbore and nut trap sizes and the center hole can all be adjusted.
# VESA Adapter - mount a 75 x 75 device on a 100 x 100 arm
#
# One flat plate carrying two VESA MIS-D square hole patterns (M4 screws).
# How it is used:
# 1. Bottom face (Z = 0) faces the arm. Put four M4 cap screws through the
# small (75) pattern from this side, heads sinking into the counterbores,
# and screw them into the threaded inserts of the monitor or TV.
# 2. Drop four M4 hex nuts into the traps of the large (100) pattern on the
# top face (the device side), then bolt the arm plate on from the arm side.
# Heads and nuts sit below the plate surfaces, so both faces stay flat.
# Reversed use (100 device on a 75 arm) works by flipping the plate over.
#
# Print flat as modeled, bottom face on the bed, no supports.
# The counterbores open onto the bed, so each one is capped by a one-layer
# sacrificial membrane over the screw hole: the printer bridges a plain disk
# instead of a ring. Poke it out with the screw or a 4 mm drill after printing.
@param choices:[50, 75] desc:"Small VESA pattern, counterbored on the bottom face (mm)" group:"Patterns"
small = 75
@param choices:[75, 100] desc:"Large VESA pattern, nut traps on the top face (mm)" group:"Patterns"
large = 100
@param 5..12 step:0.5 desc:"Plate thickness (mm)" group:"Plate"
thick = 8
@param 6..15 step:0.5 desc:"Material from a large-pattern hole to the plate edge (mm)" group:"Plate"
margin = 9
@param 2..15 step:1 desc:"Corner radius of the plate (mm)" group:"Plate"
corner_r = 8
@param desc:"Lightening hole in the center" group:"Plate"
center_hole = true
@param 4.3..5 step:0.05 desc:"M4 screw clearance hole diameter (mm)" group:"Fasteners"
hole_d = 4.6
@param 7.5..10 step:0.1 desc:"Counterbore diameter for M4 cap screw heads (mm)" group:"Fasteners"
cb_d = 8.6
@param 2..6 step:0.1 desc:"Counterbore depth (mm)" group:"Fasteners"
cb_depth = 4.3
@param 7..7.8 step:0.05 desc:"Nut trap width across flats, M4 nut is 7 (mm)" group:"Fasteners"
nut_af = 7.3
@param 2..5 step:0.1 desc:"Nut trap depth, M4 nut is 3.2 (mm)" group:"Fasteners"
nut_depth = 3.5
@param 0..0.4 step:0.05 desc:"Sacrificial bridge layer over counterbored holes, 0 = open (mm)" group:"Fasteners"
sac = 0.2
# --- Derived sizes ----------------------------------------------------
size = large + 2 * margin # plate is square
hs = small / 2
hl = large / 2
nut_r = nut_af / sqrt(3) # hexagon circumradius
center_d = small * 0.55 # leaves a wide ring around the small pattern
assert large > small
assert cb_depth + sac + 2 <= thick # at least 2 mm under each screw head
assert nut_depth + 2 <= thick # at least 2 mm behind each nut
assert hs * sqrt(2) - center_d / 2 - cb_d / 2 >= 5 # web between center hole and counterbores
# --- Plate --------------------------------------------------------------
blank = rect size size | extrude thick
| edges =Z | fillet corner_r
| edges >Z | chamfer 0.8
# Large pattern: through holes plus hex nut traps opening on the top face
zl = thick / 2
large_holes = cylinder (hole_d / 2) (thick + 2) at:[(hl, hl, zl), (-hl, hl, zl), (hl, -hl, zl), (-hl, -hl, zl)]
nut_set = polygon 6 nut_r at:[(hl, hl), (-hl, hl), (hl, -hl), (-hl, -hl)]
| extrude (nut_depth + 1) | translate 0 0 (thick - nut_depth)
# Small pattern: counterbores from the bottom, hole starts above the membrane
zc = (cb_depth - 1) / 2
zs = cb_depth + sac + thick / 2
cb = cylinder (cb_d / 2) (cb_depth + 1) at:[(hs, hs, zc), (-hs, hs, zc), (hs, -hs, zc), (-hs, -hs, zc)]
small_holes = cylinder (hole_d / 2) thick at:[(hs, hs, zs), (-hs, hs, zs), (hs, -hs, zs), (-hs, -hs, zs)]
drilled = blank - large_holes - nut_set - cb - small_holes
plate = if center_hole then (drilled - (cylinder (center_d / 2) (thick + 2) at:0 0 zl)) else drilled
assert plate.solids == 1
assert plate.valid
assert plate.bbox.x ~ size
assert plate.bbox.y ~ size
assert plate.bbox.z ~ thick
print "plate bbox" plate.bbox
print "volume mm3" plate.volume
plate