crystalscad 0.2.2 → 0.2.3
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.
- data/README.md +10 -23
- data/lib/crystalscad/Hardware.rb +51 -3
- data/lib/crystalscad/version.rb +1 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -1,12 +1,18 @@
|
|
1
1
|
CrystalScad
|
2
2
|
===========
|
3
3
|
|
4
|
-
Produce OpenSCAD code in Ruby.
|
4
|
+
Produce OpenSCAD code in Ruby.
|
5
5
|
|
6
6
|
Requires Ruby 1.9.3
|
7
|
+
Required gems: rubyscad
|
7
8
|
|
8
|
-
Currently not feature complete
|
9
|
+
Currently not OpenSCAD feature complete
|
9
10
|
|
11
|
+
Installation:
|
12
|
+
===========
|
13
|
+
#gem install crystalscad
|
14
|
+
|
15
|
+
if you have multiple ruby versions, you likely need to use gem1.9.3 instead of gem
|
10
16
|
|
11
17
|
Features
|
12
18
|
===========
|
@@ -14,28 +20,9 @@ Features
|
|
14
20
|
- Automatic BOM when using the Hardware lib
|
15
21
|
|
16
22
|
|
17
|
-
Example
|
23
|
+
Real World Example:
|
18
24
|
===========
|
19
|
-
|
20
|
-
require "crystalscad"
|
21
|
-
|
22
|
-
include CrystalScad
|
23
|
-
|
24
|
-
assembly = cylinder(r:5,h:10).translate(x:10).rotate(y:45)
|
25
|
-
|
26
|
-
assembly+= cube([10,20,30]).translate(x:-1)
|
27
|
-
|
28
|
-
assembly-= Bolt.new(3,25).output.translate(x:2,y:2)
|
29
|
-
|
30
|
-
assembly-= Bolt.new(3,25).output.translate(x:6,y:6)
|
31
|
-
|
32
|
-
|
33
|
-
# for openscad output
|
34
|
-
puts assembly.output
|
35
|
-
|
36
|
-
|
37
|
-
# for BOM output
|
38
|
-
puts @@bom.output
|
25
|
+
https://github.com/Joaz/bulldozer/blob/master/new_model/bulldozer.rb
|
39
26
|
|
40
27
|
|
41
28
|
|
data/lib/crystalscad/Hardware.rb
CHANGED
@@ -55,11 +55,59 @@ module CrystalScad::Hardware
|
|
55
55
|
end
|
56
56
|
res
|
57
57
|
end
|
58
|
-
|
59
|
-
|
60
|
-
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
class Nut
|
63
|
+
attr_accessor :height
|
64
|
+
def initialize(size,args={})
|
65
|
+
@size = size
|
66
|
+
@type = args[:type] ||= "934"
|
67
|
+
@material = args[:material] ||= "8.8"
|
68
|
+
@surface = args[:surface] ||= "zinc plated"
|
69
|
+
|
70
|
+
@@bom.add(description) unless args[:no_bom] == true
|
71
|
+
prepare_data
|
72
|
+
end
|
73
|
+
|
74
|
+
def description
|
75
|
+
"M#{@size} Nut, DIN #{@type}, #{@material} #{@surface}"
|
76
|
+
end
|
77
|
+
|
78
|
+
def prepare_data
|
79
|
+
chart_934 = {2.5=> {side_to_side:5,height:2},
|
80
|
+
3 => {side_to_side:5.5,height:2.4},
|
81
|
+
4 => {side_to_side:7,height:3.2},
|
82
|
+
5 => {side_to_side:8,height:4},
|
83
|
+
6 => {side_to_side:10,height:5},
|
84
|
+
8 => {side_to_side:13,height:6.5},
|
85
|
+
10 => {side_to_side:17,height:8},
|
86
|
+
12 => {side_to_side:19,height:10},
|
87
|
+
|
88
|
+
}
|
89
|
+
@s = chart_934[@size][:side_to_side]
|
90
|
+
@height = chart_934[@size][:height]
|
91
|
+
end
|
92
|
+
|
93
|
+
def output(margin=0.2)
|
94
|
+
return nut_934(margin)
|
95
|
+
end
|
96
|
+
|
97
|
+
def show
|
98
|
+
return nut_934
|
99
|
+
end
|
100
|
+
|
101
|
+
def nut_934(margin=0)
|
102
|
+
@s += margin
|
103
|
+
nut=cylinder(d:(@s/Math.sqrt(3))*2,h:@height,fn:6)
|
104
|
+
nut-=cylinder(d:@size,h:@height)
|
105
|
+
nut.color("Gainsboro")
|
106
|
+
end
|
107
|
+
|
61
108
|
end
|
62
109
|
|
110
|
+
|
63
111
|
class TSlot
|
64
112
|
# the code in this class is based on code by Nathan Zadoks
|
65
113
|
# taken from https://github.com/nathan7/scadlib
|
data/lib/crystalscad/version.rb
CHANGED
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:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 3
|
10
|
+
version: 0.2.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Joachim Glauche
|