Skip to content
Daisuke YAMAGUCHI edited this page Oct 27, 2015 · 46 revisions

要約

Shape クラスは siren 上で 3D 形状を表すためのクラスです。すべての 3D 形状は Shape 型で表現されます。 Shape クラスはそれ自体でインスタンスを作成することはできません。 Shape オブジェクトを作成するには Build モジュールや Prim モジュールにパラメーターを設定して新たに形状を生成する方法と、既存の形状を用いて演算した結果として得られる形状であるかの二つの方法があります。

インスタンスメソッド

  • bndbox -> BndBox

    • この形状を内包する BndBox オブジェクトを返します。
  • equal?(shape) -> bool

    • Open CASCADE の TopoDS_Shape のインスタンスが shape のものと同一であれば真を返します。
  • explore(ShapeType, filter){ |shape, depth| ... } -> self

    • 内包する構成要素を ShapeType で指定したタイプに基づき取得します。depth は取得した shape が属する階層を表します。また、filter に ShapeType を指定すると、そのタイプに内包される要素を取得しません。filter および depth は省略可能です。
    • 例:
    box = Prim::box [5, 2, 2]
    box.explore(ShapeType::FACE) do |face|
      p face
    end
  • hashcode(upper) -> Integer

    • ハッシュコードを返します。戻り値は upper で指定された正の整数値以下の値になります。より具体的に述べると、OpenCASCADE の TopoDS_Shape::HashCode() の結果を返します。
  • trans -> Trans, trans = Trans

    • この形状の Trans オブジェクトを取得、設定します。
  • null? -> bool

    • 空の形状であれば真を返します。より具体的に述べると、OpenCASCADE の TopoDS_Shape::IsNull() の結果を返します。
  • mirror(op, norm) -> Shape

    • 鏡面移動した形状を返します。非破壊的なメソッドです。op は鏡面の原点位置、norm は鏡面の法線ベクトルを示します。
  • mirror!(op, norm) -> self

    • 鏡面移動します。破壊的なメソッドです。op は鏡面の原点位置、norm は鏡面の法線ベクトルを示します。
  • move(Trans) -> Shape

    • Trans オブジェクトにより変形した形状を返します。非破壊的なメソッドです。内部では行列演算が行われます。変形は、平行移動、回転移動、鏡面移動、拡大縮小の要素が含まれます。
  • move!(Trans) -> self

    • Trans オブジェクトにより変形します。破壊的なメソッドです。内部では行列演算が行われます。変形は、平行移動、回転移動、鏡面移動、拡大縮小の要素が含まれます。
  • to_s -> String

    • 文字列化した文字列を返します。非破壊的なメソッドです。String 型へのシリアライズではありません。
  • translate(Vec) -> Shape

    • 平行移動した形状を返します。非破壊的なメソッドです。Vec には移動の方向と大きさを指定します。
  • translate!(Vec) -> self

    • 平行移動します。破壊的なメソッドです。Vec には移動の方向と大きさを指定します。
  • rotate(op, norm, angle) -> Shape

    • 回転移動した形状を返します。非破壊的なメソッドです。op には回転面の原点、norm には回転面の法線ベクトル、angle には回転角度(ラジアン値)を指定します。
  • rotate!(op, norm, angle) -> self

    • 回転移動します。破壊的なメソッドです。op には回転面の原点、norm には回転面の法線ベクトル、angle には回転角度(ラジアン値)を指定します。
  • partner?(shape) -> bool

  • same?(shape) -> bool

  • scale(op, factor) -> Shape

    • 拡大縮小した形状を返します。非破壊的なメソッドです。op には拡大縮小の原点、factor には倍率を指定します。
  • scale!(op, factor) -> self

    • 拡大縮小します。破壊的なメソッドです。op には拡大縮小の原点、factor には倍率を指定します。
  • shapetype -> Integer

    • タイプを返します。(to be ShapeType)
  • section(shape1, shape2) -> Shape

    • shape1 と shape2 の交点または交線を返します。
  • volume -> float

    • 形状の容積を返します。
  • cog -> XYZ

    • 形状の重心位置(Center Of Gravity)を返します。
  • area -> float

    • 形状の表面積を返します。
  • common(other) -> Shape | nil

    • other との AND 演算を行い、結果を返します。
  • fuse(other) -> Shape | nil

    • other との OR 演算を行い、結果を返します。
  • cut(other) -> Shape | nil

    • この形状に対し other で NOT 演算を行い、結果を返します。
  • projwire(wire, dir) -> Shape

    • この形状に対し Shape 型の wire を Vec 型の dir 方向に射影したものを返します。

Clone this wiki locally