このページではRhino内で使用できるオブジェクト選択のコマンドについてご紹介したいと思います。選択コマンドを使いこなすことで、もう少し効率的にRhinoを操作できるかもしれません。興味がある方は是非確認いただければと思います。
Rhinoの通常のオブジェクトの選択
Rhinoでオブジェクトの選択を行うには、
- 通常の選択 オブジェクトの上で左クリック
- 追加で選択 Shiftキーを押しながら左クリック
- 選択を一部解除 Ctrlキー(MacはCommand)を押しながら左クリック
と言った操作を行うことができます。
Rhinoのビュー上からドラッグして選択する、窓選択を行うことで複数の形状をまとめて選択することもできます。
このページでは上記のような基本操作ではなく、コマンドを使いオブジェクトを選択する方法をご紹介します。紹介する内容を幾つかに分けていますが、多少重複する物もありますので確認いただければ幸いです。
オブジェクト選択 – オブジェクトタイプごと
最初にご紹介するのは、オブジェクトタイプごとに選択できるコマンドです。選択に関するコマンドの多くは、画面上部にある[選択]タブからアクセスすることができます。

選択に関係するコマンドの多くは、[Sel ~~]という名前で登録されています。興味があれば、コマンドプロンプトにSelと入力してご確認ください。
オブジェクトタイプで選択できるものは、点を選択する[SelPt]、曲線を選択する[SelCrv]、サーフェスを選択する[SelSrf]、ポリサーフェスを選択する[SelPolysrf]、寸法を選択する[SelDim]といった具合です(形状のタイプの表記が点はPt、曲線はCrv、サーフェスがSrfと省略された表記になっているので注意ください)。
また曲線すべてを選択するのではなく、開いた曲線だけを選択する[SelOpenCrv]や、閉じた曲線だけを選択する[SelClosedCrv]と言ったコマンドがあります。曲線内の結合していない箇所を確認するには、[ShowEnds]コマンドで[端点分析]ダイアログを開き、[開いた曲線の始点]や[開いた曲線の終点]にのみチェックをつけることで確認できます(下図)。


同様に開いたポリサーフェスだけを選択する[SelOpenPolySrf]や閉じたポリサーフェスだけを選択する[SelClosedPolySrf]と言ったコマンドもあります。結合していないエッジを確認するには、[ShowEdges]コマンドで[エッジ分析]ダイアログを開き、[オープンエッジ]にチェックをつけることで確認ができます。


上記のようなコマンドを使用することで、オブジェクトが複数あるときに閉じていない形状のみを選択して修正することも可能です。
オブジェクト選択 – モデリング作業時に使用
次にモデリング作業時に使用できるコマンドを紹介します。
曲線自体が交差していると以降のモデリングで問題が起こることがあります。そういう時は[SelSelfIntersectingCrv]コマンドで自己交差する曲線のみを選択することができます。また曲線の自己交差した個所を作成するには[IntersectSelf]コマンドやオブジェクトスナップの[交点]が使用できます。求めた点を使って[Trim]や[Split]で、自己交差箇所を削除することが可能です。


サーフェスにも同様に自己交差を求めるコマンドがあればよいのですが、残念ながら同様のコマンドはありません。ただサーフェスではなくメッシュの自己交差を求める[MeshSelfIntersect]コマンドを使用することで、サーフェスを内部的にメッシュに変換して自己交差個所をポリラインで作成もできます。

次に他のコマンドの中で選択に関するコマンドを呼び出して使用した例を紹介します。
例えば下図の用に点群があり、その中の必要な部分(ここでは赤色の曲線内)だけ別の点群に取り出すことを行ってみたいと思います。
点群の一部を取り出すには、[PointCloud]コマンドの[削除]オプションを使用できます。


手順は下記の通りです。
- [PointCloud]コマンドを使用し、[削除]オプションを押す。
- [点群を選択]で (出力=点群)とし、点群自体を選択する。
- [削除する点を選択]で[Selboundary]コマンドを実行し、曲線を選択
選択系のコマンドの多くは他のコマンドの実行中でも、コマンドをキャンセルせずに使用することも可能です。
ただし[Selboundary]コマンドは現在のビューから見た内側を選択するので、この例であれば曲線に対して垂直なビューで実行する必要があります。
次に同じ色のオブジェクトを選択する[SelColor]コマンドと直前に作成したオブジェクトを選択する[SelLast]コマンドをご紹介します。

