pyRevitをDynamoではじめよう!
AEC and Related Tech Advent Calendar 2021の19日用の記事です。
今回は、pyRevitを紹介したいと思います。2年前にこちらの記事でpyRevitを紹介したのですが、情報が少し古いので改めて紹介します。特にDynamoやRhino.InisdeのGHで書いたコードにも使えるようになり、DynamoやGHといったグラフィカルプログラミングで書いたコードを主にpyRevitで使うケースも増えたようです。DynamoやGHは使える人が多いので、組織のツール作り手やアイディアをまとめるといったことに有効なので、改めてDynamoやGHを使うpyRevitの使い方を紹介したいと思います。pyRevitとは
pyRevitは、簡単に言うと難しいC#の知識を要らずに、UI付きのRevitプラグインのようなものをフォルダの名前のルールだけでつくることができるツールです。Revitプラグインの開発には、ソフトウェアエンジニアとしての知識が必要で、Dynamoから習って自作のプラグインを作ろうとしても、そこに大きな壁あります。それをpythonやDynamo、GHといった簡単なプログラミング言語で、ロジックだけを組むことで、プラグインをつくるまでの難しい処理を全部pyRevitに任せてしまおうという意図で作られています。そうすることで、設計者やエンジニアがプログラミングスキルを最小限に自分たちが欲しいツールを自分たちでつくることができます。
TokyoAECDevのミートアップにも開発者のEhsanさんが来てくれたので興味がある方はご覧ください!基本的な使い方やツール開発のきっかけなども話してくれています。
pyRevitのインストール
インストールは簡単で、exeファイルをダブルクリックするだけです。
pyRevitタブが現れたら準備ができました。pyRevitのツールの中に色々な自動化ツールが既に用意されていて、これらを参照するだけでも勉強になります。
pyRevitの使い方
オリジナルのExtensionをつくろう
pyRevitでは、フォルダの構成だけでタブ、パネル、ボタンなどUIを簡単に作ることができます。
以下のようにフォルダ名をルールに沿ってつけるだけで、UIが作れる魔法のようなツールです。
フォルダをつくる
新しくつくるExtension用のフォルダーを作っておきます。フォルダーの位置はどこでも大丈夫ですが、ここではUsersの下に作りたいと思います。
C:\Users\[UserName]\[FolderName]
に作ります。
[FolderName]
はpyRevitToolsとします。
[ExtensionName].extension\[TabName].tab\[Panelname].panel\[buttonName].pushbutton
というルールに沿って、タブやパネル用のフォルダをつくります。今回は、GEL.extension
という名前のExtensionを作ります。
GEL.extension\GEL.tab\GEL.panel\DynamoTest.pushbutton
フォルダをExtensionに設定する
pyRevitの設定からCustom Extension Directoriesに先ほど作ったフォルダを設定します。GEL.extension
のフォルダがある一つ上のフォルダを指定します。C:\Users\[UserName]\[FolderName]
なので、pyRevitToolsを指定します。GEL.extension
のフォルダを指定すると読み込まれないので注意してください。
GELタブが現れました。
ボタン内のロジックとアイコンを入れる
GEL.extension\GEL.tab\GEL.panel\DynamoTest.pushbutton
の中に、Dynamoファイルと、アイコン画像、yamlファイルを入れます。Dynamoファイルの名前は、○○_script.dyn
というように最後に_script
をいれます。
Dynamoファイルをロジックに使う場合は、engine: clean: false automate: false
に設定すると動作が安定します。yamlの名前をbundle.yaml
にします。
title: DynamoToolTest
tooltip: Tooltip
author: "Yuko Ishizu"
references:
engine:
clean: false
automate: false
Dynamoのファイルは、UIのボタンをshift+ctrl
を押すとDynamoが立ち上がります。
今回は、HelloWorldの代わりにDataShapeのパネルを立ち上げる簡単なDynamoファイルを作りました。
以上で完成です!
いかがでしょうか?とても簡単にUI付の自分のExtensionが作れました。プッシュボタン以外にもいろいろなUIが作れるので、pyRevitのフォルダを見てどのように設定するかを比較しながら調べるとよいと思います。
pyRevitでDynamoを走らせる注意
Dynamoコードを使うには、ローカルのDynamoのエンジンが動いているため、DynamoPlayerと同じでユーザーのDynamoの設定に依存します。なのでパッケージの管理などは、Dynamoを使う際と同じように発生します。それらを回避したい場合は、pythonを使ってAPIで書いたほうが運用はしやすいでしょう。
ただ、まずはこんなツールがあったらどうかなとか、自分の作業を効率化したい時など、DynamoPlayerではなく、pyRevitを使用することで細々としたDynamoツールをカテゴリごとにパネルにまとめたり、アイディアを出したり、ツールをつくる人を増やすためにはDynamoでの開発やGHでの開発は、可能性が多いにあると感じています。
みなさんもぜひ年末は、pyRevitも初めてみてはいかがでしょうか?
Discussion