n番目に大きいトルク勾配を取得するスクリプトを例示します。
※ステップコントロールの設定で、[等間隔]を使用した、全ケース計算済みのデータを使用
app = designer.GetApplication()
# 何番目に大きいトルク勾配を得たいか、指定して下さい。
n = 2
# スタディの[運動:回転]条件につけているタイトルを入れてください。
ConditionName = u"Rotor"
app = designer.GetApplication()
# 現在開いているスタディを取得
study = app.GetCurrentStudy()
# 現在のスタディのケース数を取得する
num_cases = study.GetDesignTable().NumCases()
# ケース毎に n 番目に大きいトルク勾配を取得
for case_id in range(1, num_cases + 1):
# 指定したケースを表示
app.View().SetCurrentCase(case_id)
# ステップコントロールから ステップ数を取得
num_of_step = study.GetStep().GetValue(u"Step")
# ステップコントロールから終了時間を取得
t_end = study.GetStep().GetValue(u"EndPoint")
# ステップコントロールから分割数 を取得
num_of_division = study.GetStep().GetValue(u"StepDivision")
# トルク勾配を格納するリスト
trq_grad = []
# [運動:回転]条件から回転数(rpm)を読み取る
rpm = study.GetCondition(ConditionName).GetValue(u"AngularVelocity")
# 1ステップあたりの時間刻みを算出
delta_t = t_end / num_of_division
# 1ステップあたりの回転量(deg)を算出
delta_deg_per_step = 360 * (rpm / 60) * delta_t
# トルクの結果を取得
trq_data_set = study.GetDataSet("Torque", case_id)
# ステップごとにトルク勾配(N・m/deg)の絶対値を計算し、配列に格納
for row in range(int(num_of_step) - 1):
trq_grad_value = abs(trq_data_set.GetValue(row + 1, 1) - trq_data_set.GetValue(row, 1)) / delta_deg_per_step
trq_grad.append(trq_grad_value)
# トルク勾配を降順に並べ替え
trq_grad.sort(reverse=True)
# 降順に並べ替えた配列から、n番目に大きいトルク勾配を取得
if n > 0 and n <= len(trq_grad):
target_trq_grad = trq_grad[n - 1]
study.SetUserResponseVariable("TrqGradient", case_id - 1, target_trq_grad)# 応答値グラフのオブジェクトを取得
defn = study.CreateParametricGraphDefinition()
# グラフの名前を設定
defn.SetParameter(u"name", u"TrqGradient")
# X軸のデータセットを指定
defn.SetParameter(u"xaxis", u"Case Index")
# Y軸のデータセットを指定
defn.SetParameter(u"yaxis", u"TrqGradient")
# グラフの作成
defn.CreateParametricGraph()
# グラフを表示
app.GetDataManager().Show(u"TrqGradient")


