- Code: Select all
def self.definition(instance)
if instance.is_a?(Sketchup::ComponentInstance)
# ComponentInstance
return instance.definition
elsif instance.is_a?(Sketchup::Group)
if instance.entities.parent.instances.include?(instance)
return instance.entities.parent
else
Sketchup.active_model.definitions.each { |definition|
return definition if definition.instances.include?(instance)
}
end
elsif instance.is_a?(Sketchup::Image)
Sketchup.active_model.definitions.each { |definition|
return definition if definition.image? && definition.instances.include?(instance)
}
end
return nil # Error. We should never exit here.
end
mod = Sketchup.active_model # Open model
ent = mod.entities # All entities in model
sel = mod.selection # Current selection
puts ent[0]
faces = definition(ent[0]).entities.grep(Sketchup::Face)
puts faces
faces[0].material = "Purple"
faces[0].vertices.each {|v| puts v.position}
puts '---'
f0_v = faces[0].vertices
for i in 0..f0_v.size - 2
puts f0_v[i].position.distance(f0_v[i+1].position)
end
puts f0_v[3].position.distance(f0_v[0].position)
The result is not as I am expected:
- Code: Select all
#<Sketchup::Group:0x0000024da5ea60b0>
#<Sketchup::Face:0x0000024da5ea5f20>
#<Sketchup::Face:0x0000024da5ea5e30>
#<Sketchup::Face:0x0000024da5ea5d18>
#<Sketchup::Face:0x0000024da5ea5cc8>
#<Sketchup::Face:0x0000024da5ea5c78>
#<Sketchup::Face:0x0000024da5ea5c50>
(0 mm, 0 mm, 300 mm)
(0 mm, 0 mm, 0 mm)
(300 mm, 0 mm, 0 mm)
(300 mm, 0 mm, 300 mm)
---
300 mm
300 mm
300 mm
300 mm
Any one can help me?
I am sorry for my bad English.