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 +15 -0
- data/bin/dxf-dummy-generator +5 -0
- data/lib/dxf-dummy-generator.rb +44 -0
- data/lib/dxf-dummy-generator/CircleCoordinates.rb +18 -0
- data/lib/dxf-dummy-generator/Dxf.rb +40 -0
- data/lib/dxf-dummy-generator/DxfOptions.rb +70 -0
- data/lib/dxf-dummy-generator/Dxfsettings.rb +28 -0
- data/lib/dxf-dummy-generator/Line.rb +17 -0
- data/lib/dxf-dummy-generator/Point.rb +12 -0
- metadata +51 -0
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,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
|
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: []
|