pyRevit の始め方

# 目次
[__1. pyRevitとは__](#pyRevitとは)
[__2. インストール__](#インストール)
[__3. フォルダの設定__](#フォルダの設定)
[__4. HelloWorld__](#HelloWorld)



# pyRevitとは
* PythonやDynamo、Grasshopperなどを用いてリッチなGUIのRevitアドインをつくれるツール
* .NETフレームワークを用いる通常のアドイン開発と比べてとても簡単
* （英語ですが）公式チュートリアル・ドキュメントあり

https://www.notion.so/pyrevitlabs/pyRevit-bd907d6292ed4ce997c46e84b6ef67a0



# インストール
下記リンクから最新版のインストーラーをダウンロードして、pyRevitをPCにインストールします。現在（2022.09.14）の最新版はバージョン4.8.12です。

https://github.com/eirannejad/pyRevit/releases

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/07d97888-07c1-7bc7-fa10-6ea622dc9492.png)
プラグインをインストールすると、Revitのタブバーに「__pyRevit__」タブが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/74c886a6-e2d4-20bb-d1e8-0406d9838f7f.png)
「__pyRevit__」パネルから「__About__」ボタンをクリックするとダイアログが表示され、pyRevitのバージョンを確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/d96723cf-1469-168b-af1a-dc49c593e2a0.png)



# フォルダの設定
pyRevitでは、以下のようなフォルダ構成によってUIをつくります。各フォルダの名前がUIに表示されます。「__<ボタン名>.pushbutton__」フォルダにpythonスクリプトとアイコン用の画像を入れます。
```:フォルダ構成
C:.
└─<エクステンション名>.extension
    └─<タブ名>.tab
       └─<パネル名>.panel
           └─<ボタン名>.pushbutton
               └─icon.png
               └─script.py
```

今回の例では、Cドライブ直下に「pyrevit_sample」というフォルダを作成しました。ボタンのアイコンにはRevitのロゴ画像を使用しています。
```:フォルダ構成
C:\pyrevit_sample
    └─SampleExt.extension
        └─SampleTab.tab
           └─SmaplePnl.panel
               └─SampleBtn.pushbutton
                   └─icon.png
                   └─script.py
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/17fe37b5-3559-c473-bd4c-7b19e8783f47.png)

:::note info
* 既定のフォルダ名（__<タブ名>.tab__ など)になっていないフォルダは無視されます。
* ボタンをクリックした際に実行するpythonスクリプト「__script.py__」から別のpythonスクリプトを呼び出すことも可能です
* 複数のボタンで利用するスクリプトや設定値を保存するJSONファイルは、「__<エクステンション名>.extension__」フォルダ直下に入れて「__script.py__」から呼び出します。
```:フォルダ構成
C:.
└─MyExtension.extension
    ├─config.json　            #共有の設定値
    ├─mylib.py                 #共有のクラス・関数
    └─NotionLink4Revit.tab
       ├─Issues.panel
       │   ├─Apply Issues.pushbutton
       │   │   └─icon.png
       │   │   └─script.py
       │   │   └─gui.py        #「script.py」から呼び出すpythonスクリプト
       │   ├─Delete Issues.pushbutton
       │   │   └─icon.png
       │   │   └─script.py
       │   └─Delete Issues.pushbutton
       │       └─icon.png
       │       └─script.py
       ├─Debug.panel
       │   └─（略）
       ├─Properties.panel
       │   └─（略）
       └─Properties.panel
           └─（略）
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/560cbca5-35b5-e971-cdbf-260c9b218edb.png)
:::

「__pyRevit__」パネルから「__Setting__」ボタンをクリックして、「__pyRevit Settings__」ダイアログを開きます。「__Custom Extension Directories__」から「__Add folder__」ボタンをクリックし、先ほど作った「C:\pyrevit_sample」フォルダを設定します。

:::note warn
「__<エクステンション名>.extension__」フォルダの1つ上のフォルダを指定します。「__<エクステンション名>.extension__」フォルダを指定すると読み込まれないので注意してください。
:::
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/9c8780fb-52d7-0dfb-73b5-77e552788f81.png)





# HelloWorld
実際にPythonスクリプトを書いて "HelloWorld" を表示してみます。
以下コードを書いて保存して、

```Python3:script.py
# encoding: UTF-8
print ("Hello World")
```

「__Reload__」ボタンをクリックして「__はい__」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/c9ea6fa4-3be6-0cac-ff9e-8092745dcad4.png)

リロードすると新しく作成した「__ボタン__」ボタンが現れて、クリックすると "HelloWorld" が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/f29af72e-e789-396d-8951-72f90c4478cf.png)