pyRevitをはじめよう！Pythonで始める気軽なRevit開発

Revitの開発をPythonで行う際に便利なpyRevitを紹介したいと思います。
https://github.com/eirannejad/pyRevit!
![maxresdefault.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425318/0a8ff49e-767c-52d8-fec2-2f45a7aa9296.jpeg)

3つの構成になっています。
- pyRevitって何？
- pyRevitでAddonをつくる
- pyRevitでツールをつくる際に知っておいたほうが良いもの

#**pyRevitって何？**
RevitのUIタブやボタンを作ってPythonで作ったツールを簡単につくることができる環境を提供してくれる便利なツールです。素早くちゃっちゃっと自動化やアドオンのアイディアを作ることができます。またCLIで作ったツールの使用率などもモニタリングできます。

https://www.notion.so/pyRevit-bd907d6292ed4ce997c46e84b6ef67a0
>pyRevit (with lowercase *py*) is a Rapid Application Prototyping (RAD) environment for Autodesk Revit®. It helps you quickly sketch out your automation and addon ideas, in whichever language that you are most comfortable with, inside the Revit environment and using its APIs. It also ships with an extensive set of powerful tools that showcase its capabilities as a development environment. Download and install pyRevit, launch Revit, and note the new **pyRevit** tab that includes these tools. pyRevit also ships with a handy CLI utility for customized configuration and deployment of your tools, and a telemetry server to monitor pyRevit usage across your teams.

#**早速インストール！**
https://github.com/eirannejad/pyRevit/releases
①　GitHubからインストールバージョンを選んで、exeファイルをダウンロードします。
![installl.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425318/648d7744-795f-7bc0-00e9-43b1f84e4078.jpeg)

②　exeファイルを実行します。ガイドに従い、パスを選択してインストールします。
![setup.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425318/c486378d-b09d-9899-7e7d-4a0e85cecf5d.jpeg)

③　新しくつくるExtension用のフォルダーを作っておきます。フォルダーの位置はどこでも大丈夫ですが、ここではUsersの下に作りたいと思います。
`C:\Users\[UserName]\[FolderName]`

④　インストールできたらRevitを開きます。pyRevitのタブができているか確認します。
![installl2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425318/e6204a4e-9a84-b75c-f443-1f72ce83a1bb.jpeg)
pyRevitのタブから、pyRevitパネルのSettingsをクリックして、設定を選択します。
![RevitSettings.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425318/e04065d4-cd86-fabe-a37d-d735517b309d.jpeg)

Custom Extension Directoriesに`C:\Users\[UserName]\[FolderName]`をAdd foloderで指定します。
![path.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425318/bc128b32-53cf-8e28-c96b-9a69747551f1.jpeg)

ここまででPyRevitの設定は終わりです！では、ツールを作ってみましょう！

#**pyRevitでAddonをつくる**

①先ほど作ったフォルダーに[ExtensionName].extension\[TabName].tab\[Panelname].panel\[buttonName].pushbuttonという階層でフォルダーを作ります。
例えば、`C:\Users\[UserName]\[FolderName]\Meetup.extension\Meetup.tab\Happy.panel\hello.pushbutton`
②　次にアイコン画像ととsample_script.pyをそのフォルダに追加します。
![icon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425318/4fd46475-764a-7b50-d0f4-2202beac2577.png)

```sample_script.py
print("hello pyRevit!")
```

③pyRevitのReloadボタンを押します。
![Reload.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425318/a6e3aeb7-84da-aa41-1a6f-c8c119f33ebc.jpeg)
すると、先ほどのフォルダー名通りのタブ、パネル、ボタンができがっています。
![pushbuttom.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425318/98bd33ba-22de-5726-3245-13b9a407ae95.jpeg)
④　ボタンを押すとこんな感じです！
![hello pyRevit.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425318/2c396981-c35e-4317-00f3-0bce12093d21.jpeg)

C#だとかなりかかる設定をすべてスキップできて、こんな簡単にツールが開発ができました。ちなみに、pythonのコードを新しくした際は、reloadしなくても更新されます。ボタンやタブ、パネルなどUIを変更したときにはreloadが必要になります。

#**pyRevitでツールをつくる際に知っておいたほうが良いもの**
**1. text editor**
私はVS codeを使用しています。https://code.visualstudio.com/ 
**2. IronPython CLRのスタブ**
これを入れるとテキストエディタで書くときに楽になります。https://github.com/gtalarico/ironpython-stubs
設定の仕方
1.https://marketplace.visualstudio.com/items?itemName=ms-python.pythonからVSCodeのPythonアドオンを入れる。
2．VSCodeからShift+Ctrl+Pでパッケージマネージャーを開き、設定のjsonファイルを開く。

![settings.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425318/7df2b451-6758-8833-764a-0a4d07ebb43c.gif)
以下のコードをそこに加える。
```settings.json
"python.pythonPath": "C:\\Program Files\\Python27\\python.exe",
"python.autoComplete.extraPaths": ["C:\\Path\\To\\ironpython-stubs\\release\\stubs.min"],
```
**3. Revit Python Shell**
https://github.com/architecture-building-systems/revitpythonshell
![pyrhon shel.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425318/0d33ab58-a191-7293-89e1-5d44a6725dbd.jpeg)
![shell.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425318/90f91ea9-f5a6-fcac-d4fa-2aeb8e357bba.jpeg)
**4. RevitLookup**
![Lookup.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425318/6eadbbac-d5c2-472e-4998-f8f50d5f952b.jpeg)
Revitのエレメントの構造がわかるので便利です。選択したものElementIdをみたいときやパラメータの種類を確認したいときに使います。
https://github.com/jeremytammik/RevitLookup
**5. revitapidoc**
AudodeskにはAPIのwebドキュメントがないので、Guiさんが作ったこのサイトをよく見ています。
![RevitAPIDoc.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425318/9f152122-e5b0-cafd-dbf9-2d5375e7209a.jpeg)
https://www.revitapidocs.com/2017.1/
**6. Revit Python Wrapper**
こちらもGuiさんが、よく使うRevitのファンクションをPythonicにかけるようにラップしてくれています。pyRevitには標準で入っているので、`import rpw`とするだけですぐに使えます。python Shellで使う際には、パスを指定する必要があります。
https://revitpythonwrapper.readthedocs.io/en/latest/


①レポジトリをクローン
https://github.com/gtalarico/revitpythonwrapper
②revit python shellにパスを指定する。
![path2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425318/90664489-117f-c287-bda0-42df1bf4e2e1.gif)

>![add-path.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425318/003e9b38-989f-51da-01c0-2e0ef1292a5e.png)

>![rps-use.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425318/53a7fceb-d859-ead8-e4c8-ae2c990bed33.png)
https://revitpythonwrapper.readthedocs.io/en/latest/installation.html

私は、ShellでpyRevitのModuleも使うのでそちらも指定しています。


いかがでしょうか？これでセットアップは完了です！
ぜひ気軽にPythonでRevitツール開発を始めてみてください！