📝

pyRevitをDynamoではじめよう!

2021/12/19に公開

AEC and Related Tech Advent Calendar 2021の19日用の記事です。
https://adventar.org/calendars/6392
今回は、pyRevitを紹介したいと思います。2年前にこちらの記事でpyRevitを紹介したのですが、情報が少し古いので改めて紹介します。特にDynamoやRhino.InisdeのGHで書いたコードにも使えるようになり、DynamoやGHといったグラフィカルプログラミングで書いたコードを主にpyRevitで使うケースも増えたようです。DynamoやGHは使える人が多いので、組織のツール作り手やアイディアをまとめるといったことに有効なので、改めてDynamoやGHを使うpyRevitの使い方を紹介したいと思います。
https://qiita.com/yishizu/items/6e812db233b7fa970555

pyRevitとは

pyRevitは、簡単に言うと難しいC#の知識を要らずに、UI付きのRevitプラグインのようなものをフォルダの名前のルールだけでつくることができるツールです。Revitプラグインの開発には、ソフトウェアエンジニアとしての知識が必要で、Dynamoから習って自作のプラグインを作ろうとしても、そこに大きな壁あります。それをpythonやDynamo、GHといった簡単なプログラミング言語で、ロジックだけを組むことで、プラグインをつくるまでの難しい処理を全部pyRevitに任せてしまおうという意図で作られています。そうすることで、設計者やエンジニアがプログラミングスキルを最小限に自分たちが欲しいツールを自分たちでつくることができます。

https://www.youtube.com/watch?v=NGi5ENodsQo&t=2s
TokyoAECDevのミートアップにも開発者のEhsanさんが来てくれたので興味がある方はご覧ください!基本的な使い方やツール開発のきっかけなども話してくれています。

pyRevitのインストール

https://github.com/eirannejad/pyRevit/releases
こちらからpyRevit_4.8.8_signed.exeファイルをダウンロードします。

インストールは簡単で、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にします。

bundle
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