vicc blog

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

Rhinoでの手作業を自動化する#1 マクロとUIカスタマイズ

エンジニアや建築家にとって、CADで同じ作業を繰り返すことはよくあります。これはAutoCAD、Rhino、Revitなど、どのソフトウェアでも同じです。これらのソフトウェアには、デフォルトでアイコンやコマンドが用意されており、やることを伝えられるようになっています。しかし、同じ作業を繰り返し行う場合、同じアイコンを何度も押したり、同じコマンドを何度もタイプしなくてはいけません。これは時間を浪費してしまい、生産性の低下につながります。

どのソフトウェアにも、これらのボタン操作やコマンド入力を自動化するためのツールが用意されています。ほとんどのソフトウェアでは、これらのコマンドを「マクロ」と呼ばれる1つの連鎖にまとめることが可能です。マクロは、自動的に実行される小さなコマンドのリストです。Rhinoでは、マクロの中でもユーザーの入力を許可することができるので、作業をより速くすることができます。

このシリーズでは、Rhinoでマクロやその他の自動化ツール(pythonやC#プログラミングなど)とコマンドを組み合わせる方法を探ります。タイトルは以下の通りです。

  1. RhinoのマクロとUIカスタマイズ
  2. 自動化のためのプログラミング(pythonとC#)
  3. マクロとプログラミングの組み合わせ

Rhinoマクロ

まず、Rhinoのマクロがどのようなものかを見てみましょう。そしてRhinoのUIでマクロをどのように実装できるかを探ります。

Rhinoのマクロは、コマンドとコマンドオプションがまとまったもので、自動的に次々と実行されます。ここでは2x4x7のボックスを作成するマクロの例をご紹介します。コマンド、コマンドオプション、および入力値は、半角スペース “ “ で区切られています。

以下は、同じコマンドを入力した時のスクリーンショットです。

Command: Box
First corner of base ( Diagonal 3Point Vertical Center ): center
Center of base: 0,0,0
Other corner of base or length ( 3Point ): 1,2,0
Height. Press Enter to use width: 7

次のコマンドでマクロエディターを開いてみましょう。

  • MacroEditor

マクロエディタパネルの再生ボタンを押すと、マクロを実行することができます。 いくつかのコマンドを他のコマンドの中に含めることもできます(例えば、ZoomやView change)。

より複雑なマクロを試してみましょう。

InterpCrv starttangent -1,0,0 5,0,0 2,3,5 5,10,-5 -5,0,0 EndTangent 2,2,0 4,2,0 sellast offset cap=flat 0.75 0,0,0 explode divide 10 selnone

- [pauseはユーザー入力のためです]
Line pause pause sellast offset cap=flat ThroughPoint pause -rebuild PointCount=7 DeleteInput=Yes enter extrudecrv solid=yes pause delete sellast array 5 7 1 pause pause enter sellast zoom selected selnone

- [一つArcジオメトリーを選択するまま実行されます]
setobjectname "stairs" _copy vertical=yes 0,0,0 0.5 enter sellast offset cap=none 1 0,0,0 sellast setobjectname "stairs" _copy vertical=yes 0,0,0 0.5 enter sellast offset cap=none 1 0,0,0 sellast setobjectname "stairs" _copy vertical=yes 0,0,0 0.5 enter sellast offset cap=none 1 0,0,0 sellast setobjectname "stairs" _copy vertical=yes 0,0,0 0.5 enter sellast offset cap=none 1 0,0,0 sellast -selname "stairs" -loft type=straightsection enter delete

ライノコマンド
コマンド中のオプション
#,#,# 点の座標
# 数字
“txt” 文字入力
Pause ユーザー入力

マクロでは、通常マウスやキーボードで行うユーザー操作が特別なコマンドに置き換わります。以下は、よく使われる特殊コマンドのリストです。

  1. Pause: ユーザーの入力(マウスクリック、数値入力、テキスト入力)を待つ
  2. Enter:エンターキーが自動的に押されるようにシミュレートする*
  3. Cancel:現在のコマンドをキャンセルし、オブジェクトの選択を解除する
  4. Select:一時停止と組み合わせて、ユーザーにオブジェクトを選択するよう促す**
  5. Sellast:最後に作成したオブジェクトを選択
  6. Selprev:前に選択したオブジェクトを選択する

*ユーザー入力の Pauseと組み合わせる時は、正しく動作させるために試行錯誤が必要です。 **selectコマンドから抜け出すにはenterコマンドが必要です。EnterとユーザーセレクトのPauseを組み合わせるには、正しく動作させるために数回の試行錯誤が必要です。

いくつかのコマンドの後ろにダッシュ “-” があるのがわかりますね。このダッシュは、Rhinoにこのコマンドのウィンドウを開かないように指示するものです。その代わり、Rhinoのテキストベースのコマンドプロンプトで入力変数を見つけます。以下は、ダッシュ “-” の注釈を使用してレイヤーを作成する例です。

-layer new vicc::BIM new vicc::Visualization new "vicc::Facade Engineering" color vicc 255,46,23 color vicc::BIM 0,0,255 color vicc::Visualization 255,96,79 color "vicc::Facade Engineering" 165,140,255 Current vicc enter

ライノコマンド
コマンド中のオプション
#,#,# 色RGB
レイヤー
レイヤーの名前の中にスペース「 」がある場合「””」を使います。

以下は、テキストドットオブジェクトの作成を組み合わせ、それをviccレイヤーに配置するコマンド例です。

-dot "AWESOMENESS!!!" pause -layer new vicc color vicc 255,46,23 enter sellast -changelayer vicc selnone

ライノコマンド
コマンド中のオプション
#,#,# 色RGB
“txt” 文字入力
Pause ユーザー入力

Rhino の UI におけるマクロの実装

マクロの書き方がわかったところで、マクロの使い方を見てみましょう。ここでは、Rhinoでマクロを記述できる最も一般的な場所を紹介します。

  1. マクロエディタパネル (図1)
  2. DocumentProperties エイリアス (図2)
    1. ファイル > プロパティ... > Rhinoのオプション > エイリアス
    2. コマンドを実行します。「DocumentProperties" -> Rhinoのオプション -> エイリアス
  3. DocumentProperties キーボードショートカット (図3)
    1. ファイル > プロパティ... > Rhinoのオプション > キーボード
    2. コマンドを実行します。「ドキュメントプロパティ" -> Rhinoのオプション -> キーボード
  4. カスタムUIボタン (図4)
    1. Shift + マウス アイコン上で右クリック(カスタムボタンまたはビルトインボタン)

図1: マクロエディタパネル

図2: DocumentProperties エイリアス

図3: DocumentProperties キーボードショートカット

(図4: カスタムUIボタン

マクロエディター・パネル(図1)は、ゼロからマクロを作成するときに便利です。テキストでマクロ・コマンドを簡単にコピー、ペースト、編集することができます。しかし、このパネルには1つのマクロしか保存できません。コマンドを実行するにはもっと良いやり方があります。またこのやり方だと、マクロはRhinoを終了するたびに削除されてしまいます。

DocumentPropertiesのAliasesとKeyboard Shortcuts(図2および図3)では、カスタムコマンドやキーストロークをマクロに割り当てることができます。そうすることで、Rhinoに複数のマクロを保存することができます。図5は、エイリアスとキーボードショートカットに保存されたマクロです。

マクロが一つコマンドのようにエイリアスとキーボードショートカットで設定できます(図5)

重要なのは、エイリアスマクロは他のマクロの内部で呼び出すことができるということです。キーボードショートカット、他のエイリアスコマンド、またはカスタムボタンから呼び出すことができます。この機能により、エイリアスマクロは特に便利で多用途なものとなっています(図6)。

キーボードショートカットとエイリアスの組み合わせ、カスタムUIボタンでも設定できます(図6)

まとめ

この記事では、Rhinoでマクロを作成する方法と、マクロをさまざまな方法で使用する方法について説明しました。また、異なるマクロを結合する方法についても説明しました。そして、マクロを組み合わせることで、マクロをより小さなパーツに分割し、編集や拡張がより簡単になることを確認しました。

チームメンバーでマクロを共有することは、チームの生産性を向上させるために有効な方法です。マクロを使うことで、Rhinoでコマンドを書いたり、ボタンをクリックしたりする無駄な時間を大幅に削減することができます。この記事が読者の方々の作業をより効率的で楽しいものにする一助となれば幸いです。

次の「Rhinoでの手作業を自動化する」シリーズでは、PythonとC#プログラミングを使ってRhinoでより高度な自動化ツールを作成する方法を探ります。マクロとプログラミングスクリプトを組み合わせて、さらに優れた自動化を実現する方法を見ていきます。

翻訳: kmakanae