サーフェースをシュリンクする

Image by kham_me from Pixabay

Rhinoで面を移動すると、画面上では変更されていても元のサーフェースはそのまま残されています。(これはもともとの形状を保存しておく方が、UV構造を扱うのに好都合という事らしいのですが、見た目の形状を基準に処理する際は要注意です)

通常の操作で問題になることはないと思いますが、grasshopper(以下、GH)やAPIで処理するとそのままでは元のサーフェースが取得されます。(UV構造を扱うコンポーネントを利用する場合は注意がいります)

下の図の例では、立方体の高さを変更した後、鉛直面を1つ抽出して加工し用としたのですが、ご覧のように元のサーフェース形状が取得されています。(赤丸の部分の出っ張り)

ShrinkTrimmedSrfでシュリンクする

このままでは結果的に誤った処理になってしまいます。サーフェースを画面上の表現に合せて元のサーフェースを加工します。使用するコマンドはShrinkTrimmedSrfです。

  1. コマンドShrinkTrimmedSrfを入力
  2. CtrlキーとShiftキーを押しながら、面を左クリック

これで元のサーフェース形状が画面上の表示に合わせて更新されます。

スクリプトでシュリンクする

Surface.Shrink()メソッドでShrinkTrimmedSrfと同じ動作をスクリプトで実現できます。

private void RunScript(Brep brep, ref object ShrinkedFace)
{
    if (brep != null)
    {
        // Shrink the trimmed surface.
        brep.Faces.ShrinkFaces();
        ShrinkedFace = brep;
    }
}

この例であれば、List Itemでサーフェースを取り出した後に、このスクリプトでShrinkTrimmedSrfと同じ処理が可能です。

動作環境

以下の環境で動作を確認しています。

  • Windows11 Pro(64bit, 23H2)
  • Rhinoceros 8 SR10

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です