--- /dev/null
+#!/usr/bin/python3
+# Copyright 2020 by Bdale Garbee <bdale@gag.com>. GPLv3
+#
+# Program to emit PCB footprint for switchcraft 5-pin mini-XLR, TRAPC5MX
+#
+
+# dimensions in mils from TRAPC_X-TRASM_X_SERIES_CD.PDF
+# reference plane is board edge (shoulder for box wall opening)
+
+BodyWidth = 530 # connector body outline
+BodyHeight = 400
+NoseWidth = 437 # threaded "snout" that projects through box wall
+NoseHeight = 280
+
+Mnt_Y = 135 # how far mounting studs are back from plane
+Mnt_X = 470 # mounting studs center to center
+Mnt_Drill = 70 # mounting hole diameter
+Mnt_Thickness = 120 # mounting hole pad diameter
+Mnt_Mask = 130 # opening in mask for mounting hole
+
+Pin_Y = (110 + Mnt_Y) # how far first pin row is back from plane
+PinSpacing = 100 # space between rows and between pins in a row
+Pin_Drill = 40 # signal pin hole diameter
+Pin_Thickness = 65 # signal pin hole pad diameter
+Pin_Mask = 75 # opening in mask for signal pin
+
+Clearance = 15
+SilkLine = 5
+
+import sys
+
+print ('# author: Bdale Garbee')
+print ('# email: bdale@gag.com')
+print ('# dist-license: GPL 3')
+print ('# use-license: unlimited')
+
+# Pin (rX rY Thickness Clearance Mask Drill "Name" "Number" NFlags)
+
+print ('Element[0x0 "trapc5mx" "" "" 0 0 0 0 0 100 0x0]')
+print ("(")
+print (' Pin(',\
+ (Mnt_X / 2), \
+ Mnt_Y, \
+ Mnt_Thickness, \
+ Clearance, \
+ Mnt_Mask, \
+ Mnt_Drill, \
+ '"pin6" "6" 0x0001)')
+
+print (' Pin(',\
+ -(Mnt_X / 2), \
+ Mnt_Y, \
+ Mnt_Thickness, \
+ Clearance, \
+ Mnt_Mask, \
+ Mnt_Drill, \
+ '"pin6" "6" 0x0001)')
+
+print (' Pin(',\
+ (PinSpacing / 2), \
+ Pin_Y, \
+ Pin_Thickness, \
+ Clearance, \
+ Pin_Mask, \
+ Pin_Drill, \
+ '"pin2" "2" 0x0001)')
+
+print (' Pin(',\
+ -(PinSpacing / 2), \
+ Pin_Y, \
+ Pin_Thickness, \
+ Clearance, \
+ Pin_Mask, \
+ Pin_Drill, \
+ '"pin3" "3" 0x0001)')
+
+print (' Pin(',\
+ PinSpacing, \
+ (Pin_Y + PinSpacing), \
+ Pin_Thickness, \
+ Clearance, \
+ Pin_Mask, \
+ Pin_Drill, \
+ '"pin1" "1" 0x0001)')
+
+print (' Pin(',\
+ 0, \
+ (Pin_Y + PinSpacing), \
+ Pin_Thickness, \
+ Clearance, \
+ Pin_Mask, \
+ Pin_Drill, \
+ '"pin5" "5" 0x0001)')
+
+print (' Pin(',\
+ -PinSpacing, \
+ (Pin_Y + PinSpacing), \
+ Pin_Thickness, \
+ Clearance, \
+ Pin_Mask, \
+ Pin_Drill, \
+ '"pin4" "4" 0x0001)')
+
+print (' ElementLine(',\
+ -(BodyWidth/2), \
+ 0, \
+ (BodyWidth/2), \
+ 0, \
+ SilkLine, \
+ ')')
+
+print (' ElementLine(',\
+ -(BodyWidth/2), \
+ BodyHeight, \
+ (BodyWidth/2), \
+ BodyHeight, \
+ SilkLine, \
+ ')')
+
+print (' ElementLine(',\
+ -(BodyWidth/2), \
+ BodyHeight, \
+ -(BodyWidth/2), \
+ 0, \
+ SilkLine, \
+ ')')
+
+print (' ElementLine(',\
+ (BodyWidth/2), \
+ BodyHeight, \
+ (BodyWidth/2), \
+ 0, \
+ SilkLine, \
+ ')')
+
+print (' ElementLine(',\
+ -(NoseWidth/2), \
+ 0, \
+ (NoseWidth/2), \
+ 0, \
+ SilkLine, \
+ ')')
+
+print (' ElementLine(',\
+ -(NoseWidth/2), \
+ -NoseHeight, \
+ (NoseWidth/2), \
+ -NoseHeight, \
+ SilkLine, \
+ ')')
+
+print (' ElementLine(',\
+ -(NoseWidth/2), \
+ -NoseHeight, \
+ -(NoseWidth/2), \
+ 0, \
+ SilkLine, \
+ ')')
+
+print (' ElementLine(',\
+ (NoseWidth/2), \
+ -NoseHeight, \
+ (NoseWidth/2), \
+ 0, \
+ SilkLine, \
+ ')')
+
+print (")")