閾値以上の節点力を持つ節点の結果テーブルを出力するスクリプトを例示します。
# 出力するファイルを指定 output_path = r"D:/test.csv" # 閾値の設定 threshold_value = 10 app = designer.GetApplication() # 表示しているスタディを取得 study = app.GetCurrentStudy() # 節点力の時刻歴を取得するためのプローブを作成 objProbe = study.CreateProbe(u"Check") # プローブの自動更新を行うかのフラグ(0:OFF、1:ON) objProbe.SetAutoRecalculate(0) # 結果のタイプ objProbe.SetResultType(u"NodalForce", u"") # 参照座標系 objProbe.SetResultCoordinate(u"Global Rectangular") # 評価座標系 objProbe.SetLocationCoordinate(u"Global Rectangular") # 成分 objProbe.SetComponent(u"Absolute") # [タイプ]フラグ(0:座標指定、1:節点ID指定) objProbe.SetProbeType(1) # すべての測定位置を削除 objProbe.ClearPoints() # 節点を選択するための準備 view = app.View() # メッシュ表示 view.ShowMesh() # 節点選択モードに変更 view.SelectElementVertex() # 選択を解除 view.ClearSelect() # 全節点数を取得 num_vertices = study.GetReport().NumVertices() # 閾値を超えた節点を格納するリスト exceeding_nodes = [] for node_id in range(1, num_vertices + 1): # プローブに節点番号を設定 objProbe.SetId(0, node_id) # プローブのデータの更新 objProbe.Build() # プローブの取得結果の点列データ(DataSet)を取得 objData = objProbe.GetDataSet() objProbe.SetAutoRecalculate(0) flag_exceed = False # 時刻のループ for val in objData.GetColumn(1): if val >= threshold_value: flag_exceed = True break # 閾値を超えたらループを抜ける # 閾値を超えた節点を選択リストに追加 if flag_exceed: exceeding_nodes.append(node_id) # ビュー上で節点を選択 view.SelectByID(node_id) if exceeding_nodes: # 選択された節点の結果テーブルを作成 parameter = study.CreateTableDefinition() # 解析結果タイプ parameter.SetResultType(u"NodalForce") # 参照座標系 parameter.SetCoordinate(u"Global Rectangular") # 成分 parameter.SetComponent(u"Absolute") # ステップ parameter.SetAllSteps() # 最大/最小値を表示する parameter.SetIsShownMinMaxInfo(False) # 位置情報を表示する parameter.SetIsShownPositionInfo(True) # ファイルを出力する study.ExportTable(parameter, output_path, 0) else: print(u"閾値を超えた節点は見つかりませんでした。")


