--- /dev/null
+#!/usr/bin/python3
+# Copyright 2025 by Bdale Garbee <bdale@gag.com>. GPLv3
+#
+# Program to emit PCB footprint for Amphenol AC5MAH-AU-B 5-pin XLR connector.
+#
+
+# dimensions in mm
+Row1Spacing = 3.81
+Row2Spacing = 6.98
+SmallHole = 1.20
+LargeHole = 1.60
+Mnt1_Y = 3.81
+Mnt2_Y = 8.89
+Row1_Y = 12.70
+Row2_Y = 17.78
+
+Shell_Width = 25.0
+Shell_Height = 18.3
+
+# and a couple in 1/100 of a mil
+Clearance = 1200
+
+# we're going to use the 1/100 of a mil fundamental unit form
+def mm2mils100( mm ):
+ return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
+
+print ('# author: Bdale Garbee')
+print ('# email: bdale@gag.com')
+print ('# dist-license: GPL 3')
+print ('# use-license: unlimited')
+
+print ('Element[0x0 "AC5MAH" "" "" 0 0 0 0 0 100 0x0]')
+print ("(")
+
+# alignment pin holes
+print (' Pin[', \
+ mm2mils100(-Row1Spacing), \
+ mm2mils100(Mnt1_Y), \
+ mm2mils100(LargeHole*2),
+ Clearance,
+ mm2mils100(LargeHole*2) + Clearance,
+ mm2mils100(LargeHole), \
+ '"pin6" "6"', '0x0001', ']')
+
+print (' Pin[', \
+ mm2mils100(Row1Spacing), \
+ mm2mils100(Mnt2_Y), \
+ mm2mils100(LargeHole*2),
+ Clearance,
+ mm2mils100(LargeHole*2) + Clearance,
+ mm2mils100(LargeHole), \
+ '"pin6" "6"', '0x0001', ']')
+
+print (' Pin[', \
+ mm2mils100(-Row1Spacing), \
+ mm2mils100(Row1_Y), \
+ mm2mils100(SmallHole*2),
+ Clearance,
+ mm2mils100(SmallHole*2) + Clearance,
+ mm2mils100(SmallHole), \
+ '"pin4" "4"', '0x0001', ']')
+
+print (' Pin[', \
+ 0, \
+ mm2mils100(Row1_Y), \
+ mm2mils100(SmallHole*2),
+ Clearance,
+ mm2mils100(SmallHole*2) + Clearance,
+ mm2mils100(SmallHole), \
+ '"pin6" "6"', '0x0001', ']')
+
+print (' Pin[', \
+ mm2mils100(Row1Spacing), \
+ mm2mils100(Row1_Y), \
+ mm2mils100(SmallHole*2),
+ Clearance,
+ mm2mils100(SmallHole*2) + Clearance,
+ mm2mils100(SmallHole), \
+ '"pin2" "2"', '0x0001', ']')
+
+print (' Pin[', \
+ mm2mils100(-Row2Spacing), \
+ mm2mils100(Row2_Y), \
+ mm2mils100(LargeHole*2),
+ Clearance,
+ mm2mils100(LargeHole*2) + Clearance,
+ mm2mils100(LargeHole), \
+ '"pin5" "5"', '0x0001', ']')
+
+print (' Pin[', \
+ 0, \
+ mm2mils100(Row2_Y), \
+ mm2mils100(SmallHole*2),
+ Clearance,
+ mm2mils100(SmallHole*2) + Clearance,
+ mm2mils100(SmallHole), \
+ '"pin3" "3"', '0x0001', ']')
+
+print (' Pin[', \
+ mm2mils100(Row2Spacing), \
+ mm2mils100(Row2_Y), \
+ mm2mils100(LargeHole*2),
+ Clearance,
+ mm2mils100(LargeHole*2) + Clearance,
+ mm2mils100(LargeHole), \
+ '"pin1" "1"', '0x0001', ']')
+
+
+print(' ElementLine[',\
+ mm2mils100(-Shell_Width/2), \
+ 0, \
+ mm2mils100(Shell_Width/2), \
+ 0, \
+ '1000 ]')
+
+print(' ElementLine[',\
+ mm2mils100(-Shell_Width/2), \
+ mm2mils100(Shell_Height), \
+ mm2mils100(-Shell_Width/2+2), \
+ mm2mils100(Shell_Height), \
+ '1000 ]')
+
+print(' ElementLine[',\
+ mm2mils100(Shell_Width/2), \
+ mm2mils100(Shell_Height), \
+ mm2mils100(Shell_Width/2-2), \
+ mm2mils100(Shell_Height), \
+ '1000 ]')
+
+print(' ElementLine[',\
+ mm2mils100(Shell_Width/2), \
+ mm2mils100(0), \
+ mm2mils100(Shell_Width/2), \
+ mm2mils100(Shell_Height), \
+ '1000 ]')
+
+print(' ElementLine[',\
+ mm2mils100(-Shell_Width/2), \
+ mm2mils100(0), \
+ mm2mils100(-Shell_Width/2), \
+ mm2mils100(Shell_Height), \
+ '1000 ]')
+
+print (")")