Dynamo/Python開発環境

皆さんはどのような環境でDynamo, Pythonを開発されていますか。

良いコードを作るには、良い環境が必要です。たぶん。

SBOでは、DynamoベースでPycharmを活用した環境で開発をしています。ここでは、その内容と構築方法を紹介します。

目次

Python Scriptノード

まずは、Revit標準の開発環境について

Revitをインストールすると、Dynamoも使えるようになります。DynamoでPythonコードを記述する際は、Python Scriptノードを使用します。

ほとんどのユーザがこの環境からスタートすると思いますが、使い勝手は悪いと思います。

使い勝手が悪い例を2点挙げます。

1点目:Pythonエディタとしての性能が悪い

コードの整形やリファクタリングなどPython Scriptノードではできないことがとても多いです。Python用のテキストエディタを使うと、その違いをすぐに実感できます。

2点目:関数等の使いまわしが難しい

Python Scriptノードでは、作成した関数等を使いまわすことが難しいと思います。カスタムノードの機能を活用すればそれなりのことができるかもしれませんが、利便性は劣ります。

いずれPythonに慣れてきて、ノードを使用するよりもテキストコードの記述が多くなってくると、Python Scriptノードでのコーディングは非効率になってくると思います。

SBOの開発環境

ここからは、SBOの開発環境を紹介します。

Dynamoベースで開発しつつほぼPythonでコーディングする、という特殊な環境です。

エディタ・IDE

PythonエディタとしてPycharmを使用しています。正確にはエディタではなくIDEですね。

これを選んだ理由は、特にありません・・・。世間では、VS Codeが人気のようです。Dynamo Forumでもそのようですが、私はPycharmしか使ったことがありません。かなり気に入っているため、しばらく使い続けるつもりです。

以降は、PycharmをDynamoで活用するためのノウハウを紹介します。

全体構成

全体構成を示します。

実行用ファイルやモジュールは、Python形式のファイルです(拡張子が.py)。これらはすべてPycharmで作成します。

実行用ファイルは、Dynamoから直接アクセスする唯一のファイルです。Excel等の関連データとのやり取りは、実行用ファイルのみに記述します。

実行用ファイルは、ツールごとに作成します。一方、自作パッケージは、様々なツールで共有します。モジュール(自作の関数等)を容易に共有できることがこの開発環境のメリットの一つです。

エディタ使用時のDynamoグラフ

エディタを使う場合に使用するノードを紹介します。

ツールで実行したい処理はエディタでコーディングするため、ノードはほぼ使用しません。エディタでPython形式(.py)のファイルを作成し、Dynamoでそれを読み込んで実行する、という形になります。

グラフは下図のようになり、どのようなツールでもほぼ同じ構成になります。

各ノードの説明

File Pathノード

実行用ファイルの場所を指定します。

File From Pathノード

パスをファイルに変換します。

FileSystem.ReadTextノード

ファイルを読み込んでテキストを出力します。

Python Script From Stringノード

入力されたテキストをPython Scriptとして認識し、実行します。

IN[x]につながっているノード

Pythonを実行する際に入出力が必要であれば、例のようにIN[x]につなげます。必要によりノード数を増減します。

Watchノード

Dynamoプレーヤで実行結果を表示したい場合に使用します。

Pythonプロジェクトのディレクトリ構成

ディレクトリ構成も紹介しておきます。

”Python ディレクトリ構成”で検索すると様々な記事がでてきます。そして、どれも微妙に異なります。結局は、どんな開発をしたいかで変わるということのようです。

まだまだ勉強中ですが、現時点では以下の構成としています。

基本形と元ネタ

プロジェクト構成は、以下を基本とします。元ネタのリンク先も示します。

packaging_tutorial/  # プロジェクト名(pipで指定)
├── LICENSE
├── pyproject.toml
├── README.md
├── src/
│   └── example_package_YOUR_USERNAME_HERE/  # パッケージ名(importで指定)
│       ├── __init__.py
│       └── example.py
└── tests/

Python のプロジェクトをパッケージングする – Python Packaging User Guide

PyPAのPython Packaging User Guideです

Licenseやpyproject.toml等はひとまず放置します(パッケージングするものができたら準備します)。ここで重要なのは、次の2点です。

1点目:srcディレクトリを設ける

通称srcレイアウトと呼ぶそうです。srcディレクトリを置かないフラットレイアウト派もあるようです。正直どちらでも良いのですが、srcレイアウトを採用します。

2点目:パッケージ名に自分の名前を入れる