上の例は、
- 画面上のシアン色の曲線を[SelColor]コマンドで選択
- [ExtrudeCrv]コマンドで曲線を押し出す
- (この時点では曲線を選択した状態なので)[SelLast]コマンドで押し出した形状を選択する
という順番で使用してみた例です。
[SelColor]コマンドはレイヤ色やオブジェクトの色などの表示されている色でまとめて選択するコマンドです。要素ごとにそれぞれ異なる色を付けておくことで、まとめて選択して効率的に作業できます。

[SelLast]コマンドは、直前に作成したものを選択ができるというコマンドです。
- マクロで複数のコマンドを順番に実行する
- (Rhinoだけでなく)Grasshopperから形状をBake後に、Bakeしたものを選択する
など複数の状況で使用できる便利なコマンドです。
次にレンダリング時などにカメラから見えないオブジェクトを一時的に非表示にしてデータを軽くするなどの目的で使用できる[SelVisible]コマンドをご紹介します。このコマンドはカメラにより近いオブジェクトのみを選択することができます。[Invert]コマンドで選択を反転し、[Hide]で一時的に非表示にしておくと言った利用できます。


オブジェクト選択 – エラーチェック
次にエラーとなる形状のチェックに使用できるコマンドを紹介します。
Rhinoでは寸法に表示するテキストをプロパティ(ショートカットF3)などから変更することもできます。寸法値に追記する形であれば問題ないのですが、実際と異なる値が上書きされている場合、図面としては整合性が取れなくなることが起こりえます。

[SelDimTextOverride]コマンドを使用することで、値を変更している寸法のみを選択することができます。このコマンドは寸法に追記したものは対象に含まれません(末尾にmmを足した寸法は選択されない)。
またモノづくり上問題となる非多様体エッジ(複数のエッジと結合している個所)を持つ形状は、[SelNonManifold]コマンドで選択できます。非多様体エッジ個所は[ShowEdges]コマンドの[非多様体エッジ]にチェックをつけることで確認可能です。

トリムなどが失敗し問題がある形状は、[SelBadObjects]コマンドで選択できます(Badという言葉の意味にもよりますが、このコマンドでは非多様体オブジェクトは選択されません)。トリムが失敗した問題があるサーフェスのみ抽出するには、[ExtractBadSrf]コマンドを使用できます。
抽出後[Untrim]でトリムを解除し[Intersect]などで周りの形状との交差曲線を再度取得して、正しくトリムし直すことで問題ない形として[Join]で結合ができます。


オブジェクト選択 – データ管理
最後にデータ管理に使用できるコマンドを紹介します。
通常形状データを管理する際には、[レイヤ]パネルを使用してレイヤごとにオブジェクトを分けて管理します。[SelLayer]コマンドを使用することで、[選択するレイヤ]ダイアログを表示しレイヤからオブジェクトを選択することができます。
またその対となるコマンドとして、[HighlightObjectLayers]コマンドで選択したオブジェクトから登録しているレイヤの場所を調べることもできます。レイヤの数が増えるプロジェクトなどでは便利だと思います。


また図面を書く際に曲線ごとに線種を設定している場合、[SelLineType]コマンドの[線種]オプションから、[線種を選択]ダイアログを表示して特定の線種のみ選択することもできます。

最後にもっと細かくオブジェクトに情報を埋め込み選択する方法をご紹介します。Rhinoではオブジェクトを選択時に、[プロパティ]パネルの[属性ユーザーテキスト]の個所から、オブジェクトに任意の[キー]と[値]を設定できます。

このキーのみ対象として選択するのが[SelKey]、値のみ対象とするのが[SelValue]、キーと値を対象とするのが[SelKeyValue]コマンドとなります。
[SelKeyValue]コマンドで、キーに[材質]、値に[鉄]と入れると、オブジェクト中の[鉄]に設定した形状が選択できるといった具合です。
また選択時には、*(入力の文字を問わない)や、?(一文字分なら何でもよい)と言った文字も使用できます。
[SelValue]で[AppTest-*] と入力すると、APPTest-から始まる値を持つ形状はすべて選択できます。
[SelValue]で[AppTest-??] と入力すると、APPTest-から始まり、もう2文字任意の文字を持つ形状が選択できます。
ただしユーザーテキストをもっと効率的に扱うには、プログラムやGrasshopperと併せて使用する方が良いかもしれません。
以上、駆け足でしたが選択に関するコマンドをご紹介してまいりました。
是非、使い勝手が良いと思えるコマンドを見つけていただけたらと思います(個人的には[SelLast]が好きです)。