fml 0.2.3 → 0.2.4
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.
- data/.gitignore +1 -0
- data/TODO +2 -0
- data/bin/fml2dae.rb +14 -9
- data/fml.gemspec +10 -7
- data/lib/collada/document.rb +21 -23
- data/lib/collada/geometry.rb +22 -23
- data/lib/config.yml +4 -4
- data/lib/floorplanner/area_builder.rb +3 -8
- data/lib/floorplanner/asset.rb +32 -27
- data/lib/floorplanner/collada_export.rb +76 -71
- data/lib/floorplanner/design.rb +42 -76
- data/lib/floorplanner/document.rb +16 -43
- data/lib/floorplanner/opening3d.rb +5 -4
- data/lib/floorplanner/wall_builder.rb +6 -5
- data/lib/floorplanner/xml.rb +151 -0
- data/lib/floorplanner.rb +11 -9
- data/lib/geom/edge.rb +1 -1
- data/lib/geom/matrix3d.rb +7 -2
- data/lib/geom/number.rb +8 -0
- data/lib/geom/polygon.rb +18 -22
- data/lib/geom/vertex.rb +8 -0
- data/tasks/github-gem.rake +47 -4
- data/views/design.dae.erb +37 -92
- metadata +53 -40
- data/bin/fml2obj.rb +0 -10
- data/lib/floorplanner/obj_export.rb +0 -24
- data/lib/floorplanner/rib_export.rb +0 -24
- data/views/design.obj.erb +0 -17
- data/views/design.rib.erb +0 -17
data/tasks/github-gem.rake
CHANGED
@@ -127,8 +127,22 @@ module GithubGem
|
|
127
127
|
release_tasks = [:release_checks, :set_version, :build, :github_release, :gemcutter_release]
|
128
128
|
# release_tasks << [:rubyforge_release] if gemspec.rubyforge_project
|
129
129
|
|
130
|
-
desc "Release a new
|
130
|
+
desc "Release a new version of the gem using the VERSION environment variable"
|
131
131
|
task(:release => release_tasks) { release_task }
|
132
|
+
|
133
|
+
namespace(:release) do
|
134
|
+
desc "Release the next version of the gem, by incrementing the last version segment by 1"
|
135
|
+
task(:next => [:next_version] + release_tasks) { release_task }
|
136
|
+
|
137
|
+
desc "Release the next version of the gem, using a patch increment (0.0.1)"
|
138
|
+
task(:patch => [:next_patch_version] + release_tasks) { release_task }
|
139
|
+
|
140
|
+
desc "Release the next version of the gem, using a minor increment (0.1.0)"
|
141
|
+
task(:minor => [:next_minor_version] + release_tasks) { release_task }
|
142
|
+
|
143
|
+
desc "Release the next version of the gem, using a major increment (1.0.0)"
|
144
|
+
task(:major => [:next_major_version] + release_tasks) { release_task }
|
145
|
+
end
|
132
146
|
|
133
147
|
# task(:check_rubyforge) { check_rubyforge_task }
|
134
148
|
# task(:rubyforge_release) { rubyforge_release_task }
|
@@ -137,6 +151,11 @@ module GithubGem
|
|
137
151
|
task(:tag_version) { tag_version_task }
|
138
152
|
task(:commit_modified_files) { commit_modified_files_task }
|
139
153
|
|
154
|
+
task(:next_version) { next_version_task }
|
155
|
+
task(:next_patch_version) { next_version_task(:patch) }
|
156
|
+
task(:next_minor_version) { next_version_task(:minor) }
|
157
|
+
task(:next_major_version) { next_version_task(:major) }
|
158
|
+
|
140
159
|
desc "Updates the gem release tasks with the latest version on Github"
|
141
160
|
task(:update_tasks) { update_tasks_task }
|
142
161
|
end
|
@@ -160,6 +179,32 @@ module GithubGem
|
|
160
179
|
sh "mv #{gemspec.name}-#{gemspec.version}.gem pkg/#{gemspec.name}-#{gemspec.version}.gem"
|
161
180
|
end
|
162
181
|
|
182
|
+
def newest_version
|
183
|
+
git.tags.map { |tag| tag.name.split('-').last }.compact.map { |v| Gem::Version.new(v) }.max || Gem::Version.new('0.0.0')
|
184
|
+
end
|
185
|
+
|
186
|
+
def next_version(increment = nil)
|
187
|
+
next_version = newest_version.segments
|
188
|
+
increment_index = case increment
|
189
|
+
when :micro then 3
|
190
|
+
when :patch then 2
|
191
|
+
when :minor then 1
|
192
|
+
when :major then 0
|
193
|
+
else next_version.length - 1
|
194
|
+
end
|
195
|
+
|
196
|
+
next_version[increment_index] ||= 0
|
197
|
+
next_version[increment_index] = next_version[increment_index].succ
|
198
|
+
((increment_index + 1)...next_version.length).each { |i| next_version[i] = 0 }
|
199
|
+
|
200
|
+
Gem::Version.new(next_version.join('.'))
|
201
|
+
end
|
202
|
+
|
203
|
+
def next_version_task(increment = nil)
|
204
|
+
ENV['VERSION'] = next_version(increment).version
|
205
|
+
puts "Releasing version #{ENV['VERSION']}..."
|
206
|
+
end
|
207
|
+
|
163
208
|
# Updates the version number in the gemspec file, the VERSION constant in the main
|
164
209
|
# include file and the contents of the VERSION file.
|
165
210
|
def version_task
|
@@ -173,9 +218,7 @@ module GithubGem
|
|
173
218
|
def check_version_task
|
174
219
|
raise "#{ENV['VERSION']} is not a valid version number!" if ENV['VERSION'] && !Gem::Version.correct?(ENV['VERSION'])
|
175
220
|
proposed_version = Gem::Version.new(ENV['VERSION'] || gemspec.version)
|
176
|
-
#
|
177
|
-
newest_version = git.tags.map { |tag| tag.name.split('-').last }.compact.map { |v| Gem::Version.new(v) }.max
|
178
|
-
raise "This version (#{proposed_version}) is not higher than the highest tagged version (#{newest_version})" if newest_version && newest_version >= proposed_version
|
221
|
+
raise "This version (#{proposed_version}) is not higher than the highest tagged version (#{newest_version})" if newest_version >= proposed_version
|
179
222
|
end
|
180
223
|
|
181
224
|
# Checks whether the current branch is not diverged from the remote branch
|
data/views/design.dae.erb
CHANGED
@@ -10,20 +10,6 @@
|
|
10
10
|
<up_axis>Z_UP</up_axis>
|
11
11
|
</asset>
|
12
12
|
|
13
|
-
<library_cameras>
|
14
|
-
<camera id="main-cam">
|
15
|
-
<optics>
|
16
|
-
<technique_common>
|
17
|
-
<perspective>
|
18
|
-
<yfov>70</yfov>
|
19
|
-
<znear>0.1</znear>
|
20
|
-
<zfar>100.0</zfar>
|
21
|
-
</perspective>
|
22
|
-
</technique_common>
|
23
|
-
</optics>
|
24
|
-
</camera>
|
25
|
-
</library_cameras>
|
26
|
-
|
27
13
|
<library_materials id="surrounding-materials">
|
28
14
|
<material id="walls-material" name="WallsMaterial">
|
29
15
|
<instance_effect url="#walls-fx"/>
|
@@ -36,7 +22,7 @@
|
|
36
22
|
<instance_effect url="#area_<%= area_mesh.data[:id] %>-fx"/>
|
37
23
|
</material>
|
38
24
|
<% end %>
|
39
|
-
<% unless @xrefs; @assets.each_value do |asset| %>
|
25
|
+
<% unless @conf[:xrefs]; @assets.each_value do |asset| %>
|
40
26
|
<% asset.library_materials.each do |materials| %>
|
41
27
|
<%= materials.to_s %>
|
42
28
|
<% end %>
|
@@ -79,6 +65,7 @@
|
|
79
65
|
</technique>
|
80
66
|
</profile_COMMON>
|
81
67
|
</effect>
|
68
|
+
<% if @conf[:window_glass] %>
|
82
69
|
<effect id="windows-fx">
|
83
70
|
<profile_COMMON>
|
84
71
|
<technique>
|
@@ -114,6 +101,7 @@
|
|
114
101
|
</technique>
|
115
102
|
</profile_COMMON>
|
116
103
|
</effect>
|
104
|
+
<% end %>
|
117
105
|
<% @areas.each do |area_mesh|; id = area_mesh.data[:id].to_s %>
|
118
106
|
<effect id="area_<%= id %>-fx" name="<%= area_mesh.data[:name] %>">
|
119
107
|
<% if area_mesh.data[:texture] %>
|
@@ -124,18 +112,18 @@
|
|
124
112
|
</extra>
|
125
113
|
<% end %>
|
126
114
|
<profile_COMMON>
|
127
|
-
|
115
|
+
<% if area_mesh.data[:texture] %>
|
128
116
|
<newparam sid="area_<%= id %>-surface">
|
129
|
-
|
130
|
-
|
131
|
-
|
117
|
+
<surface type="2D">
|
118
|
+
<init_from>area_<%= id %>-image</init_from>
|
119
|
+
</surface>
|
132
120
|
</newparam>
|
133
121
|
<newparam sid="area_<%= id %>-sampler">
|
134
|
-
|
135
|
-
|
136
|
-
|
122
|
+
<sampler2D>
|
123
|
+
<source>area_<%= id %>-surface</source>
|
124
|
+
</sampler2D>
|
137
125
|
</newparam>
|
138
|
-
|
126
|
+
<% end %>
|
139
127
|
<technique>
|
140
128
|
<phong>
|
141
129
|
<emission>
|
@@ -145,11 +133,11 @@
|
|
145
133
|
<color>0.1 0.1 0.1 1</color>
|
146
134
|
</ambient>
|
147
135
|
<diffuse>
|
148
|
-
|
149
|
-
<texture texture="area_<%= id %>-sampler"/>
|
150
|
-
|
136
|
+
<% if area_mesh.data[:texture] %>
|
137
|
+
<texture texture="area_<%= id %>-sampler" texcoord="TEXCOORD" />
|
138
|
+
<% else %>
|
151
139
|
<color><%= area_mesh.data[:color].join(' ') %> 1</color>
|
152
|
-
|
140
|
+
<% end %>
|
153
141
|
</diffuse>
|
154
142
|
<specular>
|
155
143
|
<color>0 0 0 1</color>
|
@@ -174,7 +162,7 @@
|
|
174
162
|
</profile_COMMON>
|
175
163
|
</effect>
|
176
164
|
<% end %>
|
177
|
-
<% unless @xrefs; @assets.each_value do |asset| %>
|
165
|
+
<% unless @conf[:xrefs]; @assets.each_value do |asset| %>
|
178
166
|
<% asset.library_effects.each do |effects| %>
|
179
167
|
<%= effects.to_s %>
|
180
168
|
<% end %>
|
@@ -182,18 +170,16 @@
|
|
182
170
|
</library_effects>
|
183
171
|
|
184
172
|
<library_images>
|
185
|
-
<% @
|
186
|
-
<image id="area_<%= area_mesh.data[:id] %>-image" name="<%= area_mesh.data[:name] %>">
|
187
|
-
<init_from><%= Floorplanner.config['area_textures_path'] +
|
188
|
-
area_mesh.data[:texture].gsub('textures/2d/','').gsub(/\.swf$/,'.png') %></init_from>
|
189
|
-
</image>
|
190
|
-
<% end; end %>
|
191
|
-
|
192
|
-
<% unless @xrefs; @assets.each_value do |asset| %>
|
173
|
+
<% unless @conf[:xrefs]; @assets.each_value do |asset| %>
|
193
174
|
<% asset.library_images.each do |image| %>
|
194
175
|
<%= image.to_s %>
|
195
176
|
<% end %>
|
196
177
|
<% end; end %>
|
178
|
+
<% @areas.each do |area|; next unless area.data[:texture] %>
|
179
|
+
<image id="area_<%= area.data[:id].to_s %>-image">
|
180
|
+
<init_from><%= area.data[:texture] %></init_from>
|
181
|
+
</image>
|
182
|
+
<% end %>
|
197
183
|
</library_images>
|
198
184
|
|
199
185
|
<library_geometries id="surrounding-geometry">
|
@@ -227,6 +213,7 @@
|
|
227
213
|
</mesh>
|
228
214
|
</geometry>
|
229
215
|
|
216
|
+
<% if @conf[:window_glass] %>
|
230
217
|
<geometry id="windows-geom" name="WindowsGeometry">
|
231
218
|
<%
|
232
219
|
windows_vertices = @walls.windows.collect {|w| w.vertices}.flatten
|
@@ -263,6 +250,8 @@
|
|
263
250
|
</triangles>
|
264
251
|
</mesh>
|
265
252
|
</geometry>
|
253
|
+
<% end %>
|
254
|
+
|
266
255
|
<% @areas.each do |area_mesh|; id = area_mesh.data[:id] %>
|
267
256
|
<geometry id="area_<%= id %>-geom" name="Area_<%= id %>_<%= area_mesh.data[:name] %>-Geometry">
|
268
257
|
<mesh>
|
@@ -282,11 +271,11 @@
|
|
282
271
|
</source>
|
283
272
|
|
284
273
|
<source id="area_<%= id %>-uvs" name="texcoord">
|
285
|
-
<float_array id="area_<%= id %>-uvs-array" count="<%= area_mesh.texcoord.length %>">
|
274
|
+
<float_array id="area_<%= id %>-uvs-array" count="<%= area_mesh.texcoord.length*2 %>">
|
286
275
|
<%= area_mesh.texcoord.map{|n| [n.u,n.v]}.flatten.join(' ') %>
|
287
276
|
</float_array>
|
288
277
|
<technique_common>
|
289
|
-
<accessor count="
|
278
|
+
<accessor count="<%= area_mesh.texcoord.length %>" source="#area_<%= id %>-uvs-array" stride="2">
|
290
279
|
<param name="S" type="float"/>
|
291
280
|
<param name="T" type="float"/>
|
292
281
|
</accessor>
|
@@ -313,13 +302,13 @@
|
|
313
302
|
</mesh>
|
314
303
|
</geometry>
|
315
304
|
<% end %>
|
316
|
-
<% unless @xrefs; @assets.each_value do |asset| %>
|
305
|
+
<% unless @conf[:xrefs]; @assets.each_value do |asset| %>
|
317
306
|
<% asset.library_geometries.each do |geometries| %>
|
318
307
|
<%= geometries.to_s %>
|
319
308
|
<% end %>
|
320
309
|
<% end; end %>
|
321
310
|
</library_geometries>
|
322
|
-
<% unless @xrefs %>
|
311
|
+
<% unless @conf[:xrefs] %>
|
323
312
|
<library_nodes>
|
324
313
|
<% @assets.each_value do |asset| %>
|
325
314
|
<% asset.library_nodes.each do |nodes| %>
|
@@ -329,42 +318,7 @@
|
|
329
318
|
</library_nodes>
|
330
319
|
<% end %>
|
331
320
|
<library_visual_scenes>
|
332
|
-
<visual_scene id="VisualSceneNode" name="<%= @name %>">
|
333
|
-
<extra>
|
334
|
-
<technique sid="sunflow">
|
335
|
-
<image>
|
336
|
-
<resolution>800 600</resolution>
|
337
|
-
<aa>0 2</aa>
|
338
|
-
<filter>gaussian</filter>
|
339
|
-
<sampler>ipr</sampler>
|
340
|
-
</image>
|
341
|
-
<trace_depths>
|
342
|
-
<diffuse>4</diffuse>
|
343
|
-
<reflection>2</reflection>
|
344
|
-
</trace_depths>
|
345
|
-
<gi>
|
346
|
-
<type>ambocc</type>
|
347
|
-
<bright>1 1 1</bright>
|
348
|
-
<dark>0 0 0</dark>
|
349
|
-
<samples>64</samples>
|
350
|
-
<maxdist>3.0 </maxdist>
|
351
|
-
</gi>
|
352
|
-
<sunsky>
|
353
|
-
<up>0 0 1</up>
|
354
|
-
<east>1 0 0</east>
|
355
|
-
<sundir>0.2 0.4 0.7</sundir>
|
356
|
-
<ground>1 1 1</ground>
|
357
|
-
</sunsky>
|
358
|
-
</technique>
|
359
|
-
</extra>
|
360
|
-
<node id="Camera" name="Camera">
|
361
|
-
<lookat>
|
362
|
-
9.0 -1.0 1.4
|
363
|
-
8.0 -2.0 1.4
|
364
|
-
0.0 0.0 1.0
|
365
|
-
</lookat>
|
366
|
-
<instance_camera url="#main-cam"/>
|
367
|
-
</node>
|
321
|
+
<visual_scene id="VisualSceneNode" name="<%= @doc.name %>">
|
368
322
|
<node id="Walls" name="Walls">
|
369
323
|
<instance_geometry url="#walls-geom">
|
370
324
|
<bind_material>
|
@@ -374,6 +328,8 @@
|
|
374
328
|
</bind_material>
|
375
329
|
</instance_geometry>
|
376
330
|
</node>
|
331
|
+
|
332
|
+
<% if @conf[:window_glass] %>
|
377
333
|
<node id="Windows" name="Windows">
|
378
334
|
<instance_geometry url="#windows-geom">
|
379
335
|
<bind_material>
|
@@ -383,6 +339,8 @@
|
|
383
339
|
</bind_material>
|
384
340
|
</instance_geometry>
|
385
341
|
</node>
|
342
|
+
<% end %>
|
343
|
+
|
386
344
|
<node id="Areas" name="Areas">
|
387
345
|
<% @areas.each do |area_mesh|; id = area_mesh.data[:id] %>
|
388
346
|
<node id="Area_<%= id %>" name="Area_<%= id %>">
|
@@ -394,7 +352,7 @@
|
|
394
352
|
</bind_material>
|
395
353
|
</instance_geometry>
|
396
354
|
</node>
|
397
|
-
<% if area_mesh.data[:type] ==
|
355
|
+
<% if @conf[:ceiling] && area_mesh.data[:type] == :generated_area %>
|
398
356
|
<node id="Area_<%= id %>-cap" name="Area_<%= id %>-cap">
|
399
357
|
<translate>0.0 0.0 <%= @areas.ceiling_z %></translate>
|
400
358
|
<instance_geometry url="#area_<%= id %>-geom">
|
@@ -410,21 +368,8 @@
|
|
410
368
|
</node>
|
411
369
|
<% @elements.each do |element| %>
|
412
370
|
<node name="<%= element[:asset].title %>">
|
413
|
-
<
|
414
|
-
<% if
|
415
|
-
<matrix><%= element[:matrix].to_a.join ' ' %></matrix>
|
416
|
-
<% end %>
|
417
|
-
<% if element[:rotation].x > 0 %>
|
418
|
-
<rotate sid="rotateX">1 0 0 <%= element[:rotation].x %></rotate>
|
419
|
-
<% end %>
|
420
|
-
<% if element[:rotation].y > 0 %>
|
421
|
-
<rotate sid="rotateY">0 1 0 <%= element[:rotation].y %></rotate>
|
422
|
-
<% end %>
|
423
|
-
<% if element[:rotation].z > 0 %>
|
424
|
-
<rotate sid="rotateZ">0 0 1 <%= element[:rotation].z %></rotate>
|
425
|
-
<% end %>
|
426
|
-
<scale><%= element[:scale].to_floats %></scale>
|
427
|
-
<% if @xrefs %>
|
371
|
+
<matrix><%= element[:matrix].to_a.join ' ' %></matrix>
|
372
|
+
<% if @conf[:xrefs] %>
|
428
373
|
<instance_node url="<%= element[:asset].dae_path %>"/>
|
429
374
|
<% else %>
|
430
375
|
<%= element[:asset].visual_scene_node.to_s %>
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 4
|
9
|
+
version: 0.2.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Dusan Maliarik
|
@@ -14,13 +14,14 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-11-25 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
|
-
name:
|
21
|
+
name: nokogiri
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
24
25
|
requirements:
|
25
26
|
- - ">="
|
26
27
|
- !ruby/object:Gem::Version
|
@@ -33,6 +34,7 @@ dependencies:
|
|
33
34
|
name: rubyzip
|
34
35
|
prerelease: false
|
35
36
|
requirement: &id002 !ruby/object:Gem::Requirement
|
37
|
+
none: false
|
36
38
|
requirements:
|
37
39
|
- - ">="
|
38
40
|
- !ruby/object:Gem::Version
|
@@ -41,59 +43,68 @@ dependencies:
|
|
41
43
|
version: "0"
|
42
44
|
type: :runtime
|
43
45
|
version_requirements: *id002
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: roxml
|
48
|
+
prerelease: false
|
49
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
segments:
|
55
|
+
- 0
|
56
|
+
version: "0"
|
57
|
+
type: :runtime
|
58
|
+
version_requirements: *id003
|
44
59
|
description: Floor plan document toolkit
|
45
60
|
email: dusan.maliarik@gmail.com
|
46
61
|
executables:
|
47
62
|
- fml2dae.rb
|
48
|
-
- fml2obj.rb
|
49
63
|
extensions: []
|
50
64
|
|
51
65
|
extra_rdoc_files: []
|
52
66
|
|
53
67
|
files:
|
54
|
-
-
|
55
|
-
-
|
68
|
+
- .gitignore
|
69
|
+
- README
|
70
|
+
- Rakefile
|
71
|
+
- TODO
|
56
72
|
- bin/fml2dae.rb
|
57
|
-
-
|
58
|
-
-
|
59
|
-
-
|
60
|
-
- lib/
|
73
|
+
- fml.gemspec
|
74
|
+
- lib/collada/document.rb
|
75
|
+
- lib/collada/geometry.rb
|
76
|
+
- lib/config.yml
|
77
|
+
- lib/floorplanner.rb
|
78
|
+
- lib/floorplanner/area_builder.rb
|
79
|
+
- lib/floorplanner/asset.rb
|
61
80
|
- lib/floorplanner/collada_export.rb
|
62
|
-
-
|
63
|
-
- lib/
|
81
|
+
- lib/floorplanner/design.rb
|
82
|
+
- lib/floorplanner/document.rb
|
83
|
+
- lib/floorplanner/opening3d.rb
|
84
|
+
- lib/floorplanner/svg_export.rb
|
85
|
+
- lib/floorplanner/wall3d.rb
|
86
|
+
- lib/floorplanner/wall_builder.rb
|
87
|
+
- lib/floorplanner/xml.rb
|
64
88
|
- lib/geom.rb
|
65
|
-
- lib/floorplanner/area_builder.rb
|
66
|
-
- lib/config.yml
|
67
|
-
- .gitignore
|
68
|
-
- lib/geom/intersection.rb
|
69
|
-
- lib/geom/ear_trim.rb
|
70
89
|
- lib/geom/connection.rb
|
71
|
-
- lib/
|
72
|
-
- fml.gemspec
|
73
|
-
- lib/geom/polygon.rb
|
90
|
+
- lib/geom/ear_trim.rb
|
74
91
|
- lib/geom/edge.rb
|
75
|
-
- lib/
|
76
|
-
-
|
92
|
+
- lib/geom/glu_tess.rb
|
93
|
+
- lib/geom/intersection.rb
|
77
94
|
- lib/geom/matrix3d.rb
|
78
|
-
- lib/
|
79
|
-
- lib/
|
80
|
-
-
|
81
|
-
- README
|
82
|
-
- views/design.obj.erb
|
95
|
+
- lib/geom/number.rb
|
96
|
+
- lib/geom/plane.rb
|
97
|
+
- lib/geom/polygon.rb
|
83
98
|
- lib/geom/triangle.rb
|
84
99
|
- lib/geom/triangle_mesh.rb
|
85
|
-
- lib/floorplanner/wall_builder.rb
|
86
|
-
- lib/floorplanner/svg_export.rb
|
87
|
-
- lib/collada/geometry.rb
|
88
|
-
- views/design.svg.erb
|
89
|
-
- tasks/github-gem.rake
|
90
100
|
- lib/geom/vertex.rb
|
91
|
-
- lib/
|
92
|
-
-
|
93
|
-
-
|
94
|
-
-
|
95
|
-
-
|
96
|
-
-
|
101
|
+
- lib/keyhole/archive.rb
|
102
|
+
- tasks/github-gem.rake
|
103
|
+
- views/design.dae.erb
|
104
|
+
- views/design.svg.erb
|
105
|
+
- xml/collada_schema_1_4.xsd
|
106
|
+
- xml/fml.rng
|
107
|
+
- xml/fml2kml.xsl
|
97
108
|
has_rdoc: true
|
98
109
|
homepage: http://floorplanner.com/
|
99
110
|
licenses: []
|
@@ -104,6 +115,7 @@ rdoc_options: []
|
|
104
115
|
require_paths:
|
105
116
|
- lib
|
106
117
|
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
+
none: false
|
107
119
|
requirements:
|
108
120
|
- - ">="
|
109
121
|
- !ruby/object:Gem::Version
|
@@ -111,6 +123,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
111
123
|
- 0
|
112
124
|
version: "0"
|
113
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
|
+
none: false
|
114
127
|
requirements:
|
115
128
|
- - ">="
|
116
129
|
- !ruby/object:Gem::Version
|
@@ -122,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
122
135
|
requirements: []
|
123
136
|
|
124
137
|
rubyforge_project:
|
125
|
-
rubygems_version: 1.3.
|
138
|
+
rubygems_version: 1.3.7
|
126
139
|
signing_key:
|
127
140
|
specification_version: 2
|
128
141
|
summary: Floorplanner.com FML document toolkit
|
data/bin/fml2obj.rb
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
$: << File.join(File.dirname(__FILE__), "/../lib" )
|
3
|
-
require 'floorplanner'
|
4
|
-
|
5
|
-
if ARGV.length < 2
|
6
|
-
puts "\n Usage: fml2dae.rb design_id path/to/fml"
|
7
|
-
else
|
8
|
-
doc = Floorplanner::Document.new(ARGV[1])
|
9
|
-
doc.to_obj(ARGV[0],ARGV[2])
|
10
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module Floorplanner
|
2
|
-
class Document
|
3
|
-
|
4
|
-
def to_obj(design_id,out_path)
|
5
|
-
@design = Design.new(@xml,design_id)
|
6
|
-
@design.build_geometries
|
7
|
-
obj = File.new(out_path,'w')
|
8
|
-
obj.write @design.to_obj
|
9
|
-
obj.close
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
module ObjExport
|
15
|
-
def to_obj
|
16
|
-
raise "No geometries to export. Call build_geometries first" unless @areas && @walls
|
17
|
-
|
18
|
-
template = ERB.new(
|
19
|
-
File.read(
|
20
|
-
File.join(Floorplanner.config['views_path'],'design.obj.erb')))
|
21
|
-
template.result(binding)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module Floorplanner
|
2
|
-
class Document
|
3
|
-
|
4
|
-
def to_rib(design_id,out_path)
|
5
|
-
@design = Design.new(@xml,design_id)
|
6
|
-
@design.build_geometries
|
7
|
-
rib = File.new(out_path,'w')
|
8
|
-
rib.write @design.to_rib
|
9
|
-
rib.close
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
module RibExport
|
15
|
-
def to_rib
|
16
|
-
raise "No geometries to export. Call build_geometries first" unless @areas && @walls
|
17
|
-
|
18
|
-
template = ERB.new(
|
19
|
-
File.read(
|
20
|
-
File.join(Floorplanner.config['views_path'],'design.rib.erb')))
|
21
|
-
template.result(binding)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
data/views/design.obj.erb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
# Floorplanner.com
|
2
|
-
# <%= @name %>
|
3
|
-
<%
|
4
|
-
vertices = @walls.vertices + @areas.vertices
|
5
|
-
faces = @walls.faces + @areas.faces
|
6
|
-
%>
|
7
|
-
<% vertices.each do |v| %>
|
8
|
-
v <%= [v.x,v.z,v.y].join(' ') %><% end %>
|
9
|
-
<%
|
10
|
-
faces.each do |f|
|
11
|
-
v = [
|
12
|
-
vertices.index(f.vertices[0]),
|
13
|
-
vertices.index(f.vertices[1]),
|
14
|
-
vertices.index(f.vertices[2])
|
15
|
-
]
|
16
|
-
if v.compact.length == 3 %>
|
17
|
-
f <%= v.collect{|w|w+1}.join(' ') %><% end ; end %>
|
data/views/design.rib.erb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
Display "design.tif" "file" "rgb"
|
2
|
-
Format 480 320 -1
|
3
|
-
Projection "perspective" "fov" 45
|
4
|
-
Translate -5 -2 22
|
5
|
-
Rotate 240 1 0 0
|
6
|
-
Rotate -40 0 0 1
|
7
|
-
WorldBegin
|
8
|
-
LightSource "ambientlight" 1 "intensity" 1.0
|
9
|
-
LightSource "distantlight" 2 "from" [0 0 4] "to" [0 0 0] "intensity" 5.0
|
10
|
-
Color [ 0.95 0.95 0.95 ]
|
11
|
-
<% @walls.faces.each do |face| %>
|
12
|
-
Polygon "P" [ <%= face.vertices.collect{|v| [v.x,v.y,v.z]}.flatten.join(' ') %> ]
|
13
|
-
<% end %>
|
14
|
-
<% @areas.faces.each do |face| %>
|
15
|
-
Polygon "P" [ <%= face.vertices.collect{|v| [v.x,v.y,v.z]}.flatten.join(' ') %> ]
|
16
|
-
<% end %>
|
17
|
-
WorldEnd
|