Dynamo :: Pythonノードの注意点 for GH User
最近Dynamoもちょっとずつ使い始めてみました。
DynamoではPythonのノードがデフォルトで備わっているので、試しに使ってみたところ、いくつかGrasshopperと仕様が異なる点がありました。
今回は、Grasshopperユーザーの視点でDynamoの[Python Script]ノードを使用した際の注意点についてまとめました。
【2018年10月15日 一部修正】
注意点
別のソフトなので仕様が異なるのは当然ですが、Dynamoの[Python Script]ノードは、Grasshopperの[Python Script]コンポーネントと比較すると、以下の点が大きく異なる部分かと思います。
- 出力ポートが1個
- 入出力の変数名が変更不可
- モジュールのインポート方法
- インデントの表示なし
スクリプト編集画面で実行機能なし→ Dynamo2.0で実行機能追加
それぞれ見ていきましょう。
出力先が1個
まずは、出力先の数についてです。こちらが一番大きく異なる点かと思います。
[Python Script]ノードの入力側のポートは数を増やすことができますが、出力側のポートは1つだけとなっています。
【2018年10月15日 修正】
したがって、Grasshopperよりは使い方が限定されそうです。
出力側のポートは1つですが、OUT = [list1, list2]
のようにリストにしておけば、ネストされたリストを出力することが可能です。
その先でネストしたリストを分けて、まとめてカスタムノードにすれば、実質出力ポートを複数化できます。
入出力名が変更不可
Grasshopperでは入出力側の名前を変更できます。
Dynamoでは入出力名は“IN”と”OUT”に固定されるので、名前はスクリプト内で定義するのが一般的なようです。
ワークスペース上で、名前が表示されるようにするには、下図のようにカスタムノードを作る必要があります。
カスタムノードの中身
[Input]と[Output]に名前を入力すると、カスタムノードに表記することができます。
モジュールのインポート
Pythonの標準モジュールは、通常”import 〇〇”で使用可能ですが、
実際にimportしてみると、
このように警告が出てしまいます。
Dynamoの場合、2行書き足す必要があるようです。
書き足すのは、以下の通り。
import sys
sys.path.append("C:\Program Files (x86)\IronPython 2.7\Lib")
append(“”)内にライブラリの格納場所を指定すればOKです。
インデント表示
Dynamoのスクリプト編集画面では、インデントが表示されません。
ちょっと編集が行いづらそうですが、タブで入力した場合4つひとまとまりになるので、基本はタブでインデントを入力するのが良さそうですね。
ちなみにif〜:やfor〜:等で改行した際も、自動でインデントが入力されないのでご注意を。
スクリプト実行
【2018年10月15日 修正】
Dynamoの[Python Script]ノードのスクリプト編集画面では、編集画面内でスクリプトを実行する機能がありません。
したがって、スクリプトが正しいかは[変更を適用]で一旦画面を閉じてからでないとわかりません。
場合によってはテキストエディタと併用してもいいかもしれませんね。
Dynamo2.0では、[実行]ボタンが実装されているため、画面を閉じる必要がなくなりました。
終わりに
普段Grasshopperを使う側の視点で[Python Script]ノードをみてみました。
他にも、型を設定しなくて良かったり、ライブラリの種類も色々ありそうなので、今後掘り下げていければと思います。
参考にしてみてくださいね。
使用した主なノード
- [Python Script] (Core > Scripting > Python Script)