From: Bdale Garbee Date: Mon, 14 Dec 2020 00:12:44 +0000 (-0700) Subject: add the SOIJ4.py script itself X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=45bbacaebbd693614a426c4d9af915d3b5741f0a;p=hw%2Faltusmetrum add the SOIJ4.py script itself --- diff --git a/packages/SOIJ4.py b/packages/SOIJ4.py new file mode 100755 index 0000000..ccc3413 --- /dev/null +++ b/packages/SOIJ4.py @@ -0,0 +1,85 @@ +#!/usr/bin/python3 +# Copyright 2020 by Bdale Garbee . GPLv2 +# +# Program to emit PCB footprint for Toshiba opto isolators like TLP290(SE +# + +# dimensions in mm from TLP290(SE datasheet + +BodyWidth = 4.55 +BodyHeight = 2.6 + +PinWidth = 0.65 +PinHeight = 1.7 +PinSpacing = 1.27 +RowCenters = 7.0 +RowSpacing = RowCenters - PinHeight + +import sys + +# 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 2') +print ('# use-license: unlimited') + +print ('Element[0x0 "SOIJ8" "" "" 0 0 -10161 -12011 0 100 0x0]') +print ("(") +for pin in range (0,2): + print (' Pad[',\ + mm2mils100((pin-0.5) * PinSpacing), \ + mm2mils100(-(RowSpacing/2 + PinWidth/2)), \ + mm2mils100((pin-0.5) * PinSpacing), \ + mm2mils100(-(RowSpacing/2 + PinHeight - PinWidth/2)), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin%i"' % (4 - pin), '"%i"' % (4 - pin), '0x0100]') + + print (' Pad[',\ + mm2mils100((pin-0.5) * PinSpacing), \ + mm2mils100(RowSpacing/2 + PinWidth/2), \ + mm2mils100((pin-0.5) * PinSpacing), \ + mm2mils100(RowSpacing/2 + PinHeight - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin%i"' % (1 + pin), '"%i"' % (1 + pin), '0x0100]') + +print (' ElementLine[',\ + mm2mils100(-BodyHeight/2), \ + mm2mils100(-BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + mm2mils100( BodyWidth/2), \ + '1000 ]') + +print (' ElementLine[',\ + mm2mils100(-BodyHeight/2), \ + mm2mils100( BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + mm2mils100( BodyWidth/2), \ + '1000 ]') + +print (' ElementLine[',\ + mm2mils100( BodyHeight/2), \ + mm2mils100( BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + mm2mils100(-BodyWidth/2), \ + '1000 ]') + +print (' ElementLine[',\ + mm2mils100( BodyHeight/2), \ + mm2mils100(-BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + mm2mils100(-BodyWidth/2), \ + '1000 ]') + +print (' ElementArc[',\ + mm2mils100(-0.5 * PinSpacing), \ + mm2mils100(RowSpacing/2-PinHeight/2), \ + '500 500 0 360 1000 ]') + +print (")")