Skip to content
Daisuke YAMAGUCHI edited this page Sep 1, 2016 · 46 revisions

要約

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

特異メソッド

Shape オブジェクトに定義される特異メソッドは、shapetype のタイプに依存します。詳しくは次のページを参照してください。

インスタンスメソッド

  • bndbox -> BndBox

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

    • Open CASCADE の TopoDS_Shape のインスタンスが shape のものと同一であれば真を返します。
# 箱ソリッドを作成
box = Prim.box [10, 10, 10]

# 箱ソリッドをコンパウンドで包む
comp = Build.compound [box]

# コンパウンドから要素取り出し
elem = comp.explore(ShapeType::SOLID).first

# Shape オブジェクトとしては別物であるが
elem == box
 => false

# 実態は同じものを指していることが分かる
elem.equal? box
 => true
  • 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(other) -> Shape

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

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

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

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

    • common は other との AND 演算を行った結果(重なる部分)を返します。非破壊的です。
    • fuse は other との OR 演算を行った結果(合わせた部分)を返します。非破壊的です。
    • cut は、この形状に対し other で NOT 演算を行った結果(引いて残った部分)を返します。非破壊的です。
  • projwire(wire, dir) -> Shape

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

    • この形状が VERTEX 型の場合、真を返します。
  • edge? -> Bool

    • この形状が EDGE 型の場合、真を返します。
  • wire? -> Bool

    • この形状が WIRE 型の場合、真を返します。
  • face? -> Bool

    • この形状が FACE 型の場合、真を返します。
  • shell? -> Bool

    • この形状が SHELL 型の場合、真を返します。
  • solid? -> Bool

    • この形状が SOLID 型の場合、真を返します。
  • compsolid? -> Bool

    • この形状が COMPSOLID 型の場合、真を返します。
  • compound? -> Bool

    • この形状が COMPOUND 型の場合、真を返します。
  • subshapes -> Array

    • この形状が内包する子要素を配列で返します。
  • vertices(filter = nil) -> Array

    • この形状に含まれる VERTEX を返します。explore(ShapeType::VERTEX, filter) のエイリアスです。
  • edges(filter = nil) -> Array

    • この形状に含まれる EDGE を返します。explore(ShapeType::EDGE, filter) のエイリアスです。
  • wires(filter = nil) -> Array

    • この形状に含まれる WIRE を返します。explore(ShapeType::WIRE, filter) のエイリアスです。
  • faces(filter = nil) -> Array

    • この形状に含まれる FACE を返します。explore(ShapeType::FACE, filter) のエイリアスです。
  • shells(filter = nil) -> Array

    • この形状に含まれる SHELL を返します。explore(ShapeType::SHELL, filter) のエイリアスです。
  • solids(filter = nil) -> Array

    • この形状に含まれる SOLID を返します。explore(ShapeType::SOLID, filter) のエイリアスです。
  • compsolids(filter = nil) -> Array

    • この形状に含まれる COMPSOLID を返します。explore(ShapeType::COMPSOLID, filter) のエイリアスです。
  • compounds(filter = nil) -> Array

    • この形状に含まれる COMPOUND を返します。explore(ShapeType::COMPOUND, filter) のエイリアスです。
  • outerwire(tolerance=1.0e-1) -> Shape

    • シェイプの外周線を取得し、Shape 型のワイヤーまたはコンパウンドとして返します。 外周線として使われていないエッジは、このメソッドにより取り除かれます。
    • シェイプが ShapeType::FACE だった場合、第2引数のトレランスは用いられません。 ShapeType::SHELL や SOLID, COMPOUND のような複合サーフェスだった場合にのみ、トレランスの値が作用します。
  • fix() -> Shape

    • シェイプの形状を修復して返します。

Clone this wiki locally