vicc blog

株式会社ヴィックの技術ブログです。

Rhino や Grasshopper 作業を地味に手助けするコマンドを2つ作成しました。

以前、選択したオブジェクトからレイヤーのフルパスを取得するコマンドについて紹介しました。
blog.vicc.jp

このコマンドを作ってみたのちに、自分の日々の作業を見渡してみると同様の仕組みで楽になる作業がいくつかあることに気が付きました。今回はその中でも頻度が高そうな2点についてコマンドを作成したので、ご紹介&配布をします。

※以前のコマンドと仕組みは同じなので、今回はコマンドのアルゴリズムなどの細かな説明をこの記事では行いません。それぞれの GitHub レポジトリで確認ください。

※筆者のメインの作業環境が Rhino7 なので、Rhino8 での動作確認は行っていません。

GetDimValue コマンド

GitHub - viccBlog/20240717_GET_DIM_VALUE_COMMAND

ひとつ目は、選択したディメンションから数値を取得しクリップボードに取り込むコマンドです。こちらは Grasshopper を使わない Rhino オンリーのユーザにも非常に便利なコマンドです!!

寸法を測ってその距離でオブジェクトを移動するという作業の際に、きれいな数値であればガムボール上に数値を手で打ち込むのも簡単です。しかしながら、数値が小数点以下まである細かな寸法であれば(例えば4123.17mmとか)、手で打ち込むのも面倒ですし操作ミスの原因にもなります。今回紹介するコマンドはこのようなストレスを解消できると思います。

Distance コマンドを使うのでディメンションは作らないという意見もありましたが、計った箇所を後で確認できない Distance コマンドを筆者があまり利用しないので、今回はディメンションの数値を取得するコマンドとなっています。Distance 派の人はこのプログラムを改変し GetDistance コマンドなど作ってみてもいいのかもしてません。

個人的な使用感でいうと、複雑外装では曲面や曲線で構成される外装と、直線部材で構成される下地の間で金物をちまちま調整するという作業が非常に多く、もっと早く作るべきだったと思いながら毎日使っています。

ここでは 131.88 ミリを動かしたい(面倒)

※ライノの実装について補足説明
ディメンションオブジェクトには、Dimension Text と Dimension Value という似たようなプロパティが存在します。Dimension Value の方は距離の実寸法(上の画像では例えば 131.88030294 というような数値)で、Dimension Text はディメンションで表示されているテキスト(上の画像では 131.88 という数値)です。建設業において過度な精度管理は不必要なので、このコマンドでは Dimension Text の方を採用しています。コマンド名は GetDimValue なので少し紛らわしいです(数値を取得するので直観的な覚えやすさで GetDimValue としています)。

追記)
高い精度管理が必要な場合もあるようなので v2 として Dimension Value での実装もリリースしました。

  • v1 : Dimension Text(上の画像では 131.88 という数値)
  • v2 : Dimension Value(上の画像では例えば 131.88030294 というような数値)

GetBlockName コマンド

GitHub - viccBlog/20240717_GET_BLOCK_NAME_COMMAND

ふたつめ目は、選択したブロックからブロック名称を取得しクリップボードに取り込むコマンドです。こちらは前回の記事の GetLayer コマンドとかなり用途が似ています。ひとつ目のコマンドに比べると地味ですが、ブロックを多用し継続的に編集しやすいデータを作るうえではちゃんと筆者を助けてくれています。

ブロックの名称を取得し、Grasshopper + Elefront の作業の中で文字列をパネルに書き込むというのが当初の想定でしたが、それ以外にも今選択している範囲にどんなブロックが含まれているか知りたいというときにも利用しています。

このコマンドにより、複数を選んだときになんのブロックがあるのかすぐにわかる

結び

今回の記事は過去に作成したコマンドの派生形の紹介でした。文字列を OS のクリップボードに貼る仕組みを理解していたので、2回目は思い立って即コマンドを作ることができました。まずは自分が良く使いそうな2つを作ってみましたが、さらにいろんな派生形もありそうです。これあったらいいよねというものがあれば、ぜひコメントで教えてください。