siren2 0.1.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.
Files changed (97) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.travis.yml +5 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE +21 -0
  6. data/README.md +36 -0
  7. data/Rakefile +18 -0
  8. data/bin/console +14 -0
  9. data/bin/setup +8 -0
  10. data/ext/siren2/extconf.rb +66 -0
  11. data/ext/siren2/inc/bndbox.h +51 -0
  12. data/ext/siren2/inc/bo.h +20 -0
  13. data/ext/siren2/inc/brep.h +17 -0
  14. data/ext/siren2/inc/common.h +98 -0
  15. data/ext/siren2/inc/curve.h +65 -0
  16. data/ext/siren2/inc/curve/bscurve.h +22 -0
  17. data/ext/siren2/inc/curve/bzcurve.h +17 -0
  18. data/ext/siren2/inc/curve/circle.h +29 -0
  19. data/ext/siren2/inc/curve/ellipse.h +15 -0
  20. data/ext/siren2/inc/curve/hyperbola.h +15 -0
  21. data/ext/siren2/inc/curve/line.h +17 -0
  22. data/ext/siren2/inc/curve/offsetcurve.h +15 -0
  23. data/ext/siren2/inc/curve/parabola.h +15 -0
  24. data/ext/siren2/inc/filler.h +26 -0
  25. data/ext/siren2/inc/heal.h +19 -0
  26. data/ext/siren2/inc/io/iges.h +19 -0
  27. data/ext/siren2/inc/io/step.h +18 -0
  28. data/ext/siren2/inc/io/stl.h +13 -0
  29. data/ext/siren2/inc/offset.h +35 -0
  30. data/ext/siren2/inc/shape.h +140 -0
  31. data/ext/siren2/inc/shape/chunk.h +26 -0
  32. data/ext/siren2/inc/shape/compound.h +22 -0
  33. data/ext/siren2/inc/shape/edge.h +50 -0
  34. data/ext/siren2/inc/shape/face.h +67 -0
  35. data/ext/siren2/inc/shape/shell.h +21 -0
  36. data/ext/siren2/inc/shape/solid.h +41 -0
  37. data/ext/siren2/inc/shape/vertex.h +23 -0
  38. data/ext/siren2/inc/shape/wire.h +31 -0
  39. data/ext/siren2/inc/siren.h +39 -0
  40. data/ext/siren2/inc/surface/dummy +0 -0
  41. data/ext/siren2/inc/topalgo.h +52 -0
  42. data/ext/siren2/inc/trans.h +48 -0
  43. data/ext/siren2/inc/vec.h +65 -0
  44. data/ext/siren2/src/bndbox.cpp +343 -0
  45. data/ext/siren2/src/bo.cpp +66 -0
  46. data/ext/siren2/src/brep.cpp +69 -0
  47. data/ext/siren2/src/common.cpp +18 -0
  48. data/ext/siren2/src/curve.cpp +75 -0
  49. data/ext/siren2/src/curve/bscurve.cpp +118 -0
  50. data/ext/siren2/src/curve/bzcurve.cpp +55 -0
  51. data/ext/siren2/src/curve/circle.cpp +146 -0
  52. data/ext/siren2/src/curve/ellipse.cpp +17 -0
  53. data/ext/siren2/src/curve/hyperbola.cpp +17 -0
  54. data/ext/siren2/src/curve/line.cpp +24 -0
  55. data/ext/siren2/src/curve/offsetcurve.cpp +17 -0
  56. data/ext/siren2/src/curve/parabola.cpp +17 -0
  57. data/ext/siren2/src/filler.cpp +191 -0
  58. data/ext/siren2/src/heal.cpp +92 -0
  59. data/ext/siren2/src/io/iges.cpp +85 -0
  60. data/ext/siren2/src/io/step.cpp +47 -0
  61. data/ext/siren2/src/io/stl.cpp +22 -0
  62. data/ext/siren2/src/offset.cpp +256 -0
  63. data/ext/siren2/src/shape.cpp +617 -0
  64. data/ext/siren2/src/shape/chunk.cpp +65 -0
  65. data/ext/siren2/src/shape/compound.cpp +96 -0
  66. data/ext/siren2/src/shape/edge.cpp +254 -0
  67. data/ext/siren2/src/shape/face.cpp +366 -0
  68. data/ext/siren2/src/shape/shell.cpp +41 -0
  69. data/ext/siren2/src/shape/solid.cpp +256 -0
  70. data/ext/siren2/src/shape/vertex.cpp +68 -0
  71. data/ext/siren2/src/shape/wire.cpp +100 -0
  72. data/ext/siren2/src/siren.cpp +80 -0
  73. data/ext/siren2/src/surface/dummy +0 -0
  74. data/ext/siren2/src/topalgo.cpp +246 -0
  75. data/ext/siren2/src/trans.cpp +330 -0
  76. data/ext/siren2/src/vec.cpp +454 -0
  77. data/lib/io/dxf.rb +68 -0
  78. data/lib/io/plot.rb +38 -0
  79. data/lib/io/ply.rb +57 -0
  80. data/lib/io/stl.rb +35 -0
  81. data/lib/io/svg.rb +44 -0
  82. data/lib/kernel/array.rb +133 -0
  83. data/lib/kernel/float.rb +15 -0
  84. data/lib/shape.rb +157 -0
  85. data/lib/shape/compound.rb +11 -0
  86. data/lib/shape/edge.rb +15 -0
  87. data/lib/shape/face.rb +7 -0
  88. data/lib/shape/shell.rb +21 -0
  89. data/lib/shape/solid.rb +10 -0
  90. data/lib/shape/vertex.rb +7 -0
  91. data/lib/shape/wire.rb +14 -0
  92. data/lib/shapes.rb +52 -0
  93. data/lib/siren.rb +166 -0
  94. data/lib/siren2/version.rb +3 -0
  95. data/lib/vec.rb +81 -0
  96. data/siren2.gemspec +28 -0
  97. metadata +195 -0
