はじめに
Pytonを使ってRevitの自作アドインを作ってみよう!という話になり色々試しているなかで、
為になったこと、やったことを書き溜める場所を作ろうというのが最初の動機です。
元々別のテキストファイルに書きためていましたが、
他の人にも共有できたほうが、都合が良くなるかもしれないと思いQiitaに書いていく方針にしました。
文章を書くことが苦手なのでその練習も兼ねています。
環境設定
Qiitaに投稿されている先駆者の知恵1 をお借りしながら環境設定をしました。
ソフトバージョンは Revit2020、コーディングは Visual Studio code で進めていて、それにあたり、
- pyRevit
- pyRevit MEP
- Revit Python Shell
- Revit Lookup
- Revit Python Wrapper
といったものをインストール済みです。
実現したいこと
自動で作図する
書きたいものはRevitの標準機能にないため、現状ではファミリをひとつひとつ作り、ひとつひとつ置いて作図する必要があります。
人力ではとても苦労する作業のため、これを自動化したいです。
自動でプロパティの設定をする
ひとつひとつファミリを触ってプロパティを変更していくなんて気の遠くなることをしたくないため、これも自動化したいです。
独自のUIを作る
自動化を試みるにあたり、設定画面など避けては通れない道だと思っています。
苦労したこと
環境設定に手間取る
一番最初に Revit Lookup と RevitPythonShell を入れようとして躓きました。
これは今後、別の記事にまとめようと思います。
Pythonのバージョンの違いで戸惑う
Revitを操作しよう!となる前からPython自体の勉強は進めていて、自PCにはPython3.7とPython3.8を入れていました。
構文やライブラリもPython3系で勉強していたため、いざRevitでIronPythonを触り始めたときには細かいところでひっかかったことが多かったです。
たとえばList型を削除するときのやりかたでは、
# Python3系
list.clear()
# Python2.7
del list[:]
小さなことではありますが「3系で動いていたコードが動かない!」というのはストレスの種だったと思います。
また、Web上にあるサンプルプログラムはもれなくprint
に()
がついていないのでとても違和感がありました。
先駆者が少ない
日本語で読めるPythonでのRevitAPI資料が少なく、調べ方が難しいです。
英語で書かれているドキュメントはけっこうありますが、英語が壊滅的に読めない私にとってはGoogle Translateさんの助けがあっても地獄です。
RevitAPIそのものについては公式ドキュメント等があるので基本的なところは学べますが、Pythonでとなると一気に情報が減ります…。
前途した記事1 には大変お世話になりました。
社内で同じ言語を学んでいる人がいない
弊社システム部門のみなさんはC言語で書くひとが多く、Pythonの疑問については自力で調べるほかありませんでした。
この自作アドイン計画も、私と、同チームの先輩の2人だけで手をかけ始めたのでかなり手探りです。
Revitの操作が難しい
Revitの操作やオブジェクトの構造やどんなプロパティがあるかとか基本的な知識が乏しいです。
ただ先輩がかなりRevitに詳しいので都度助けてもらいました。
初心者がコードを書くことの恐ろしさ
- そもそもIT系出身でない
- 元は図面屋だったためコードを書く仕事をしてこなかった
→ 基礎が無さ過ぎるため恐ろしいほど汚いコードが生まれています。恐ろしい。
VBAやPythonRPAなどで細々と作ったことはあるものの、個人ベースで作られているためコードは見づらく、
プログラムを組む仕事をしてこなかったためにエラー処理がとても緩い状態です。
この辺のコーディング知識みたいなものもちゃんと身に付けていきたいと思っています。
おわりに
具体的な内容などは別記事にまとめていく予定です。
ペースも不定期ですが、自分があとで見返すことができるような備忘録として、
また、誰かの小さな助けになるように書いていこうと思います。