リンク先のガイドでは、名前の衝突を避けるために自分の名前を入れることが推奨されています。GitHubからインストールする際に有効らしいです。だだし、プロジェクト名とパッケージ名を一致させることを推奨する記事もあります(むしろこちらが多数派のようです)。

SBO式のPythonプロジェクト構成

まだ試行錯誤中なので、あくまで現時点の方針です。

親パッケージ名は、relib_sboとします(Revit用のlibraryの意)。この直下に、cmn(共通用)やroad/rail等(それぞれの分野専用)のパッケージフォルダを作ります。

Dynamoで読み取るための実行用ディレクトリ名は、dynamo_exeとします。これの場所は、パッケージ配下ではなく、プロジェクトの直下とします。

プロジェクトの構成

  • プロジェクト:pipで指定
  • Dynamo用ディレクトリ:Dynamoで指定する実行用ファイルを格納するディレクトリ
  • srcディレクトリ:ソースコードを格納するディレクトリ
  • 親パッケージ:importで指定(全体構成図でいう自作パッケージ)
  • 子パッケージ:cmn(共通用)やroad/rail(各専門分野用)を用意する
  • family.py等:関数やクラスを記述するPythonファイル(モジュール)

ディレクトリやパッケージの作成方法

  • プロジェクトで右クリック
  • 新規をクリック
  • 作成したいものをクリック

Pycharmのインストール&日本語化の手順

この環境に興味を持たれた方は、ぜひ試してみてください。インストール方法等を紹介します。

STEP
Pycharmをダウンロード

(1)https://www.jetbrains.com/ja-jp/pycharm/にアクセスし、ダウンロードボタンを押します。

(2)ページが変わったら、Pycharm Community Editionをダウンロードします。こちらは無料です。Professionalは有料です。

STEP
exeを実行

ダウンロードしたexeファイルを実行します。

初期設定のままインストールで良いと思います。

STEP
日本語化

簡単に日本語化ができます。

(1)Pluginsを選択

(2)検索窓にjapaneseと入力

(3)日本語言語パックのInstallボタンを押す

(4)インストール後、Pycharmを再起動

オートコンプリート

エディタ使用時の最大の欠点は、初期設定のままではオートコンプリートが効かないことかもしれません。この回避策を紹介します。参考にした元ネタのリンクです。こちらは、VS Codeでの方法が示されているようです(試したことはありません)。

https://forum.dynamobim.com/t/add-dll-reference-to-get-the-intellisense/12829

Dynamo Forumです。
STEP
新しいプロジェクトを作成

既にプロジェクトを作成済みであれば、飛ばしてください。

(1)新しいプロジェクトをクリック

(2)プロジェクトの名前を入力

(3)プロジェクトの場所を選択

(4)Pythonバージョンを選択

Revit2024はPython3.9のため、Pycharmでも3.9をインストールしました。一致させる必要はありません。

(5)作成をクリック

(6)参考—RevitのPythonバージョン確認方法—

Python ScriptノードでOUT = sys.versionと入力し、実行すると表示されます。

STEP
ironpython-stubsのURLを取得

https://github.com/gtalarico/ironpython-stubsにアクセスします。

(1)Codeをクリック

(2)URLをコピー

STEP
クローンを作成

Pycharmの操作です。

(1)メニューを選択

(2)VCSを選択

(3)バージョン管理から取得をクリック

(4)STEP2で取得したURLを張り付け

(5)stubsを保存する場所を指定

(6)Gitがインストールされていない場合は、ここでインストール

(7)クローンをクリック

(8)新しいプロジェクトが立ち上がります

STEP
パスの追加

引き続きPycharmの操作です。

(1)メニューを選択

(2)設定をクリック

(3)プロジェクト内のPythonインタープリターをクリック

(4)枠をクリック

(5)すべて表示をクリック

(6)ステップ1でインストールしたPythonを選択(アイコンにvがついていない方です)

(7)ツリーのようなアイコンをクリック

(8)+をクリック

(9)STEP3で作成したクローンのstubsフォルダを選択

(10)何回かOKボタンを押して終わり

これでPycharmでもオートコンプリートが効くようになります。

最後に

以上で開発環境の紹介は終わりです。今後紹介する解説記事は、この環境を前提として話をします。

初めてPycharmに触れたときは感動しました。VS Codeもそうなのかもしれませんが、最近のエディタってすごいですね。非効率な記述をしていると指摘をくれたりします。将来的には、GitHub Copilotを試してみたいと思っています。

ディレクトリ構成は、現在進行形で試行錯誤中です。これまでは深く考えずに作っていました。もっと良い方法が見つかったら報告します!

コメント(承認後に表示されます。メールアドレスは表示されません)

コメントする

目次