概要
windows11に、sketchup6を入れてみた。
rubyで、3Dを書く。
練習問題、やってみた。
練習問題
rubyスクリプトでアナログ時計を書け。
写真
サンプルコード
require 'sketchup.rb'
class Tokei
def initialize
@id = 0
model = Sketchup.active_model
entities = model.active_entities
group_circle = entities.add_group
circle = group_circle.entities.add_circle [0, 1, 22], [0, 1, 0], 22
circle_face = group_circle.entities.add_face circle
circle_face.pushpull -0.1
depth = 10
width = 1
pts = []
pts[0] = [0, 0, 0]
pts[1] = [width, 0, 0]
pts[2] = [width, 0, depth]
pts[3] = [0, 0, depth]
group_hour = entities.add_group
face_hour = group_hour.entities.add_face pts
face_hour.material = "black"
face_hour.pushpull 0.015
trans = Geom::Transformation.translation [-0.5, 0, 21]
group_hour.transform! trans
rot = Geom::Transformation.new [0, 0, 22], [0, 1, 0], Time.now.hour * 30.degrees
group_hour.transform! rot
depth = 16
width = 1
pts = []
pts[0] = [0, 0, 0]
pts[1] = [width, 0, 0]
pts[2] = [width, 0, depth]
pts[3] = [0, 0, depth]
group_minute = entities.add_group
face_minute = group_minute.entities.add_face pts
face_minute.material = "black"
face_minute.pushpull 0.015
trans = Geom::Transformation.translation [-0.5, 0, 21]
group_minute.transform! trans
rot = Geom::Transformation.new [0, 0, 22], [0, 1, 0], Time.now.min * 6.degrees
group_minute.transform! rot
depth = 20
width = 1
pts = []
pts[0] = [0, 0, 0]
pts[1] = [width, 0, 0]
pts[2] = [width, 0, depth]
pts[3] = [0, 0, depth]
group_second = entities.add_group
face_second = group_second.entities.add_face pts
face_second.material = "red"
face_second.pushpull 0.01
trans = Geom::Transformation.translation [-0.5, 0, 21]
group_second.transform! trans
rot = Geom::Transformation.new [0, 0, 22], [0, 1, 0], Time.now.sec * 6.degrees
group_second.transform! rot
end
end
以上。