[S8475] 結果の電流点列を別のスタディに設定するスクリプト

 

結果の電流点列を別のスタディに設定するスクリプトを例示します。

app = designer.GetApplication()

# 結果を抽出したいFEMコイル素子名と電流値を設定したい電流源素子名を指定

coil_definitions = [(u"U-Phase coil", u"I1"),(u"V-Phase coil", "I2"),(u"W-Phase coil", u"I3")]

# 1つ目のスタディの電流の結果テーブルを取得

objData = app.GetModel(0).GetStudy(0).GetResultTable().GetData(u"LineCurrent")

# 各FEMコイルの結果を個別に取得し、電流源素子に設定する

for Name, Comp in coil_definitions:

   found_index = -1

   # コイルの列インデックスを検索

   for i in range(objData.GetCols()):

       # 結果テーブルの列の名前を取得

       header_row = objData.GetColName(i)

       if Name in header_row:

           found_index = i

           break  # インデックスが見つかったのでループを抜ける

   if found_index != -1:

       # FEMコイルの結果が格納される一時的なリストを作成

       Current_data = []

       # 点列を作成

       for row_index in range(objData.GetRows()):

           time_value = objData.GetTime(row_index)

           current_value = objData.GetValue(row_index, found_index)

           Current_data.append([time_value, current_value])

       # 取得したデータを2つ目のスタディの指定した電流源素子に設定

       # 回路素子の数を取得

       for i in range(app.GetModel(0).GetStudy(1).GetCircuit().NumComponents ()):

           found_name = -1

           # 回路素子の名前を取得

           Comp_name = app.GetModel(0).GetStudy(1).GetCircuit().GetComponent(i).GetName()

           if Comp == Comp_name:

               found_name = i

               break  # 指定した名前の回路素子が見つかったのでループを抜ける

       if found_name != -1:

           # 電流源素子に点列を設定

           app.GetModel(0).GetStudy(1).GetCircuit().GetComponent(Comp).SetTable("Time", Current_data)

       else:

           # 電流源素子が見つからなかった場合にメッセージを出力

           print(f"エラー: '{Comp}' に一致する回路素子が見つかりませんでした。")

   else:

       # FEMコイルが見つからなかった場合にメッセージを出力

       print(f"エラー: '{Name}' に一致するFEMコイルの結果が見つかりませんでした。")

ファイルご利用の注意点

JMAGスクリプトライブラリをご利用されるに際し、以下の利用規約をよくお読みいただき、ご同意の上ご利用下さるようお願い申し上げます。