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