component
SMP-MSCM-PCS12T
Public Made by Adomby adom
Amphenol RF RF Coaxial Connectors (SMP jack), SMP_MSCM_PCS12T. KiCad symbol, footprint and 3D as used on Adom boards.
main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
#!/usr/bin/env python3
"""Adom-built 3D model of Amphenol RF SMP-MSCM-PCS12T (SMP smooth-bore jack, surface mount, catcher's mitt),
CC-BY-SA-4.0.
Source: Amphenol RF customer outline drawing SMP-MSCM-PCS12T Rev A (29-JUN-20, ECN 15254), sheet 2 of 3,
https://www.amphenolrf.com/en-us/assets/file/4067489470/ . Amphenol's own STEP is behind a login, so this model
is built from the drawing. Built directly in the footprint frame (identity binding): Z-up, z = 0 = PCB top surface
(the seating plane), origin on the connector axis (the centre of the 6.5 mm ground land), the contact tail runs
toward the centre pad, which is -y here (KiCad +y, y down).
Printed dimensions used as printed (REF on the drawing): base square 6, corner chamfers on a circle of 8, body 6 dia,
4.1 from the seating plane to the interface plane, contact tail 0.38 wide and 0.55 past the base edge.
Measured off the drawing (side view 220.5 px/mm and bottom view 231.5 px/mm at 300 dpi; the printed 4.1, 2.8,
1.27, 6 and 0.55 measure true within 0.02 mm):
square flange 0..1.23; conical shoulder 1.23..1.81 from the 8 circle down to the body diameter 6 (its trace on
the flat sides is the curve in the side view); body cylinder 6 from 1.81 to 2.40; PTFE cap 6.80 diameter from 2.40 to 4.40 (its top wall is 0.30 above the
4.1 interface plane), 0.10 top chamfer; LCP insulator 4.43 diameter with a 1.78 wide tongue to 2.44 from the
axis, recessed 0.36 above the seating plane; base notch 1.98 wide from the insulator to the base edge;
contact tail z 0.05..0.36, 0.86 wide round head on the axis, tapering to 0.38 by 0.70 from the axis, tail end
3.55 from the axis.
Not modelled: the jack's bore and male pin under the cap (hidden by the PTFE cap as supplied).
usage: build_smp-mscm-pcs12t.py <out.step>
"""
import sys, math
import cadquery as cq
OUT = sys.argv[1]
SQ, R8 = 6.0, 4.0
Z_FL, Z_SH, Z_CAP0, Z_TOP = 1.23, 1.81, 2.40, 4.40
D_BODY, D_CAP, CAP_CH = 6.0, 6.80, 0.10
D_INS, TONGUE_W, TONGUE_L, Z_INS = 4.43, 1.78, 2.44, 0.36
NOTCH_W = 1.98
T_Z0, T_Z1, HEAD_D, HEAD_FLAT, TAPER_END, TAIL_W, TAIL_END = 0.05, 0.36, 0.86, 0.46, 0.70, 0.38, 3.55
h = SQ / 2
c = math.sqrt(R8 ** 2 - h ** 2) # 2.646: the chamfer meets the square side on the 8 circle
oct_pts = [(h, -c), (h, c), (c, h), (-c, h), (-h, c), (-h, -c), (-c, -h), (c, -h)]
flange = cq.Workplane('XY').polyline(oct_pts).close().extrude(Z_FL)
shoulder = (cq.Workplane('XY').workplane(offset=Z_FL).polyline(oct_pts).close().extrude(Z_SH - Z_FL)
.intersect(cq.Workplane().add(cq.Solid.makeCone(R8, D_BODY / 2, Z_SH - Z_FL, cq.Vector(0, 0, Z_FL)))))
cyl = cq.Workplane('XY').workplane(offset=Z_SH).circle(D_BODY / 2).extrude(Z_CAP0 - Z_SH)
body = flange.union(shoulder).union(cyl)
# underside: insulator bore + tongue through the flange, notch for the contact tail to the edge
pocket = (cq.Workplane('XY').circle(D_INS / 2).extrude(Z_FL)
.union(cq.Workplane('XY').center(0, -TONGUE_L / 2).rect(TONGUE_W, TONGUE_L).extrude(Z_FL)))
notch = cq.Workplane('XY').center(0, -(h + 0.5) / 2).rect(NOTCH_W, h + 0.5).extrude(Z_INS)
body = body.cut(pocket).cut(notch)
insul = (cq.Workplane('XY').workplane(offset=Z_INS).circle(D_INS / 2).extrude(Z_FL - Z_INS)
.union(cq.Workplane('XY').workplane(offset=Z_INS).center(0, -TONGUE_L / 2).rect(TONGUE_W, TONGUE_L).extrude(Z_FL - Z_INS)))
cap = (cq.Workplane('XY').workplane(offset=Z_CAP0).circle(D_CAP / 2).extrude(Z_TOP - Z_CAP0)
.faces('>Z').edges().chamfer(CAP_CH))
r = HEAD_D / 2
outline = [(-r, 0), (-r, -HEAD_FLAT), (-TAIL_W / 2, -TAPER_END), (-TAIL_W / 2, -TAIL_END), (TAIL_W / 2, -TAIL_END),
(TAIL_W / 2, -TAPER_END), (r, -HEAD_FLAT), (r, 0)]
contact = (cq.Workplane('XY').workplane(offset=T_Z0).polyline(outline).threePointArc((0, r), (-r, 0)).close()
.extrude(T_Z1 - T_Z0))
gold = cq.Color(0.83, 0.69, 0.22)
lcp = cq.Color(0.86, 0.81, 0.68)
ptfe = cq.Color(0.94, 0.94, 0.92)
asm = cq.Assembly(name='SMP-MSCM-PCS12T')
asm.add(body, name='body', color=gold)
asm.add(insul, name='insulator', color=lcp)
asm.add(contact, name='contact', color=gold)
asm.add(cap, name='cap', color=ptfe)
asm.save(OUT, 'STEP')
hdr = ('/* SMP-MSCM-PCS12T 3D model (Amphenol RF SMP jack, surface mount), Adom-built from Amphenol RF customer\n'
' * outline drawing SMP-MSCM-PCS12T Rev A. Copyright (C) 2026 Adom, Inc. Licensed CC-BY-SA-4.0\n'
' * (https://creativecommons.org/licenses/by-sa/4.0/). Builder: provenance/tools/build_smp-mscm-pcs12t.py */\n')
s = open(OUT).read().replace('HEADER;\n', 'HEADER;\n' + hdr, 1)
open(OUT, 'w').write(s)
bb = cq.Compound.makeCompound([body.val(), insul.val(), contact.val(), cap.val()]).BoundingBox()
print(f'{OUT}: x {bb.xmin:.3f}..{bb.xmax:.3f} y {bb.ymin:.3f}..{bb.ymax:.3f} z {bb.zmin:.3f}..{bb.zmax:.3f}')