概要
SketchUpでROKファイルを読み込んで見た。
写真
環境
SketchUp
v7.1.6860
v8.0.16846
サンプルコード
rok_ld.rb
require 'sketchup.rb'
def rok_ld
entities = Sketchup.active_model.entities
vnam = 0
lnam = 0
state = 0
fmod = 0
verts = 0
x, y, z, s, e = 0
c = 0
v = []
l = []
f = UI.openpanel "Select .rok file", "", "*.rok"
return unless f
lines = IO.readlines(f, "\r")
lines.each do | line |
line.strip!
case line
when "POINT"
state = 1
when "LINE0"
state = 2
lnam = 0
when "FACE0"
state = 3
when "END00"
UI.messagebox "ok"
else
if state > 0
c += 1
end
if state == 1
if c == 1
vnam = Integer(line)
end
if c == 6
x = Float(line)
end
if c == 7
y = Float(line)
end
if c == 8
z = Float(line)
end
if c == 8
v[vnam] = [x * 10, z * 10, -y * 10]
c = 0
end
end
if state == 2
if c == 1
s = Integer(line)
end
if c == 2
e = Integer(line)
end
if c == 3
lnam += 1
end
if c == 4
l[lnam] = [s, e]
c = 0
end
end
if state == 3
if c == 1
fmod = Integer(line)
end
if c == 2
f = []
end
if c == 4
f[0] = Integer(line)
end
if c == 5
f[1] = Integer(line)
end
if c == 6
f[2] = Integer(line)
if fmod == 3
verts = [v[l[f[0]][0]], v[l[f[0]][1]], v[l[f[1]][0]], v[l[f[1]][1]], v[l[f[2]][0]], v[l[f[2]][1]]]
verts.uniq!
begin
entities.add_face verts
rescue
UI.messagebox fmod
end
c = 0
end
end
if c == 7
f[3] = Integer(line)
if fmod == 4
verts = [v[l[f[0]][0]], v[l[f[0]][1]], v[l[f[1]][0]], v[l[f[1]][1]], v[l[f[2]][0]], v[l[f[2]][1]] , v[l[f[3]][0]], v[l[f[3]][1]]]
verts.uniq!
begin
entities.add_face verts
rescue
entities.add_face [verts[0], verts[1], verts[2]]
entities.add_face [verts[2], verts[3], verts[0]]
end
c = 0
end
end
end
end
end
end
if (not file_loaded?("rok_ld.rb"))
UI.menu("Plugin").add_item("rok_loader") {rok_ld}
end
file_loaded("rok_ld.rb")
