osmotoserial/hardware/lib/footprints/capacitor_470uF-electrolyti...

57 lines
2.0 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.1
# class properties, for radial leads and perpendicular parts
classes = []
classes << {:class => "least", :hole => 0.15, :ring => 0.3, :clearance => 0.5}
classes << {:class => "nominal", :hole => 0.2, :ring => 0.35, :clearance => 0.7}
classes << {:class => "maximum", :hole => 0.25, :ring => 0.5, :clearance => 1.0}
# size code dimensions
D = 6.3
p = 2.5
d = 0.5
classes.each do |cla|
base = File.basename(__FILE__,".rb")
name = "#{base}_#{cla[:class][0,1].upcase}.fp"
File.open(name,"w") do |fp|
# put some information
fp.puts "# footprint for an aluminum electronlytic capacitor"
fp.puts "# manufacturer: Kemet"
fp.puts "# series: ESK"
fp.puts "# size code: E3"
fp.puts "# datasheet: http://www.kemet.com/docfinder?Partnumber=ESK477M6R3AE3AA"
fp.puts "# class: #{cla[:class]}"
# define element
# center is pin 3
fp.puts element("Element",["","capacitor","","Kemet ESK E3 #{cla[:class]}",:"0",:"0",:"0",:"0",:"0",:"100",""])
fp.puts "("
# outline
#ElementArc [X Y Width Height StartAngle DeltaAngle Thickness]
fp.puts element("ElementArc",[0,0,D/2,D/2,:"0",:"360",SILKSCREEN])
#ElementLine [X1 Y1 X2 Y2 Thickness]
fp.puts element("ElementLine",[-D/2-1,0,-D/2-0.5,0,SILKSCREEN])
fp.puts element("ElementLine",[-D/2-0.75,-0.25,-D/2-0.75,0.25,SILKSCREEN])
fp.puts element("ElementLine",[D/2+1,0,D/2+0.5,0,SILKSCREEN])
# pins
# Pin [rX rY Thickness Clearance Mask Drill "Name" "Number" SFlags]
fp.puts element("Pin",[-p/2,0,d+cla[:hole]+cla[:ring],cla[:clearance]-cla[:ring],d+cla[:hole]+cla[:ring]+SOLDERMASK,d+cla[:hole],"+","+","square"])
fp.puts element("Pin",[p/2,0,d+cla[:hole]+cla[:ring],cla[:clearance]-cla[:ring],d+cla[:hole]+cla[:ring]+SOLDERMASK,d+cla[:hole],"-","-",""])
# end of element
fp.puts ")"
end
end