class Circuitdata::ExposedArea
Public Class Methods
new(product)
click to toggle source
# File lib/circuitdata/exposed_area.rb, line 4 def initialize(product) @product = product end
Public Instance Methods
barrel_area()
click to toggle source
# File lib/circuitdata/exposed_area.rb, line 13 def barrel_area return 0 if board_thickness.nil? plated_holes.map{ |hole| sum_holes_area(hole)}.sum end
final_finish_total_area()
click to toggle source
# File lib/circuitdata/exposed_area.rb, line 8 def final_finish_total_area return nil if board_area.nil? layer_final_finish_area+barrel_area end
Private Instance Methods
board_area()
click to toggle source
# File lib/circuitdata/exposed_area.rb, line 39 def board_area @product.question_answer([:metrics, :board, :area]) end
board_thickness()
click to toggle source
# File lib/circuitdata/exposed_area.rb, line 35 def board_thickness @product.question_answer([:metrics, :board, :thickness]) end
final_finish_layers()
click to toggle source
# File lib/circuitdata/exposed_area.rb, line 67 def final_finish_layers layers.select{ |layer| layer[:function] == "final_finish" } end
has_necessary_data?(process)
click to toggle source
# File lib/circuitdata/exposed_area.rb, line 53 def has_necessary_data?(process) process[:function_attributes][:number_of_holes].present? && process[:function_attributes][:finished_size].present? end
hole_area(finished_size)
click to toggle source
# File lib/circuitdata/exposed_area.rb, line 31 def hole_area(finished_size) (finished_size/1000)*Math::PI*board_thickness end
holes()
click to toggle source
# File lib/circuitdata/exposed_area.rb, line 58 def holes @product.processes .select{|process| process[:function] == "holes"} end
layer_final_finish_area()
click to toggle source
# File lib/circuitdata/exposed_area.rb, line 20 def layer_final_finish_area coverage = final_finish_layers.map{ |layer| layer[:coverage]}.compact coverage.map{ |percent| percent/100.0*board_area}.sum end
layers()
click to toggle source
# File lib/circuitdata/exposed_area.rb, line 63 def layers @product.layers end
plated_holes()
click to toggle source
# File lib/circuitdata/exposed_area.rb, line 43 def plated_holes holes.select{ |process| requires_final_finish?(process) } .select{ |process| has_necessary_data?(process) } end
requires_final_finish?(process)
click to toggle source
# File lib/circuitdata/exposed_area.rb, line 48 def requires_final_finish?(process) process[:function_attributes][:plated] == true && process[:function_attributes][:covered] == false end
sum_holes_area(hole)
click to toggle source
# File lib/circuitdata/exposed_area.rb, line 25 def sum_holes_area(hole) diameter = hole[:function_attributes][:finished_size] number_of_holes = hole[:function_attributes][:number_of_holes] hole_area(diameter)*number_of_holes end