LoginSignup
0
0

More than 3 years have passed since last update.

sketchupでruby その11

Last updated at Posted at 2021-04-24

概要

sketchupでrubyやってみた。
練習問題やってみた。

練習問題

SGIのロゴを作れ。

写真

sgi.png

サンプルコード

class Sgi
  def initialize
    @model = Sketchup.active_model
    @entities = @model.active_entities
    @x = 0
    @y = 0
    @z = 0
    @v = "-z"
  end
  def enjin(move, vec)
    x1, y1, z1 = 0, 0, 0
    p1 = Geom::Point3d.new(@x, @y, @z)
    case @v + String(vec)
    when "x0"
      y1 = move
      @v = "y"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, Y_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, Y_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, X_AXIS, Z_AXIS, 0.4, 0, -Math::PI / 2, 24
    when "x1"
      z1 = move
      @v = "z"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, Z_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, Z_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, X_AXIS, Y_AXIS, 0.4, Math::PI, -Math::PI / 2, 24
    when "x2"
      y1 = -move
      @v = "-y"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, Y_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, Y_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, X_AXIS, Z_AXIS, 0.4, 0, Math::PI / 2, 24
    when "x3"
      z1 = -move
      @v = "-z"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, Z_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, Z_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, X_AXIS, Y_AXIS, 0.4, 0, -Math::PI / 2, 24
    when "-x0"
      y1 = -move
      @v = "-y"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, Y_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, Y_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, X_AXIS, Z_AXIS, 0.4, Math::PI, Math::PI * 0.5, 24
    when "-x1"
      z1 = -move
      @v = "-z"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, Z_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, Z_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, X_AXIS, Y_AXIS, 0.4, Math::PI / 2, -Math::PI, 24
    when "-x2"
      y1 = move
      @v = "y"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, Y_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, Y_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, X_AXIS, Z_AXIS, 0.4, 0, -Math::PI / 2, 24
    when "-x3"
      z1 = move
      @v = "z"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, Z_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, Z_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, X_AXIS, Y_AXIS, 0.4, 0, -Math::PI / 2, 24
    when "y1"
      z1 = move
      @v = "z"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, Z_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, Z_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, Y_AXIS, X_AXIS, 0.4, 0, -Math::PI / 2, 24
    when "y2"
      x1 = move
      @v = "x"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, X_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, X_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, Y_AXIS, Z_AXIS, 0.4, 0, -Math::PI / 2, 24
    when "y3"
      z1 = -move
      @v = "-z"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, Z_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, Z_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, Y_AXIS, X_AXIS, 0.4, 0, -Math::PI / 2, 24
    when "y0"
      x1 = -move
      @v = "-x"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, X_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, X_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, Y_AXIS, Z_AXIS, 0.4, 0, -Math::PI / 2, 24
    when "-y1"
      z1 = -move
      @v = "-z"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, Z_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, Z_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, Y_AXIS, X_AXIS, 0.4, Math::PI, Math::PI * 0.5, 24
    when "-y2"
      x1 = -move
      @v = "-x"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, X_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, X_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, Y_AXIS, Z_AXIS, 0.4, 0, -Math::PI / 2, 24
    when "-y3"
      z1 = move
      @v = "z"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, Z_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, Z_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, Y_AXIS, X_AXIS, 0.4, 0, -Math::PI / 2, 24
    when "-y0"
      x1 = move
      @v = "x"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, X_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, X_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, Y_AXIS, Z_AXIS, 0.4, Math::PI / 2, Math::PI, 24
    when "z1"
      x1 = move
      @v = "x"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, X_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, X_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, Z_AXIS, Y_AXIS, 0.4, 0, -Math::PI / 2, 24
    when "z2"
      y1 = move
      @v = "y"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, Y_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, Y_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, Z_AXIS, X_AXIS, 0.4, 0, -Math::PI / 2, 24
    when "z3"
      x1 = -move
      @v = "-x"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, X_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, X_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, Z_AXIS, Y_AXIS, 0.4, 0, Math::PI / 2, 24
    when "z0"
      y1 = -move
      @v = "-y"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, Y_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, Y_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, Z_AXIS, X_AXIS, 0.4, 0, -Math::PI / 2, 24
    when "-z1"
      x1 = -move
      @v = "-x"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, X_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, X_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, Z_AXIS, Y_AXIS, 0.4, 0, -Math::PI / 2, 24
    when "-z2"
      y1 = -move
      @v = "-y"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, Y_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, Y_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, Z_AXIS, X_AXIS, 0.4, 0, -Math::PI / 2, 24
    when "-z3"
      x1 = move
      @v = "x"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, X_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, X_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, Z_AXIS, Y_AXIS, 0.4, Math::PI, Math::PI * 1.5, 24
    when "-z0"
      y1 = move
      @v = "y"
      p2 = Geom::Point3d.new(@x + x1, @y + y1, @z + z1)
      circleBase1 = @entities.add_circle(p1, Y_AXIS, 0.4, 24)
      circleBase2 = @entities.add_circle(p2, Y_AXIS, 0.4, 24)
      curve = @entities.add_arc p1, Z_AXIS, X_AXIS, 0.4, Math::PI / 2, Math::PI, 24
    end
    base = @entities.add_face(circleBase1)
    base1 = @entities.add_face(circleBase2)
    status = base.followme(curve)
    line1 = @entities.add_line(p1, p2)
    status = base1.followme(line1)
    @x, @y, @z = @x + x1, @y + y1, @z + z1
  end
  def draw
    enjin(9, 0)
    enjin(8, 1)
    enjin(8, 0)
    enjin(9, 0)
    enjin(9, 0)
    enjin(8, 0)
    enjin(8, 1)
    enjin(9, 3)
    enjin(7, 1)
    enjin(9, 0)
    enjin(8, 1)
    enjin(8, 0)
    enjin(9, 0)
    enjin(9, 0)
    enjin(8, 0)
    enjin(8, 1)
    enjin(9, 3)
    enjin(7, 1)
  end
end

以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0