class CrystalScad::Hardware::Bolt
Public Class Methods
new(size,length,args={})
click to toggle source
# File lib/crystalscad/Hardware.rb, line 23 def initialize(size,length,args={}) @args = args @args[:type] ||= "912" @args[:material] ||= "steel 8.8" @args[:surface] ||= "zinc plated" # options for output only: @args[:additional_length] ||= 0 @args[:additional_diameter] ||= 0.3 @args[:head_margin] ||= 0.0 if @args[:washer] == true @washer = Washer.new(size,{:material => @args[:material], :surface => @args[:surface]}) end @size = size @length = length @transformations ||= [] end
Public Instance Methods
bolt_7380(additional_length=0, addtional_diameter=0, head_margin=0)
click to toggle source
ISO 7380
# File lib/crystalscad/Hardware.rb, line 92 def bolt_7380(additional_length=0, addtional_diameter=0, head_margin=0) if head_margin.to_f != 0 puts "[warning] :head_margin is not implemented for 7380 bolts" end chart_iso7380 = { 3 => {head_dia:5.7,head_length:1.65}, 4 => {head_dia:7.6,head_length:2.2}, 5 => {head_dia:9.5,head_length:2.75}, 6 => {head_dia:10.5,head_length:3.3}, 8 => {head_dia:14,head_length:4.4}, 10=> {head_dia:17.5,head_length:5.5}, 12=> {head_dia:21,head_length:6.6}, } res = cylinder(d1:chart_iso7380[@size][:head_dia]/2.0,d2:chart_iso7380[@size][:head_dia],h:chart_iso7380[@size][:head_length]).translate(z:-chart_iso7380[@size][:head_length]).color("Gainsboro") total_length = @length + additional_length res+= cylinder(d:@size+addtional_diameter, h:total_length).color("DarkGray") end
bolt_912(additional_length=0, addtional_diameter=0, head_margin=0)
click to toggle source
DIN 912
# File lib/crystalscad/Hardware.rb, line 113 def bolt_912(additional_length=0, addtional_diameter=0, head_margin=0) chart_din912 = {2 => {head_dia:3.8,head_length:2,thread_length:16}, 2.5=> {head_dia:4.5,head_length:2.5,thread_length:17}, 3 => {head_dia:5.5,head_length:3,thread_length:18}, 4 => {head_dia:7.0,head_length:4,thread_length:20}, 5 => {head_dia:8.5,head_length:5,thread_length:22}, 6 => {head_dia:10,head_length:6,thread_length:24}, 8 => {head_dia:13,head_length:8,thread_length:28}, 10=> {head_dia:16,head_length:10,thread_length:32}, 12=> {head_dia:18,head_length:12,thread_length:36}, 14=> {head_dia:21,head_length:14,thread_length:40}, 16=> {head_dia:24,head_length:16,thread_length:44}, 18=> {head_dia:27,head_length:18,thread_length:48}, 20=> {head_dia:30,head_length:20,thread_length:52}, 22=> {head_dia:33,head_length:22,thread_length:56}, 24=> {head_dia:36,head_length:24,thread_length:60}, 30=> {head_dia:45,head_length:30,thread_length:72}, 36=> {head_dia:54,head_length:36,thread_length:84}, } res = cylinder(d:chart_din912[@size][:head_dia]+head_margin,h:chart_din912[@size][:head_length]).translate(z:-chart_din912[@size][:head_length]).color("Gainsboro") total_length = @length + additional_length thread_length=chart_din912[@size][:thread_length] if total_length.to_f <= thread_length res+= cylinder(d:@size+addtional_diameter, h:total_length).color("DarkGray") else res+= cylinder(d:@size+addtional_diameter, h:total_length-thread_length).color("Gainsboro") res+= cylinder(d:@size+addtional_diameter, h:thread_length).translate(z:total_length-thread_length).color("DarkGray") end res end
bolt_933(additional_length=0, addtional_diameter=0, head_margin=0)
click to toggle source
# File lib/crystalscad/Hardware.rb, line 148 def bolt_933(additional_length=0, addtional_diameter=0, head_margin=0) chart = {2 => {head_side_to_side:4,head_length:1.4}, 2.5=> {head_side_to_side:5,head_length:1.7}, 3 => {head_side_to_side:5.5,head_length:2}, 4 => {head_side_to_side:7,head_length:2.8}, 5 => {head_side_to_side:8,head_length:3.5}, 6 => {head_side_to_side:10,head_length:4}, 8 => {head_side_to_side:13,head_length:5.5}, 10=> {head_side_to_side:17,head_length:7}, 12=> {head_side_to_side:19,head_length:8}, 14=> {head_side_to_side:22,head_length:9}, 16=> {head_side_to_side:24,head_length:10}, } head_dia = chart[@size][:head_side_to_side].to_f + head_margin.to_f res = cylinder(d:(head_dia/Math.sqrt(3))*2,fn:6,h:chart[@size][:head_length]).translate(z:-chart[@size][:head_length]).color("Gainsboro") total_length = @length + additional_length res+= cylinder(d:@size+addtional_diameter, h:total_length).color("DarkGray") end
description()
click to toggle source
# File lib/crystalscad/Hardware.rb, line 42 def description norm = "" if ["912","933"].include? @args[:type] norm = "DIN" elsif ["7380"].include? @args[:type] norm = "ISO" end "M#{@size}x#{@length} Bolt, #{norm} #{@args[:type]}, #{@args[:material]} #{@args[:surface]}" end
output()
click to toggle source
# File lib/crystalscad/Hardware.rb, line 53 def output add_to_bom case @args[:type].to_s when "912" res = bolt_912(@args[:additional_length], @args[:additional_diameter], @args[:head_margin]) when "933" res = bolt_933(@args[:additional_length], @args[:additional_diameter], @args[:head_margin]) when "7380" res = bolt_7380(@args[:additional_length], @args[:additional_diameter], @args[:head_margin]) else raise "unkown type #{args[:type]} for Bolt!" end return transform(res) end
show()
click to toggle source
# File lib/crystalscad/Hardware.rb, line 69 def show add_to_bom case @args[:type].to_s when "912" res = bolt_912(0,0) when "933" res = bolt_933(0,0) when "7380" res = bolt_7380(0,0) else raise "unkown type #{args[:type]} for Bolt!" end if @washer res += @washer.show res = res.translate(z:-@washer.height) end transform(res) end