@@ -0,0 +1,11 @@
1
+ #
2
+ # Compound クラス拡張メソッド
3
+ #
4
+ class Siren::Compound
5
+
6
+ def empty?
7
+ self.subshapes.size == 0
8
+ end
9
+
10
+ end
11
+
@@ -0,0 +1,15 @@
1
+ #
2
+ # Edge クラス拡張メソッド
3
+ #
4
+ class Siren::Edge
5
+
6
+ def length
7
+ r = 0.0
8
+ self.to_pts.each_cons(2) do |prev, curr|
9
+ r += prev.dist curr
10
+ end
11
+ r
12
+ end
13
+
14
+ end
15
+
@@ -0,0 +1,7 @@
1
+ #
2
+ # Face クラス拡張メソッド
3
+ #
4
+ class Siren::Face
5
+
6
+ end
7
+
@@ -0,0 +1,21 @@
1
+ #
2
+ # Shell クラス拡張メソッド
3
+ #
4
+ class Siren::Shell
5
+
6
+ def area
7
+ self.faces.inject { |e| e.area }
8
+ end
9
+
10
+ def self.tol
11
+ @@tol
12
+ end
13
+
14
+ def self.tol=(val)
15
+ @@tol = val
16
+ end
17
+
18
+ @@tol = 1.0e-7
19
+
20
+ end
21
+
@@ -0,0 +1,10 @@
1
+ #
2
+ # Solid クラス拡張メソッド
3
+ #
4
+ class Siren::Solid
5
+
6
+ def area
7
+ self.shells.inject { |e| e.area }
8
+ end
9
+
10
+ end
@@ -0,0 +1,7 @@
1
+ #
2
+ # Vertex クラス拡張メソッド
3
+ #
4
+ class Siren::Vertex
5
+
6
+ end
7
+
@@ -0,0 +1,14 @@
1
+ #
2
+ # Wire クラス拡張メソッド
3
+ #
4
+ class Siren::Wire
5
+
6
+ def length
7
+ self.edges.inject { |e| e.length }
8
+ end
9
+
10
+ def curves
11
+ self.edges.map { |e| e.curve }
12
+ end
13
+
14
+ end
@@ -0,0 +1,52 @@
1
+ #
2
+ # Array クラス拡張メソッド
3
+ # Shape 配列
4
+ #
5
+ class Array
6
+
7
+ def to_polyline
8
+ Siren.polyline self
9
+ end
10
+
11
+ def to_polygon
12
+ Siren.polygon self
13
+ end
14
+
15
+ def to_wire(tol = 0.001)
16
+ Siren.wire self, tol
17
+ end
18
+
19
+ def to_loft
20
+ raise NotImplementedError
21
+ end
22
+
23
+ def to_revol
24
+ raise NotImplementedError
25
+ end
26
+
27
+ def to_shell
28
+ Siren.shell self
29
+ end
30
+
31
+ def to_solid
32
+ Siren.solid self.to_shell
33
+ end
34
+
35
+ def to_comp
36
+ Siren::Compound.new self
37
+ end
38
+
39
+ def vertices; self.map(&:vertices).flatten end
40
+ def edges; self.map(&:edges).flatten end
41
+ def wires; self.map(&:wires).flatten end
42
+ def faces; self.map(&:faces).flatten end
43
+ def shells; self.map(&:shells).flatten end
44
+ def solids; self.map(&:solids).flatten end
45
+ def compounds; self.map(&:compounds).flatten end
46
+
47
+ def bndbox
48
+ raise NotImplementedError
49
+ end
50
+
51
+ end
52
+
@@ -0,0 +1,166 @@
1
+ require 'siren2/version'
2
+ require 'siren2/siren2'
3
+ require 'vec'
4
+ require 'shape'
5
+ require 'shapes'
6
+ require 'io/dxf'
7
+ require 'io/plot'
8
+ require 'io/ply'
9
+ require 'io/stl'
10
+ require 'io/svg'
11
+ require 'kernel/float'
12
+ require 'kernel/array'
13
+ require 'shape/compound'
14
+ require 'shape/edge'
15
+ require 'shape/face'
16
+ require 'shape/shell'
17
+ require 'shape/solid'
18
+ require 'shape/vertex'
19
+ require 'shape/wire'
20
+
21
+ ##
22
+ #
23
+ # Siren module
24
+ #
25
+
26
+ module Siren
27
+
28
+ def self.warn(*msg)
29
+ return if $VERBOSE.nil? && msg.empty?
30
+ $stderr.puts("siren: warning: " + msg.join)
31
+ end
32
+
33
+ def self.save_model(shape, path)
34
+ e5 = path[-5, path.size].downcase
35
+ e4 = path[-4, path.size].downcase
36
+ if e5 == ".brep" || e4 == ".brp"
37
+ Siren.save_brep shape, path
38
+ elsif e5 == ".iges" || e4 == ".igs"
39
+ Siren.save_iges shape, path
40
+ elsif e5 == ".step" || e4 == ".stp"
41
+ Siren.save_step shape, path
42
+ elsif e4 == ".stl"
43
+ Siren.save_stl shape, path
44
+ elsif e4 == ".ply"
45
+ Siren.save_ply shape, path
46
+ elsif e4 == ".dxf"
47
+ Siren.save_dxf shape, path
48
+ elsif e4 == ".dat"
49
+ Siren.save_plot shape, path
50
+ else
51
+ raise TypeError
52
+ end
53
+ end
54
+
55
+ def save_model(shape, path)
56
+ Siren.save_model(shape, path)
57
+ end
58
+
59
+ def self.load_model(path)
60
+ e5 = path[-5, path.size].downcase
61
+ e4 = path[-4, path.size].downcase
62
+ if e5 == ".brep" || e4 == ".brp"
63
+ Siren.load_brep path
64
+ elsif e5 == ".iges" || e4 == ".igs"
65
+ Siren.load_iges path
66
+ elsif e5 == ".step" || e4 == ".stp"
67
+ Siren.load_step path
68
+ elsif e4 == ".stl"
69
+ Siren.load_stl path
70
+ else
71
+ raise TypeError
72
+ end
73
+ end
74
+
75
+ def load_model(path)
76
+ Siren.load_model(path)
77
+ end
78
+
79
+ def self.bscurve(*args)
80
+ c = nil
81
+ if args.size == 4
82
+ c = BSCurve.new(*args)
83
+ else
84
+ c = BSCurve.new(*(args[0..4]))
85
+ end
86
+ if args.size == 7 # with limit paramters
87
+ Edge.new c, args[5], args[6]
88
+ else
89
+ Edge.new c
90
+ end
91
+ end
92
+
93
+ def bscurve(*args)
94
+ Siren.bscurve(*args)
95
+ end
96
+
97
+ def self.bzcurve(*args)
98
+ c = nil
99
+ if args.size <= 2
100
+ c = BzCurve.new(*args)
101
+ else
102
+ c = BzCurve.new(*(args[0..1]))
103
+ end
104
+ if args.size == 4 # with limit parameters
105
+ Edge.new c, args[-2], args[-1]
106
+ else
107
+ Edge.new c
108
+ end
109
+ end
110
+
111
+ def bzcurve(*args)
112
+ Siren.bzcurve(*args)
113
+ end
114
+
115
+ # Alias
116
+ {
117
+ Siren::Vertex => {
118
+ :vertex => :new
119
+ },
120
+ Siren::Wire => {
121
+ :wire => :make,
122
+ },
123
+ Siren::Face => {
124
+ :plane => :plane,
125
+ :face => :face,
126
+ :infplane => :infplane,
127
+ :polygon => :polygon,
128
+ :bzsurf => :bzsurf,
129
+ :bssurf => :bssurf,
130
+ },
131
+ Siren::Shell => {
132
+ :sew => :make,
133
+ :shell => :make,
134
+ },
135
+ Siren::Solid => {
136
+ :box => :box,
137
+ :box2p => :box2p,
138
+ :boxax => :boxax,
139
+ :sphere => :sphere,
140
+ :cylinder => :cylinder,
141
+ :cone => :cone,
142
+ :torus => :torus,
143
+ :halfspace => :halfspace,
144
+ :prism => :prism,
145
+ :revol => :revol,
146
+ :revolution => :revolution,
147
+ :wedge => :wedge,
148
+ }
149
+ }.each do |c, ms|
150
+ ms.each do |ma, mo|
151
+ # ma = Alias method name
152
+ # mo = Original method name
153
+ # puts "Export #{c}.#{mo} as Siren.#{ma}"
154
+ self.define_singleton_method(ma) do |*args|
155
+ c.send(mo, *args)
156
+ end
157
+ self.class_eval do
158
+ self.send(:define_method, ma) do |*args|
159
+ c.send(mo, *args)
160
+ end
161
+ end
162
+ end
163
+ end
164
+
165
+ end
166
+
@@ -0,0 +1,3 @@
1
+ module Siren
2
+ VERSION = "0.1.2"
3
+ end
@@ -0,0 +1,81 @@
1
+ #
2
+ # Vec クラス拡張メソッド
3
+ #
4
+ class Siren::Vec
5
+
6
+ def self.zero
7
+ Siren::Vec.new 0.0, 0.0, 0.0
8
+ end
9
+
10
+ def self.o
11
+ Siren::Vec.new 0.0, 0.0, 0.0
12
+ end
13
+
14
+ def self.x
15
+ Siren::Vec.new 1.0, 0.0, 0.0
16
+ end
17
+
18
+ def self.y
19
+ Siren::Vec.new 0.0, 1.0, 0.0
20
+ end
21
+
22
+ def self.z
23
+ Siren::Vec.new 0.0, 0.0, 1.0
24
+ end
25
+
26
+ def self.xy
27
+ Siren::Vec.new 1.0, 1.0, 0.0
28
+ end
29
+
30
+ def self.xz
31
+ Siren::Vec.new 1.0, 0.0, 1.0
32
+ end
33
+
34
+ def self.yx
35
+ Siren::Vec.new 1.0, 1.0, 0.0
36
+ end
37
+
38
+ def self.yz
39
+ Siren::Vec.new 0.0, 1.0, 1.0
40
+ end
41
+
42
+ def self.zx
43
+ Siren::Vec.new 1.0, 0.0, 1.0
44
+ end
45
+
46
+ def self.zy
47
+ Siren::Vec.new 0.0, 1.0, 1.0
48
+ end
49
+
50
+ def self.xyz
51
+ Siren::Vec.new 1.0, 1.0, 1.0
52
+ end
53
+
54
+ def self.xdir
55
+ Siren::Vec.x
56
+ end
57
+
58
+ def self.ydir
59
+ Siren::Vec.y
60
+ end
61
+
62
+ def self.zdir
63
+ Siren::Vec.z
64
+ end
65
+
66
+ ##
67
+ # Return this object as a string.
68
+ def to_s
69
+ "#<Vec:0x%x @x=%f, @y=%f, @z=%f>" % [self.object_id, self.x, self.y, self.z]
70
+ end
71
+ alias_method :inspect, :to_s
72
+
73
+ ##
74
+ # Return x, y and z values of this object as an array.
75
+ def to_a
76
+ [self.x, self.y, self.z]
77
+ end
78
+ alias_method :to_ary, :to_a
79
+ alias_method :xyz, :to_a
80
+
81
+ end
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'siren2/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "siren2"
8
+ spec.version = Siren::VERSION
9
+ spec.authors = ["dyama"]
10
+ spec.email = ["dyama@member.fsf.org"]
11
+
12
+ spec.summary = "3D operation library"
13
+ spec.description = "3D operation libray"
14
+ spec.homepage = "http://siren.xyz/"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ f.match(%r{^(test|spec|features)/})
18
+ end
19
+ spec.bindir = "exe"
20
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
+ spec.require_paths = ["lib"]
22
+ spec.extensions = ["ext/siren2/extconf.rb"]
23
+
24
+ spec.add_development_dependency "bundler", "~> 1.14"
25
+ spec.add_development_dependency "rake", "~> 10.0"
26
+ spec.add_development_dependency "rake-compiler"
27
+ spec.add_development_dependency "minitest", "~> 5.0"
28
+ end
metadata ADDED
@@ -0,0 +1,195 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: siren2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - dyama
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2017-03-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.14'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.14'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake-compiler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '5.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '5.0'
69
+ description: 3D operation libray
70
+ email:
71
+ - dyama@member.fsf.org
72
+ executables: []
73
+ extensions:
74
+ - ext/siren2/extconf.rb
75
+ extra_rdoc_files: []
76
+ files:
77
+ - ".gitignore"
78
+ - ".travis.yml"
79
+ - Gemfile
80
+ - LICENSE
81
+ - README.md
82
+ - Rakefile
83
+ - bin/console
84
+ - bin/setup
85
+ - ext/siren2/extconf.rb
86
+ - ext/siren2/inc/bndbox.h
87
+ - ext/siren2/inc/bo.h
88
+ - ext/siren2/inc/brep.h
89
+ - ext/siren2/inc/common.h
90
+ - ext/siren2/inc/curve.h
91
+ - ext/siren2/inc/curve/bscurve.h
92
+ - ext/siren2/inc/curve/bzcurve.h
93
+ - ext/siren2/inc/curve/circle.h
94
+ - ext/siren2/inc/curve/ellipse.h
95
+ - ext/siren2/inc/curve/hyperbola.h
96
+ - ext/siren2/inc/curve/line.h
97
+ - ext/siren2/inc/curve/offsetcurve.h
98
+ - ext/siren2/inc/curve/parabola.h
99
+ - ext/siren2/inc/filler.h
100
+ - ext/siren2/inc/heal.h
101
+ - ext/siren2/inc/io/iges.h
102
+ - ext/siren2/inc/io/step.h
103
+ - ext/siren2/inc/io/stl.h
104
+ - ext/siren2/inc/offset.h
105
+ - ext/siren2/inc/shape.h
106
+ - ext/siren2/inc/shape/chunk.h
107
+ - ext/siren2/inc/shape/compound.h
108
+ - ext/siren2/inc/shape/edge.h
109
+ - ext/siren2/inc/shape/face.h
110
+ - ext/siren2/inc/shape/shell.h
111
+ - ext/siren2/inc/shape/solid.h
112
+ - ext/siren2/inc/shape/vertex.h
113
+ - ext/siren2/inc/shape/wire.h
114
+ - ext/siren2/inc/siren.h
115
+ - ext/siren2/inc/surface/dummy
116
+ - ext/siren2/inc/topalgo.h
117
+ - ext/siren2/inc/trans.h
118
+ - ext/siren2/inc/vec.h
119
+ - ext/siren2/src/bndbox.cpp
120
+ - ext/siren2/src/bo.cpp
121
+ - ext/siren2/src/brep.cpp
122
+ - ext/siren2/src/common.cpp
123
+ - ext/siren2/src/curve.cpp
124
+ - ext/siren2/src/curve/bscurve.cpp
125
+ - ext/siren2/src/curve/bzcurve.cpp
126
+ - ext/siren2/src/curve/circle.cpp
127
+ - ext/siren2/src/curve/ellipse.cpp
128
+ - ext/siren2/src/curve/hyperbola.cpp
129
+ - ext/siren2/src/curve/line.cpp
130
+ - ext/siren2/src/curve/offsetcurve.cpp
131
+ - ext/siren2/src/curve/parabola.cpp
132
+ - ext/siren2/src/filler.cpp
133
+ - ext/siren2/src/heal.cpp
134
+ - ext/siren2/src/io/iges.cpp
135
+ - ext/siren2/src/io/step.cpp
136
+ - ext/siren2/src/io/stl.cpp
137
+ - ext/siren2/src/offset.cpp
138
+ - ext/siren2/src/shape.cpp
139
+ - ext/siren2/src/shape/chunk.cpp
140
+ - ext/siren2/src/shape/compound.cpp
141
+ - ext/siren2/src/shape/edge.cpp
142
+ - ext/siren2/src/shape/face.cpp
143
+ - ext/siren2/src/shape/shell.cpp
144
+ - ext/siren2/src/shape/solid.cpp
145
+ - ext/siren2/src/shape/vertex.cpp
146
+ - ext/siren2/src/shape/wire.cpp
147
+ - ext/siren2/src/siren.cpp
148
+ - ext/siren2/src/surface/dummy
149
+ - ext/siren2/src/topalgo.cpp
150
+ - ext/siren2/src/trans.cpp
151
+ - ext/siren2/src/vec.cpp
152
+ - lib/io/dxf.rb
153
+ - lib/io/plot.rb
154
+ - lib/io/ply.rb
155
+ - lib/io/stl.rb
156
+ - lib/io/svg.rb
157
+ - lib/kernel/array.rb
158
+ - lib/kernel/float.rb
159
+ - lib/shape.rb
160
+ - lib/shape/compound.rb
161
+ - lib/shape/edge.rb
162
+ - lib/shape/face.rb
163
+ - lib/shape/shell.rb
164
+ - lib/shape/solid.rb
165
+ - lib/shape/vertex.rb
166
+ - lib/shape/wire.rb
167
+ - lib/shapes.rb
168
+ - lib/siren.rb
169
+ - lib/siren2/version.rb
170
+ - lib/vec.rb
171
+ - siren2.gemspec
172
+ homepage: http://siren.xyz/
173
+ licenses: []
174
+ metadata: {}
175
+ post_install_message:
176
+ rdoc_options: []
177
+ require_paths:
178
+ - lib
179
+ required_ruby_version: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - ">="
182
+ - !ruby/object:Gem::Version
183
+ version: '0'
184
+ required_rubygems_version: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ requirements: []
190
+ rubyforge_project:
191
+ rubygems_version: 2.2.2
192
+ signing_key:
193
+ specification_version: 4
194
+ summary: 3D operation library
195
+ test_files: []