class CrystalScad::Gears::Gear
Attributes
height[R]
this library is to be used to easily work with gears and their distances to each other
hub_dia[R]
this library is to be used to easily work with gears and their distances to each other
hub_height[R]
this library is to be used to easily work with gears and their distances to each other
module[R]
this library is to be used to easily work with gears and their distances to each other
teeth[R]
this library is to be used to easily work with gears and their distances to each other
Public Class Methods
new(args={})
click to toggle source
# File lib/crystalscad/Gears.rb, line 24 def initialize(args={}) @module = args[:module] || 1.0 @teeth = args[:teeth] || 1.0 @bore = args[:bore] || 0.0 @height = args[:height] || 3.0 @hub_dia = args[:hub_dia] || 0.0 @hub_height = args[:hub_height] || 0.0 @output_margin_dia = args[:output_margin_dia] || 2 @output_margin_height = args[:output_margin_height] || 1 end
Public Instance Methods
distance_to(other_gear)
click to toggle source
# File lib/crystalscad/Gears.rb, line 57 def distance_to(other_gear) if @module != other_gear.module raise "You cannot use two gears with different gear modules." return end return (@module.to_f * (@teeth.to_f + other_gear.teeth.to_f))/2.0 end
output()
click to toggle source
# File lib/crystalscad/Gears.rb, line 48 def output res = cylinder(d:@module*@teeth+@output_margin_dia,h:@height+@output_margin_height) if @hub_height.to_f > 0 && @hub_dia.to_f > 0 res += cylinder(d:@hub_dia+@output_margin_dia,h:@hub_height+@output_margin_height).translate(z:@height) end res end
ratio(other_gear)
click to toggle source
# File lib/crystalscad/Gears.rb, line 65 def ratio(other_gear) @teeth.to_f / other_gear.teeth.to_f end
show()
click to toggle source
# File lib/crystalscad/Gears.rb, line 35 def show res = cylinder(d:@module*@teeth,h:@height) if @hub_height.to_f > 0 && @hub_dia.to_f > 0 res += cylinder(d:@hub_dia,h:@hub_height).translate(z:@height) end if @bore.to_f > 0.0 res -= cylinder(d:@bore,h:@height+@hub_height+0.2).translate(z:-0.1) end res.color("darkgray") end