crystalscad 0.5.8 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/bin/crystalgen +77 -14
- data/examples/openscad_examples/example002.rb +0 -1
- data/examples/pipe.rb +7 -5
- data/examples/printed_gear.rb +4 -4
- data/lib/crystalscad.rb +1 -1
- data/lib/crystalscad/Assembly.rb +70 -17
- data/lib/crystalscad/CrystalScad.rb +25 -10
- data/lib/crystalscad/Hardware.rb +22 -20
- data/lib/crystalscad/Primitive.rb +6 -1
- data/lib/crystalscad/version.rb +1 -1
- metadata +69 -96
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
N2M3M2I5ZDA0NTgwMGQ2NmMxMTE1OTc5YmU5NDEwNGIzODdhY2UyZg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MTVmNWNiOWY0NjdjY2NhZjM4MTVlNTgwMGE2ODk0OTJkYjU4MTU5MQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YmYxNTI2YWI2YWNlMDMxNDkzZTRiMmMzOTU5YjliNTM3NjMzZTZhYzQzZmRi
|
10
|
+
NWUyNzcxYWQ3ZjQyYWNiMDEwOTRjNDJiZTU3NjY4ZThlNzY4OWI1ZmZlNmUz
|
11
|
+
YWY1ODRjMzcwN2EwZTM3ZWM3NmM4YWE2YjRiNDJmNzhlNzhkMDY=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ODcyMWM5ZmUzYzMxYzNhN2NlNjkzOWUwODliNTQwM2FiM2U3ZjNlMmJhYTI2
|
14
|
+
ZTRiMmM1MTU4ZDdmZWY4ZjgwNDIxYWJiNWY2ZDNlZWJlNjBjNDUwNTRlZmVk
|
15
|
+
ZWM3ZTM2OTc3YjZhMWIyYzIyNjM4ODA3MGEwMDFjZmY1MmZjYWU=
|
data/bin/crystalgen
CHANGED
@@ -8,9 +8,9 @@ require "thor/actions"
|
|
8
8
|
class CrystalGen < Thor
|
9
9
|
include Thor::Actions
|
10
10
|
|
11
|
-
desc "
|
11
|
+
desc "new APP_NAME", "creates a new project stub"
|
12
12
|
|
13
|
-
def
|
13
|
+
def new(name)
|
14
14
|
|
15
15
|
create_file("#{name}/#{name}.rb") do
|
16
16
|
"#!/usr/bin/ruby1.9.3
|
@@ -30,10 +30,8 @@ require_all \"lib/**/*.rb\"
|
|
30
30
|
# Design -> Automatic Reload and Compile
|
31
31
|
# activated.
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
res.save(\"#{name}.scad\",\"$fn=64;\")
|
33
|
+
# Scans every file in lib/**/*.rb for classes and saves them in the output/ directory
|
34
|
+
save!
|
37
35
|
|
38
36
|
@@bom.save(\"bom.txt\")
|
39
37
|
|
@@ -50,9 +48,30 @@ res.save(\"#{name}.scad\",\"$fn=64;\")
|
|
50
48
|
|
51
49
|
create_file("#{name}/lib/assemblies/#{name}_assembly.rb") do
|
52
50
|
"class #{name.capitalize}Assembly < CrystalScad::Assembly
|
51
|
+
|
52
|
+
# Assemblies are used to show how different parts interact on your design.
|
53
|
+
|
54
|
+
# Skip generation of the 'output' method for this assembly.
|
55
|
+
# (will still generate 'show')
|
56
|
+
skip :output
|
53
57
|
|
54
58
|
def part(show)
|
55
|
-
|
59
|
+
# Create a test cube
|
60
|
+
cube = TestCube.new
|
61
|
+
|
62
|
+
# And another one, but translate this one next to the cube and change the color
|
63
|
+
# You can use any transformation on the class itself.
|
64
|
+
another_cube = TestCube.new.translate(z:cube.z).color(\"MediumTurquoise\")
|
65
|
+
|
66
|
+
# We're calling the show method on both cubes
|
67
|
+
res = cube.show
|
68
|
+
res += another_cube.show
|
69
|
+
|
70
|
+
# There's a bolt going through the cubes and a nut on the bottom. Let's show it
|
71
|
+
res += cube.show_hardware
|
72
|
+
|
73
|
+
# always make sure the lowest statement always returns the object that you're working on
|
74
|
+
res
|
56
75
|
end
|
57
76
|
|
58
77
|
end
|
@@ -62,11 +81,59 @@ end
|
|
62
81
|
create_file("#{name}/lib/printed/testcube.rb") do
|
63
82
|
"class TestCube < CrystalScad::Printed
|
64
83
|
def initialize()
|
65
|
-
|
84
|
+
# Here is a good place to define instance variables that make your part parametric.
|
85
|
+
# These variables are acessable from outside:
|
86
|
+
@x = 25
|
87
|
+
@y = 25
|
88
|
+
@z = 20
|
89
|
+
@hardware = []
|
90
|
+
@color = \"BurlyWood\"
|
91
|
+
|
92
|
+
# The variable below is not accessable from the outside unless you specify so with attr_accessable
|
93
|
+
@diameter = 10
|
66
94
|
end
|
67
|
-
|
95
|
+
|
68
96
|
def part(show)
|
69
|
-
cube
|
97
|
+
# We start with a cube and center it in x and y direction. The cube starts at z = 0 with this.
|
98
|
+
res = cube(@x,@y,@z).center_xy
|
99
|
+
|
100
|
+
# We want a bolt to go through it. It will be facing upwards however, so we will need to mirror it.
|
101
|
+
# Also translating it to twice the height, as we want to stack two of these cubes together in the assembly.
|
102
|
+
bolt = Bolt.new(4,40).mirror(z:1).translate(z:@z*2)
|
103
|
+
@hardware << bolt
|
104
|
+
|
105
|
+
# We also want a nut. And since the printing direction is from the bottom, we decide to add support to it.
|
106
|
+
nut = Nut.new(4,support:true,support_layer_height:0.3)
|
107
|
+
@hardware << nut
|
108
|
+
|
109
|
+
# substracting the @hardware array will call the .output method on each hardware item automatically
|
110
|
+
res -= @hardware
|
111
|
+
|
112
|
+
# colorize is a convenience thing to colorize your part differently in assemblies.
|
113
|
+
# You can specify @color in initalize (as default color), or set a different color in the assembly this way.
|
114
|
+
res = colorize(res)
|
115
|
+
|
116
|
+
# Note: Make sure you do this before adding parts (i.e. hardware) that have their own color and that
|
117
|
+
# you do not want to colorize.
|
118
|
+
|
119
|
+
# You can go ahead and show the hardware when the part produces its 'show' output file by uncommenting this:
|
120
|
+
# res += @hardware if show
|
121
|
+
# However, in this example, the Assembly file calls show_hardware in order to not show it twice.
|
122
|
+
|
123
|
+
# always make sure the lowest statement always returns the object that you're working on
|
124
|
+
res
|
125
|
+
end
|
126
|
+
|
127
|
+
# with view you can define more outputs of a file.
|
128
|
+
# This is useful when you are designing subassemblies of an object.
|
129
|
+
view :my_subassembly
|
130
|
+
|
131
|
+
def my_subassembly
|
132
|
+
res = hull(
|
133
|
+
cylinder(d:@diameter,h:@z),
|
134
|
+
cube(@x,@y,@z)
|
135
|
+
)
|
136
|
+
res
|
70
137
|
end
|
71
138
|
|
72
139
|
end
|
@@ -80,10 +147,6 @@ watch( \'#{name}.rb' ) {|md|
|
|
80
147
|
system(\"./#{name}.rb\")
|
81
148
|
}
|
82
149
|
|
83
|
-
watch( 'lib/(.*)\.rb' ) {|md|
|
84
|
-
system(\"./#{name}.rb\")
|
85
|
-
}
|
86
|
-
|
87
150
|
watch( 'lib/*/(.*)\.rb' ) {|md|
|
88
151
|
system(\"./#{name}.rb\")
|
89
152
|
}
|
data/examples/pipe.rb
CHANGED
@@ -28,11 +28,13 @@ pipe.ccw(30,160,"blue")
|
|
28
28
|
pipe.ccw(30,60,"pink")
|
29
29
|
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
31
|
+
pipe.cw(30,60,"blue")
|
32
|
+
pipe.cw(20,60,"green")
|
33
|
+
|
34
|
+
pipe.cw(10,60,"black")
|
35
|
+
pipe.line(33)
|
36
|
+
pipe.ccw(30,60,"pink")
|
37
|
+
pipe.cw(30,90,"white")
|
36
38
|
#pipe.cw(15,95,"silver")
|
37
39
|
#pipe.line(10,"pink")
|
38
40
|
res = pipe.pipe
|
data/examples/printed_gear.rb
CHANGED
@@ -4,11 +4,11 @@ require "crystalscad"
|
|
4
4
|
include CrystalScad
|
5
5
|
|
6
6
|
|
7
|
-
g1 = PrintedGear.new(module:2.0,teeth:40,bore:
|
7
|
+
g1 = PrintedGear.new(module:2.0,teeth:40,bore:8,height:4)
|
8
8
|
g2 = PrintedGear.new(module:2.0,teeth:20,bore:5,height:4,rotation:0.5) # rotation in number of teeth
|
9
9
|
|
10
|
-
res = g1.show.color("red")
|
11
|
-
res += g2.show.
|
10
|
+
res = g1.show.color("red")
|
11
|
+
res += g2.show.translate(x:g1.distance_to(g2))
|
12
12
|
|
13
|
-
res.save("printed_gear.scad")
|
13
|
+
res.save("printed_gear.scad","$fn=64;")
|
14
14
|
|
data/lib/crystalscad.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'crystalscad/version'
|
2
2
|
require 'crystalscad/BillOfMaterial'
|
3
3
|
require 'crystalscad/CrystalScadObject'
|
4
|
-
require 'crystalscad/Assembly'
|
5
4
|
require 'crystalscad/Primitive'
|
5
|
+
require 'crystalscad/Assembly'
|
6
6
|
require 'crystalscad/Hardware'
|
7
7
|
|
8
8
|
require 'crystalscad/LinearBearing'
|
data/lib/crystalscad/Assembly.rb
CHANGED
@@ -14,12 +14,21 @@
|
|
14
14
|
# along with CrystalScad. If not, see <http://www.gnu.org/licenses/>.
|
15
15
|
|
16
16
|
module CrystalScad
|
17
|
-
class Assembly
|
18
|
-
attr_accessor :height,:x,:y,:z
|
17
|
+
class Assembly < CrystalScad::Primitive
|
18
|
+
attr_accessor :height,:x,:y,:z,:skip,:color,:hardware,:transformations
|
19
|
+
|
20
|
+
def transform(obj)
|
21
|
+
return obj if @transformations == nil
|
22
|
+
@transformations.each do |t|
|
23
|
+
obj.transformations << t
|
24
|
+
end
|
25
|
+
|
26
|
+
return obj
|
27
|
+
end
|
19
28
|
|
20
29
|
def initialize(args={})
|
21
30
|
@args = args if @args == nil
|
22
|
-
|
31
|
+
|
23
32
|
@x = args[:x]
|
24
33
|
@y = args[:y]
|
25
34
|
@z = args[:z]
|
@@ -39,11 +48,11 @@ module CrystalScad
|
|
39
48
|
end
|
40
49
|
|
41
50
|
def show
|
42
|
-
part(true)
|
51
|
+
transform(part(true))
|
43
52
|
end
|
44
53
|
|
45
54
|
def output
|
46
|
-
part(false)
|
55
|
+
transform(part(false))
|
47
56
|
end
|
48
57
|
|
49
58
|
def part(show=false)
|
@@ -65,18 +74,6 @@ module CrystalScad
|
|
65
74
|
def *(args)
|
66
75
|
return self.output*args
|
67
76
|
end
|
68
|
-
|
69
|
-
def translate(args)
|
70
|
-
return self.output.translate(args)
|
71
|
-
end
|
72
|
-
|
73
|
-
def mirror(args)
|
74
|
-
return self.output.mirror(args)
|
75
|
-
end
|
76
|
-
|
77
|
-
def rotate(args)
|
78
|
-
return self.output.rotate(args)
|
79
|
-
end
|
80
77
|
|
81
78
|
def scad_output()
|
82
79
|
return self.output.scad_output
|
@@ -100,6 +97,62 @@ module CrystalScad
|
|
100
97
|
return a
|
101
98
|
end
|
102
99
|
|
100
|
+
# Makes the save_all method in CrystalScad skip the specified method(s)
|
101
|
+
def self.skip(args)
|
102
|
+
@skip = [] if @skip == nil
|
103
|
+
if args.kind_of? Array
|
104
|
+
args.each do |arg|
|
105
|
+
skip(arg)
|
106
|
+
end
|
107
|
+
return
|
108
|
+
end
|
109
|
+
|
110
|
+
@skip << args.to_s
|
111
|
+
return
|
112
|
+
end
|
113
|
+
|
114
|
+
def self.get_skip
|
115
|
+
@skip
|
116
|
+
end
|
117
|
+
|
118
|
+
|
119
|
+
def self.view(args)
|
120
|
+
@added_views = [] if @added_views == nil
|
121
|
+
if args.kind_of? Array
|
122
|
+
args.each do |arg|
|
123
|
+
view(arg)
|
124
|
+
end
|
125
|
+
return
|
126
|
+
end
|
127
|
+
|
128
|
+
@added_views << args.to_s
|
129
|
+
return
|
130
|
+
end
|
131
|
+
|
132
|
+
def self.get_views
|
133
|
+
@added_views || []
|
134
|
+
end
|
135
|
+
|
136
|
+
|
137
|
+
def color(args)
|
138
|
+
@color = args
|
139
|
+
return self
|
140
|
+
end
|
141
|
+
|
142
|
+
def colorize(res)
|
143
|
+
return res if @color == nil
|
144
|
+
return res.color(@color)
|
145
|
+
end
|
146
|
+
|
147
|
+
def show_hardware
|
148
|
+
return nil if @hardware == nil or @hardware == []
|
149
|
+
res = nil
|
150
|
+
@hardware.each do |part|
|
151
|
+
res += part.show
|
152
|
+
end
|
153
|
+
transform(res)
|
154
|
+
end
|
155
|
+
|
103
156
|
end
|
104
157
|
|
105
158
|
class Printed < Assembly
|
@@ -105,7 +105,7 @@ module CrystalScad
|
|
105
105
|
end
|
106
106
|
end
|
107
107
|
|
108
|
-
def cube(args={})
|
108
|
+
def cube(args={},y=nil,z=nil)
|
109
109
|
if args.kind_of? Array
|
110
110
|
args = {size:args}
|
111
111
|
elsif args.kind_of? Hash
|
@@ -113,6 +113,9 @@ module CrystalScad
|
|
113
113
|
args[:y] ||= 0
|
114
114
|
args[:z] ||= 0
|
115
115
|
args = {size:[args[:x],args[:y],args[:z]]}
|
116
|
+
elsif args.kind_of? Numeric
|
117
|
+
x = args
|
118
|
+
args = {size:[x,y,z]}
|
116
119
|
end
|
117
120
|
Cube.new(args)
|
118
121
|
end
|
@@ -322,11 +325,11 @@ module CrystalScad
|
|
322
325
|
if args.kind_of? Array
|
323
326
|
r = self
|
324
327
|
args.each do |a|
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
+
# if a.respond_to? :show
|
329
|
+
# r = Union.new(r,a.show)
|
330
|
+
# else
|
328
331
|
r = Union.new(r,a)
|
329
|
-
|
332
|
+
# end
|
330
333
|
end
|
331
334
|
r
|
332
335
|
else
|
@@ -339,11 +342,11 @@ module CrystalScad
|
|
339
342
|
if args.kind_of? Array
|
340
343
|
r = self
|
341
344
|
args.each do |a|
|
342
|
-
if a.respond_to? :output
|
343
|
-
|
344
|
-
else
|
345
|
+
#if a.respond_to? :output
|
346
|
+
# r = Difference.new(r,a.output)
|
347
|
+
#else
|
345
348
|
r = Difference.new(r,a)
|
346
|
-
end
|
349
|
+
#end
|
347
350
|
end
|
348
351
|
r
|
349
352
|
else
|
@@ -573,6 +576,10 @@ module CrystalScad
|
|
573
576
|
end
|
574
577
|
|
575
578
|
|
579
|
+
def save!
|
580
|
+
Dir.glob("lib/**/*.rb").map{|l| get_classes_from_file(l)}.flatten.map{|l| save_all(l)}
|
581
|
+
end
|
582
|
+
|
576
583
|
# Saves all files generated of a CrystalScad file
|
577
584
|
# Saves outputs of
|
578
585
|
# - show
|
@@ -581,8 +588,16 @@ module CrystalScad
|
|
581
588
|
def save_all(class_name,fn=$fn)
|
582
589
|
|
583
590
|
res = class_name.send :new
|
591
|
+
|
592
|
+
# skip defined classes
|
593
|
+
skip = class_name.send :get_skip
|
594
|
+
skip = [] if skip == nil
|
595
|
+
skip << "show_hardware"
|
596
|
+
added_views = class_name.send :get_views
|
597
|
+
|
584
598
|
# regexp for output* view* show*
|
585
|
-
res.methods.grep(Regexp.union(/^output/,/^view/,/^show/)).each do |i|
|
599
|
+
(res.methods.grep(Regexp.union(/^output/,/^view/,/^show/)) + added_views).each do |i|
|
600
|
+
next if skip.include? i.to_s
|
586
601
|
output = nil
|
587
602
|
|
588
603
|
res.send :initialize # ensure default values are loaded at each interation
|
data/lib/crystalscad/Hardware.rb
CHANGED
@@ -15,8 +15,10 @@
|
|
15
15
|
|
16
16
|
module CrystalScad::Hardware
|
17
17
|
|
18
|
-
class
|
19
|
-
|
18
|
+
class Hardware < CrystalScad::Assembly
|
19
|
+
end
|
20
|
+
|
21
|
+
class Bolt < Hardware
|
20
22
|
|
21
23
|
def initialize(size,length,args={})
|
22
24
|
@args = args
|
@@ -86,14 +88,6 @@ module CrystalScad::Hardware
|
|
86
88
|
transform(res)
|
87
89
|
end
|
88
90
|
|
89
|
-
def transform(obj)
|
90
|
-
@transformations.each do |t|
|
91
|
-
obj.transformations << t
|
92
|
-
end
|
93
|
-
|
94
|
-
return obj
|
95
|
-
end
|
96
|
-
|
97
91
|
# ISO 7380
|
98
92
|
def bolt_7380(additional_length=0, addtional_diameter=0)
|
99
93
|
chart_iso7380 = {
|
@@ -173,7 +167,7 @@ module CrystalScad::Hardware
|
|
173
167
|
|
174
168
|
end
|
175
169
|
|
176
|
-
class Washer <
|
170
|
+
class Washer < Hardware
|
177
171
|
def initialize(size,args={})
|
178
172
|
@args=args
|
179
173
|
@size = size
|
@@ -197,7 +191,7 @@ module CrystalScad::Hardware
|
|
197
191
|
end
|
198
192
|
@height = @chart_din125[@size][:height]
|
199
193
|
|
200
|
-
|
194
|
+
@transformations ||= []
|
201
195
|
end
|
202
196
|
|
203
197
|
def description
|
@@ -209,20 +203,26 @@ module CrystalScad::Hardware
|
|
209
203
|
washer = cylinder(d:@chart_din125[@size][:outer_diameter].to_f,h:@chart_din125[@size][:height].to_f)
|
210
204
|
washer-= cylinder(d:@size,h:@chart_din125[@size][:outer_diameter].to_f+0.2).translate(z:-0.1)
|
211
205
|
washer.color("Gainsboro")
|
206
|
+
transform(washer)
|
212
207
|
end
|
213
208
|
|
214
209
|
end
|
215
210
|
|
216
|
-
class Nut <
|
211
|
+
class Nut < Hardware
|
217
212
|
attr_accessor :height
|
218
213
|
def initialize(size,args={})
|
219
214
|
@size = size
|
220
215
|
@type = args[:type] ||= "934"
|
221
216
|
@material = args[:material] ||= "8.8"
|
222
217
|
@surface = args[:surface] ||= "zinc plated"
|
218
|
+
@support = args[:support] ||= false
|
219
|
+
@support_layer_height = args[:support_layer_height] ||= 0.2
|
220
|
+
|
223
221
|
|
222
|
+
@transformations ||= []
|
224
223
|
@args = args
|
225
224
|
prepare_data
|
225
|
+
@height = args[:height] || @height
|
226
226
|
end
|
227
227
|
|
228
228
|
def description
|
@@ -251,14 +251,13 @@ module CrystalScad::Hardware
|
|
251
251
|
@s = chart_934[@size][:side_to_side]
|
252
252
|
@height = chart_934[@size][:height]
|
253
253
|
@support_diameter = chart_934[@size][:support_diameter]
|
254
|
-
|
255
254
|
if @type == "985"
|
256
255
|
@height = chart_985[@size][:height]
|
257
256
|
end
|
258
257
|
|
259
258
|
end
|
260
259
|
|
261
|
-
def add_support(layer_height
|
260
|
+
def add_support(layer_height=@support_layer_height)
|
262
261
|
res = cylinder(d:@support_diameter,h:@height-layer_height)
|
263
262
|
# on very small nuts, add a support base of one layer height, so the support won't fall over
|
264
263
|
if @size < 6
|
@@ -269,19 +268,22 @@ module CrystalScad::Hardware
|
|
269
268
|
|
270
269
|
def output(margin=0.3)
|
271
270
|
add_to_bom
|
272
|
-
return nut_934(false,margin)
|
271
|
+
return transform(nut_934(false,margin))
|
273
272
|
end
|
274
273
|
|
275
274
|
def show
|
276
275
|
add_to_bom
|
277
|
-
return nut_934
|
276
|
+
return transform(nut_934)
|
278
277
|
end
|
279
278
|
|
280
279
|
def nut_934(show=true,margin=0)
|
281
280
|
@s += margin
|
282
|
-
|
283
|
-
|
284
|
-
|
281
|
+
res = cylinder(d:(@s/Math.sqrt(3))*2,h:@height,fn:6)
|
282
|
+
res -= cylinder(d:@size,h:@height) if show == true
|
283
|
+
if @support
|
284
|
+
res -= add_support
|
285
|
+
end
|
286
|
+
res.color("Gainsboro")
|
285
287
|
end
|
286
288
|
|
287
289
|
end
|
@@ -8,6 +8,7 @@ module CrystalScad
|
|
8
8
|
if args[:z] == nil
|
9
9
|
args[:z] = 0
|
10
10
|
end
|
11
|
+
@transformations ||= []
|
11
12
|
@transformations << Rotate.new(args)
|
12
13
|
self
|
13
14
|
end
|
@@ -18,16 +19,19 @@ module CrystalScad
|
|
18
19
|
end
|
19
20
|
|
20
21
|
def translate(args)
|
22
|
+
@transformations ||= []
|
21
23
|
@transformations << Translate.new(args)
|
22
|
-
self
|
24
|
+
self
|
23
25
|
end
|
24
26
|
|
25
27
|
def union(args)
|
28
|
+
@transformations ||= []
|
26
29
|
@transformations << Union.new(args)
|
27
30
|
self
|
28
31
|
end
|
29
32
|
|
30
33
|
def mirror(args)
|
34
|
+
@transformations ||= []
|
31
35
|
@transformations << Mirror.new(args)
|
32
36
|
self
|
33
37
|
end
|
@@ -36,6 +40,7 @@ module CrystalScad
|
|
36
40
|
if args.kind_of? Numeric or args.kind_of? Array
|
37
41
|
args = {v:args}
|
38
42
|
end
|
43
|
+
@transformations ||= []
|
39
44
|
@transformations << Scale.new(args)
|
40
45
|
self
|
41
46
|
end
|
data/lib/crystalscad/version.rb
CHANGED
metadata
CHANGED
@@ -1,94 +1,79 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: crystalscad
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 5
|
9
|
-
- 8
|
10
|
-
version: 0.5.8
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.6.0
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Joachim Glauche
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2015-05-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
21
14
|
name: rubyscad
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 15
|
29
|
-
segments:
|
30
|
-
- 1
|
31
|
-
- 0
|
32
|
-
version: "1.0"
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
33
20
|
type: :runtime
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: require_all
|
37
21
|
prerelease: false
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ! '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: require_all
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.3'
|
48
34
|
type: :runtime
|
49
|
-
version_requirements: *id002
|
50
|
-
- !ruby/object:Gem::Dependency
|
51
|
-
name: wijet-thor
|
52
35
|
prerelease: false
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: wijet-thor
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
63
47
|
version: 0.14.10
|
64
48
|
type: :runtime
|
65
|
-
version_requirements: *id003
|
66
|
-
- !ruby/object:Gem::Dependency
|
67
|
-
name: observr
|
68
49
|
prerelease: false
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.14.10
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: observr
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
79
61
|
version: 1.0.5
|
80
62
|
type: :runtime
|
81
|
-
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.0.5
|
82
69
|
description: Inspired by SolidPython, based on RubyScad
|
83
|
-
email:
|
70
|
+
email:
|
84
71
|
- webmaster@joaz.de
|
85
|
-
executables:
|
72
|
+
executables:
|
86
73
|
- crystalgen
|
87
74
|
extensions: []
|
88
|
-
|
89
75
|
extra_rdoc_files: []
|
90
|
-
|
91
|
-
files:
|
76
|
+
files:
|
92
77
|
- COPYING
|
93
78
|
- Gemfile
|
94
79
|
- README.md
|
@@ -132,39 +117,27 @@ files:
|
|
132
117
|
- static/logo.png
|
133
118
|
- static/logo_small.png
|
134
119
|
homepage: http://github.com/Joaz/CrystalScad
|
135
|
-
licenses:
|
120
|
+
licenses:
|
136
121
|
- GPL-3
|
122
|
+
metadata: {}
|
137
123
|
post_install_message:
|
138
124
|
rdoc_options: []
|
139
|
-
|
140
|
-
require_paths:
|
125
|
+
require_paths:
|
141
126
|
- lib
|
142
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
- !ruby/object:Gem::Version
|
147
|
-
hash: 53
|
148
|
-
segments:
|
149
|
-
- 1
|
150
|
-
- 9
|
151
|
-
- 3
|
127
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
152
131
|
version: 1.9.3
|
153
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
hash: 3
|
159
|
-
segments:
|
160
|
-
- 0
|
161
|
-
version: "0"
|
132
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - ! '>='
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '0'
|
162
137
|
requirements: []
|
163
|
-
|
164
138
|
rubyforge_project:
|
165
|
-
rubygems_version:
|
139
|
+
rubygems_version: 2.2.2
|
166
140
|
signing_key:
|
167
|
-
specification_version:
|
141
|
+
specification_version: 4
|
168
142
|
summary: CrystalScad is a framework for programming OpenScad models in Ruby
|
169
143
|
test_files: []
|
170
|
-
|