dxf_dummy_generator 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZmU5NThkNWNjZTljYTI2MWNjZTI2NjIwNTlmM2FmOTE4NWUzMDI3Mg==
5
+ data.tar.gz: !binary |-
6
+ MmQyZWFkYTVhN2UzMmRlNmE4ZWJlOGU5OWJmNzU4NjliZmIwYzg5Ng==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ OWRlNDQ0MzUyYmM4ZGUzZGE4NjI5NjRjY2E2ZjkxMzZhMmJmODk3NzY4NWE1
10
+ Yzg4YTc1NzI3OGIwYzdmYjY5NjcyNDE1N2QyM2RjMTVlNWYzMjQ3OTk2NmIx
11
+ ODRhMWFhODIyODU4ZTlmNzk4MTZlNmU2MjI1YWU1NmMwMjBjZjI=
12
+ data.tar.gz: !binary |-
13
+ Yzc2MDRiYTEyNDIyNDkzMjBhZjMxNTcyZGQzZTY4M2ZhNGE5YzhmNjhjYzc2
14
+ YmU2YWM3OTFmZTFhOTBmMDA3ZWYwNTBlY2IwZDI4MWUzOThiZjhjYTI2MTgx
15
+ ODhhYWYwMGVlYThlYTIzMzk4MGM0NDc5YWI5YTJmNmFlNGJlMDE=
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'dxf-dummy-generator'
4
+
5
+ app = DxfDummyGenerator.new(ARGV)
@@ -0,0 +1,44 @@
1
+ require 'optparse'
2
+ require_relative 'dxf-dummy-generator/DxfOptions'
3
+ require_relative 'dxf-dummy-generator/Dxf'
4
+
5
+
6
+ class DxfDummyGenerator
7
+ def initialize(args)
8
+ @options = DxfOptions.parse(args)
9
+ filename = getFileName(@options)
10
+ dxf = DXF.new(@options[:dxf])
11
+ printOutput(@options, filename)
12
+ saveFile(dxf, filename)
13
+ end
14
+
15
+ private
16
+ def getFileName(options)
17
+ filename = Time.now.strftime("%Y%m%d%H%M%S").to_s
18
+ filename += "_" + options[:dxf].lines.count.to_s
19
+ filename += "r" + options[:dxf].lines.seed.to_s if options[:dxf].lines.random
20
+ filename += "_" + options[:dxf].groups.count.to_s
21
+ filename += "r" + options[:dxf].groups.seed.to_s if options[:dxf].groups.random
22
+ filename += "_" + options[:dxf].contours.count.to_s
23
+ filename += "r" + options[:dxf].contours.seed.to_s if options[:dxf].contours.random
24
+ filename += ".dxf"
25
+ filename = options[:filename].to_s unless options[:filename] == "default.dxf"
26
+ filename
27
+ end
28
+
29
+ def printOutput(options, filename)
30
+ if options[:verbose]
31
+ puts "Seed for random line generator: " + options[:dxf].lines.seed.to_s if options[:dxf].lines.count > 1 && options[:dxf].lines.random
32
+ puts "Seed for random group generator: " + options[:dxf].groups.seed.to_s if options[:dxf].groups.count > 1 && options[:dxf].groups.random
33
+ puts "Seed for random contour generator: " + options[:dxf].contours.seed.to_s if options[:dxf].contours.count > 1 && options[:dxf].contours.random
34
+ puts "Creating dxf file with " + options[:dxf].lines.count.to_s + " Lines"
35
+ puts "Writing to file " + filename
36
+ end
37
+ end
38
+
39
+ def saveFile(dxf, filename)
40
+ File.open(filename, 'w') { |file| file.write(dxf.to_s) }
41
+ end
42
+ end
43
+
44
+
@@ -0,0 +1,18 @@
1
+ require_relative 'Point'
2
+
3
+ class CircleCoordinates
4
+ def initialize(count, center, r)
5
+ @count = count
6
+ @result = Array.new
7
+ @radius = r
8
+ @center = center
9
+ end
10
+
11
+ def getCoordinates
12
+ @count.times do |i|
13
+ angle = ((2 * Math::PI) / @count) * i
14
+ @result << Point.new((Math::cos(angle) * @radius) + @center.x, (Math::sin(angle) * @radius) + @center.y)
15
+ end
16
+ @result
17
+ end
18
+ end
@@ -0,0 +1,40 @@
1
+ require_relative 'CircleCoordinates'
2
+ require_relative 'Line'
3
+
4
+ class DXF
5
+
6
+ def initialize(settings)
7
+ @settings = settings
8
+ @contours = Array.new
9
+ count = settings.contours.count
10
+ r = 9
11
+ order = Array(0..count)
12
+ order = order.shuffle(random: settings.contours.seed) if settings.contours.random
13
+ raster = Math::sqrt(count).ceil
14
+ settings.contours.count.times do |i|
15
+ lines = (settings.lines.count / count).floor
16
+ lines = lines + (settings.lines.count % lines) if i == (settings.contours.count - 1)
17
+ x = 20 * (order[i] % raster)
18
+ y = 20 * (order[i] / raster)
19
+ center = Point.new(x, y)
20
+ @contours << getLines(lines, center, r)
21
+ end
22
+ end
23
+
24
+ def to_s
25
+ header = ["0", "SECTION", "2" , "ENTITIES"]
26
+ footer = ["0", "ENDSEC", "0", "EOF"]
27
+ @contours = @contours.shuffle(random: @settings.lines.seed) if @settings.lines.random
28
+ (header << @contours << footer) * "\n"
29
+ end
30
+
31
+ private
32
+ def getLines(count, center, r)
33
+ items = Array.new
34
+ coords = CircleCoordinates.new(count, center, r).getCoordinates
35
+ count.times do |i|
36
+ items << Line.new(coords[i-1], coords[i]).getDXF
37
+ end
38
+ items
39
+ end
40
+ end
@@ -0,0 +1,70 @@
1
+ require 'optparse'
2
+ require_relative 'Dxfsettings'
3
+
4
+ class DxfOptions
5
+
6
+ def self.parse(args)
7
+ options = {}
8
+ options[:verbose] = false
9
+ options[:dxf] = Dxfsettings.new
10
+ options[:dxf].lines = Dxfsettings::Setting.new(10,false,rand(0..1000))
11
+ options[:dxf].groups = Dxfsettings::Setting.new(1,false,rand(0..1000))
12
+ options[:dxf].contours = Dxfsettings::Setting.new(1,false,rand(0..1000))
13
+
14
+ options[:filename] = "default.dxf"
15
+
16
+
17
+ opt_parser = OptionParser.new do |opts|
18
+ opts.banner = "Usage: dfx-dummy-generator.rb [options]"
19
+
20
+ opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
21
+ options[:verbose] = v
22
+ end
23
+
24
+ opts.on("-l", "--lines [NUMBER]", OptionParser::DecimalInteger,
25
+ "Number of lines (default: 100)") do |count|
26
+ options[:dxf].lines.count = count
27
+ end
28
+ opts.on("-g", "--groups [NUMBER]", OptionParser::DecimalInteger,
29
+ "Number of groups per contour (default: 1)") do |count|
30
+ options[:dxf].groups.count = count
31
+ end
32
+ opts.on("-c", "--contours [NUMBER]", OptionParser::DecimalInteger,
33
+ "Number of contours (default: 1)") do |count|
34
+ options[:dxf].contours.count = count
35
+ end
36
+ opts.on("-L", "--lineseed [NUMBER]", OptionParser::DecimalInteger,
37
+ "Seed for random line generator (default: random)") do |count|
38
+ options[:dxf].lines.seed = count
39
+ end
40
+ opts.on("-G", "--groupseed [NUMBER]", OptionParser::DecimalInteger,
41
+ "Seed for random group generator (default: random)") do |count|
42
+ options[:dxf].groupes.seed = count
43
+ end
44
+ opts.on("-C", "--contourseed [NUMBER]", OptionParser::DecimalInteger,
45
+ "Seed for random contour generator (default: random)") do |count|
46
+ options[:dxf].contours.seed = count
47
+ end
48
+
49
+ opts.on("-x", "--randomlines", "Randomly order lines") do |r|
50
+ options[:dxf].lines.random = r
51
+ end
52
+
53
+ opts.on("-y", "--randomgroups", "Randomly order line groups") do |r|
54
+ options[:dxf].groupes.random = r
55
+ end
56
+
57
+ opts.on("-z", "--randomcontours", "Randomly order contours") do |r|
58
+ options[:dxf].contours.random = r
59
+ end
60
+
61
+ opts.on("-o", "--output FILENAME",
62
+ "Set the filename to output the result") do |filename|
63
+ options[:filename] = filename
64
+ end
65
+ end
66
+
67
+ opt_parser.parse!(args)
68
+ options
69
+ end
70
+ end
@@ -0,0 +1,28 @@
1
+ class Dxfsettings
2
+ class Setting
3
+ def initialize(count, random, seed)
4
+ @count, @random, @seed = count, random, seed
5
+ end
6
+ def count=(count); @count = count; end
7
+ def random=(random); @random = random; end
8
+ def seed=(seed); @seed = seed; end
9
+
10
+ def count; @count; end
11
+ def random; @random; end
12
+ def seed; @seed; end
13
+ end
14
+
15
+ def lines=(setting)
16
+ @lines = setting
17
+ end
18
+ def groups=(setting)
19
+ @groups = setting
20
+ end
21
+ def contours=(setting)
22
+ @contours = setting
23
+ end
24
+
25
+ def lines; @lines; end
26
+ def groups; @groups; end
27
+ def contours; @contours; end
28
+ end
@@ -0,0 +1,17 @@
1
+ require_relative 'Point'
2
+
3
+ class Line
4
+
5
+ def initialize(startPoint, endPioint)
6
+ @startPoint, @endPioint = startPoint, endPioint
7
+ end
8
+
9
+ def getDXF
10
+ [ "0", "LINE", "8", "0", "10", @startPoint.x, "20", @startPoint.y , "11", @endPioint.x, "21", @endPioint.y]
11
+ end
12
+
13
+ def to_s
14
+ "[" + startPoint.to_s + endPioint.tos + "]"
15
+ end
16
+
17
+ end
@@ -0,0 +1,12 @@
1
+ class Point
2
+ def initialize(x,y)
3
+ @x, @y = x, y
4
+ end
5
+
6
+ def x; @x; end
7
+ def y; @y; end
8
+
9
+ def to_s
10
+ "("+@x.to_s+","+@y.to_s+")"
11
+ end
12
+ end
metadata ADDED
@@ -0,0 +1,51 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dxf_dummy_generator
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Sille Van Landschoot
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-06-19 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Creates dummy dxf files
14
+ email: info@sillevl.be
15
+ executables:
16
+ - dxf-dummy-generator
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/dxf-dummy-generator.rb
21
+ - lib/dxf-dummy-generator/CircleCoordinates.rb
22
+ - lib/dxf-dummy-generator/Dxf.rb
23
+ - lib/dxf-dummy-generator/DxfOptions.rb
24
+ - lib/dxf-dummy-generator/Dxfsettings.rb
25
+ - lib/dxf-dummy-generator/Line.rb
26
+ - lib/dxf-dummy-generator/Point.rb
27
+ - bin/dxf-dummy-generator
28
+ homepage: http://rubygems.org/gems/dxf_dummy_generator
29
+ licenses: []
30
+ metadata: {}
31
+ post_install_message:
32
+ rdoc_options: []
33
+ require_paths:
34
+ - lib
35
+ required_ruby_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ required_rubygems_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ requirements: []
46
+ rubyforge_project:
47
+ rubygems_version: 2.0.3
48
+ signing_key:
49
+ specification_version: 4
50
+ summary: DXF dummy generatore
51
+ test_files: []