66 lines
2.4 KiB
Ruby
Executable File
66 lines
2.4 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
# encoding: utf-8
|
|
# written for ruby 2.1.0
|
|
# generate a footprint (see script for more information)
|
|
require_relative 'element'
|
|
|
|
# global dimensions
|
|
UNIT = "mm"
|
|
SILKSCREEN = 0.2
|
|
SOLDERMASK = 0.075
|
|
CLEARANCE = 0.4
|
|
|
|
name = File.basename(__FILE__,".rb")+".fp"
|
|
File.open(name,"w") do |fp|
|
|
# put some information
|
|
fp.puts "# footprint for a 1.1/3.0mm jack barrel"
|
|
fp.puts "# manufacturer: CUI"
|
|
fp.puts "# part number: PJ-043-SMT-TR"
|
|
fp.puts "# datasheet: http://www.cui.com/product/resource/digikeypdf/pj-043-smt.pdf"
|
|
|
|
# define element
|
|
# center is center of device
|
|
fp.puts element("Element",["","barrel","","CUI PJ-043-SMT-TR",:"0",:"0",:"0",:"0",:"0",:"100",""])
|
|
fp.puts "("
|
|
|
|
# outline
|
|
x1 = -4.5-2.5-1.5
|
|
x2 = x1+1.5+9.5-1.2/2
|
|
y1 = -2.3
|
|
y2 = y1
|
|
fp.puts element("ElementLine",[x1,y1,x1=x2,y1=y2,SILKSCREEN])
|
|
y2 = -1.6
|
|
fp.puts element("ElementLine",[x1,y1,x1=x2,y1=y2,SILKSCREEN])
|
|
x2 = 10.5-2.5-4.5
|
|
fp.puts element("ElementLine",[x1,y1,x1=x2,y1=y2,SILKSCREEN])
|
|
y2 = 0.6
|
|
fp.puts element("ElementLine",[x1,y1,x1=x2,y1=y2,SILKSCREEN])
|
|
x2 = -4.5-2.5+9.9-1
|
|
fp.puts element("ElementLine",[x1,y1,x1=x2,y1=y2,SILKSCREEN])
|
|
y2 = 6.0-2.3
|
|
fp.puts element("ElementLine",[x1,y1,x1=x2,y1=y2,SILKSCREEN])
|
|
x2 = -4.5-2.5
|
|
fp.puts element("ElementLine",[x1,y1,x1=x2,y1=y2,SILKSCREEN])
|
|
y2 = 4.6/2
|
|
fp.puts element("ElementLine",[x1,y1,x1=x2,y1=y2,SILKSCREEN])
|
|
x2 = x1-1.5
|
|
fp.puts element("ElementLine",[x1,y1,x1=x2,y1=y2,SILKSCREEN])
|
|
y2 = -4.6/2
|
|
fp.puts element("ElementLine",[x1,y1,x1=x2,y1=y2,SILKSCREEN])
|
|
|
|
# holes
|
|
fp.puts element("Pin",[0,0,1.1,0,1.1,1.1,"","","hole"])
|
|
fp.puts element("Pin",[-4.5,0,1.1,0,1.1,1.1,"","","hole"])
|
|
|
|
# pads
|
|
fp.puts element("Pad",[-4.5-2.5+4.0-2.6/2+1.9/2,-2.3-1.9/2,-4.5-2.5+4.0+2.6/2-1.9/2,-2.3-1.9/2,1.9,CLEARANCE,1.9+2*SOLDERMASK,"","4","square"])
|
|
fp.puts element("Pad",[-4.5-2.5+4.0-2.6/2+1.9/2,6.0-2.3+1.9/2,-4.5-2.5+4.0+2.6/2-1.9/2,6.0-2.3+1.9/2,1.9,CLEARANCE,1.9+2*SOLDERMASK,"","4","square"])
|
|
fp.puts element("Pad",[-4.5-2.5+9.5-2.2/2+2.1/2,-1.6-2.1/2,-4.5-2.5+9.5+2.2/2-2.1/2,-1.6-2.1/2,2.1,CLEARANCE,2.1+2*SOLDERMASK,"","3","square"])
|
|
fp.puts element("Pad",[-4.5-2.5+9.9-2.2/2+2.1/2,0.6+2.1/2,-4.5-2.5+9.9+2.2/2-2.1/2,0.6+2.1/2,2.1,CLEARANCE,2.1+2*SOLDERMASK,"","1","square"])
|
|
fp.puts element("Pad",[-4.5-2.5+7.2-2.2/2+2.1/2,2.8+2.1/2,-4.5-2.5+7.2+2.2/2-2.1/2,2.8+2.1/2,2.1,CLEARANCE,2.1+2*SOLDERMASK,"","2","square"])
|
|
|
|
# end of element
|
|
fp.puts ")"
|
|
end
|
|
|