🐷

VectorWorksのスクリプトのダイアログでドロップダウンの表示及び、要素を追加する方法

2025/02/21に公開

VectorWorksのPythonスクリプトにおいて、ダイアログ内にドロップダウンメニューを表示し、選択肢を追加する方法を解説します。特に、vs.RunLayoutDialogNのコールバック関数内で選択肢を追加する際のポイントを説明します。

1. ドロップダウンの作成

まず、ダイアログ内にドロップダウンメニューを作成します。以下のコードでは、vs.CreatePullDownMenuを使用してドロップダウンを作成しています。

vs.CreatePullDownMenu(dialogID, 8, 10)

ここで、dialogIDはダイアログのID、8はドロップダウンのアイテムID、10は幅を指定しています。

2. コールバック関数での選択肢追加

ドロップダウンに選択肢を追加する処理は、vs.RunLayoutDialogNのコールバック関数内で行います。以下のコードでは、item12255のときに選択肢を追加しています。

def CallBack(item, data):
    global dialog_values
    if item == 12255:  # VectorWorksの公式な初期化定数を使用
        vs.AddChoice(dialogID, 8, 'A', 0)
        vs.AddChoice(dialogID, 8, 'B', 1)

ポイント1: item == 12255の条件

item12255のときは、ダイアログが初期化されるタイミングです。このタイミングで選択肢を追加することで、コールバックが呼び出されるたびに選択肢が重複して追加されるのを防ぎます。

ポイント2: vs.AddChoiceの使用

vs.AddChoiceを使用して、ドロップダウンに選択肢を追加します。ここでは、'A''B'の2つの選択肢を追加しています。第4引数には、選択肢のインデックスを指定します。

3. ダイアログの表示

最後に、vs.RunLayoutDialogNを使用してダイアログを表示します。この関数は、コールバック関数を引数として受け取り、ユーザーの操作に応じてコールバックを呼び出します。

vs.RunLayoutDialogN(dialogID, CallBack, False)

まとめ

vs.RunLayoutDialogNのコールバック関数内でitem == 12255の条件を使って選択肢を追加することで、ダイアログの初期化時にのみ選択肢が追加されるように制御できます。これにより、コールバックが呼び出されるたびに選択肢が重複して追加されるのを防ぐことができます。

以上、ドロップダウンの表示と選択肢の追加方法についての解説でした。

Discussion