crystalscad 0.2.6 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -33,18 +33,45 @@ module CrystalScad::Hardware
33
33
  end
34
34
 
35
35
  def description
36
- "M#{@size}x#{@length} Bolt, DIN #{@args[:type]}, #{@args[:material]} #{@args[:surface]}"
36
+ norm = ""
37
+ if ["912"].include? @args[:type]
38
+ norm = "DIN"
39
+ elsif ["7380"].include? @args[:type]
40
+ norm = "ISO"
41
+ end
42
+
43
+ "M#{@size}x#{@length} Bolt, #{norm} #{@args[:type]}, #{@args[:material]} #{@args[:surface]}"
37
44
  end
38
45
 
39
46
  def output
40
- return bolt_912(@args[:additional_length],@args[:additional_diameter])
47
+ return bolt_912(@args[:additional_length],@args[:additional_diameter]) if @args[:type] == "912"
48
+ return bolt_7380(@args[:additional_length],@args[:additional_diameter]) if @args[:type] == "7380"
41
49
  end
42
50
 
43
51
  def show
44
- return bolt_912(0,0)
45
- end
46
-
47
- # currently only din912
52
+ return bolt_912(0,0) if @args[:type] == "912"
53
+ return bolt_7380(0,0) if @args[:type] == "7380"
54
+ end
55
+
56
+ # ISO 7380
57
+ def bolt_7380(additional_length=0, addtional_diameter=0)
58
+ chart_iso7380 = {
59
+ 3 => {head_dia:5.7,head_length:1.65},
60
+ 4 => {head_dia:7.6,head_length:2.2},
61
+ 5 => {head_dia:9.5,head_length:2.75},
62
+ 6 => {head_dia:10.5,head_length:3.3},
63
+ 8 => {head_dia:14,head_length:4.4},
64
+ 10=> {head_dia:17.5,head_length:5.5},
65
+ 12=> {head_dia:21,head_length:6.6},
66
+
67
+
68
+ }
69
+ 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")
70
+ total_length = @length + additional_length
71
+ res+= cylinder(d:@size+addtional_diameter, h:total_length).color("DarkGray")
72
+ end
73
+
74
+ # DIN 912
48
75
  def bolt_912(additional_length=0, addtional_diameter=0)
49
76
 
50
77
 
@@ -176,6 +203,7 @@ module CrystalScad::Hardware
176
203
  @args[:configuration] ||= 1
177
204
  @args[:gap] ||= 8.13
178
205
  @args[:thickness] ||= 2.55
206
+ @args[:simple] ||= false
179
207
  end
180
208
 
181
209
  def output(length=nil)
@@ -195,19 +223,22 @@ module CrystalScad::Hardware
195
223
  end
196
224
 
197
225
  def single_profile
198
- start=@args[:thickness].to_f/Math.sqrt(2);
199
-
200
- gap = @args[:gap]
201
- thickness = @args[:thickness]
202
- size= @args[:size]
203
- profile = square(size:gap+thickness,center:true);
204
- (0..3).each{|d|
205
- profile+=polygon(points:[[0,0],[0,start],[size/2-thickness-start,size/2-thickness],[gap/2,size/2-thickness],[gap/2,size/2],[size/2,size/2],[size/2,gap/2],[size/2-thickness,gap/2],[size/2-thickness,size/2-thickness-start],[start,0]]).rotate(z:d*90)
206
- }
207
- profile-=circle(r:gap/2,center:true);
208
- profile=profile.translate(x:size/2,y:size/2);
209
-
210
- return profile.linear_extrude(height:@args[:length],convexity:2)
226
+ if @args[:simple] == true
227
+ return cube([@args[:size],@args[:size],@args[:length]])
228
+ else
229
+ start=@args[:thickness].to_f/Math.sqrt(2);
230
+
231
+ gap = @args[:gap]
232
+ thickness = @args[:thickness]
233
+ size= @args[:size]
234
+ profile = square(size:gap+thickness,center:true);
235
+ (0..3).each{|d|
236
+ profile+=polygon(points:[[0,0],[0,start],[size/2-thickness-start,size/2-thickness],[gap/2,size/2-thickness],[gap/2,size/2],[size/2,size/2],[size/2,gap/2],[size/2-thickness,gap/2],[size/2-thickness,size/2-thickness-start],[start,0]]).rotate(z:d*90)
237
+ }
238
+ profile-=circle(r:gap/2,center:true);
239
+ profile=profile.translate(x:size/2,y:size/2);
240
+ return profile.linear_extrude(height:@args[:length],convexity:2)
241
+ end
211
242
  end
212
243
 
213
244
  def multi_profile
@@ -1,4 +1,4 @@
1
1
  module CrystalScad
2
- VERSION = "0.2.6"
2
+ VERSION = "0.2.7"
3
3
  end
4
4
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crystalscad
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 6
10
- version: 0.2.6
9
+ - 7
10
+ version: 0.2.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - Joachim Glauche
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2013-09-17 00:00:00 Z
18
+ date: 2013-09-19 00:00:00 Z
19
19
  dependencies: []
20
20
 
21
21
  description: Inspired by SolidPython, based on RubyScad