dxf_dummy_generator 0.0.2

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.
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: []