[S0050] 円弧のセクショングラフを作成し、計算結果を取得する

セクショングラフはモデル空間に指定したセクションに沿って物理量の分布を抽出し、位置に対するグラフとして表示できます。
セクションは直線または円弧として定義でき、評価したい方向に応じて使い分けます。
セクショングラフの設定項目が複雑なため、スクリプトからの定義においてはいくつかの注意点があります。
直線か円弧かはAPIのコールで使い分けます。このスクリプトが円弧のセクションになるのは、SetArcExpressionをコールしているためです。SetLineExpressionをコールすれば直線となります。最後にコールされた方が有効です。
セクションとするか任意領域とするかは、SetAirRegionFlagで使い分けます。任意領域で作成する場合は結果のタイプを決めた後に引数をTrueとしてコールします。
パラメータ数が多く相互依存関係もあるため、最後にBuildをコールする必要があります。これにより設定を反映したセクショングラフが作成されます。
このスクリプトでは、円弧上の物理量の値を表示するセクショングラフを作成します。

前提条件

  • スタディが1つ以上作成されていること
    このスクリプト例では、プロジェクトツリー上でアクティブな構造静解析のスタディに対して実行している

スクリプトにおける設定内容

  • セクショングラフを作成する
    結果のタイプはミーゼス応力を指定する
    横軸に角度を指定する
    セクショングラフを描く円弧を中心軸方向、中心軸が通る点、始点、半径、描画角度を指定し定義する。
  • セクショングラフをビルドする
  • 解析結果が存在する場合、作成したセクショングラフの数値テーブルを表示する
# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/

app = designer.GetApplication()
graphNm = u"targetSectionArc001"

def createArcGraphForSection(study, params):
    """セクションの新規円弧グラフを作成する"""
    sectionGraph = study.CreateSectionGraph(graphNm)
    sectionGraph.SetResultType(params["resultType"], params["sourceTitle"])
    sectionGraph.SetAbscissa(params["abscissa"])
    sectionGraph.SetArcExpression(params["arcExpression"]["originX"], params["arcExpression"]["originY"], params["arcExpression"]["originZ"],
                                  params["arcExpression"]["axisX"],   params["arcExpression"]["axisY"],   params["arcExpression"]["axisZ"],
                                  params["arcExpression"]["startX"],  params["arcExpression"]["startY"],  params["arcExpression"]["startZ"],
                                  params["arcExpression"]["angle"],   params["arcExpression"]["radius"])
    sectionGraph.Build()
    return sectionGraph

def outputResultSet(sectionGraph):
    """セクションのデータセットをログ出力"""
    dataSet = sectionGraph.GetDataSet()
    header = f"{dataSet.GetXAxisTitle()}, {dataSet.GetYAxisTitle()}"
    print(header)
    for i in range(dataSet.GetRows()):
        msg = f"{dataSet.GetValue(i, 0):13.10f}, {dataSet.GetValue(i, 1):13.10f}"
        print(msg)

study = app.GetCurrentStudy()
params = {
    "resultType"    : u"MisesStress",
    "sourceTitle"   : u"",
    "abscissa"      : u"angle",
    "arcExpression" : { "originX" : u"0",  "originY" : u"0", "originZ" : u"5",
                        "axisX"   : u"0",  "axisY"   : u"0", "axisZ"   : u"1",
                        "startX"  : u"26", "startY"  : u"0", "startZ"  : u"5",
                        "angle"   : u"90", "radius"  : u"26" },
}
sectionGraph = createArcGraphForSection(study, params)
if study.HasResult():
    outputResultSet(sectionGraph)

Download Python source code

ファイルご利用の注意点
JMAGスクリプトライブラリをご利用されるに際し、以下をよくお読みいただき、ご同意の上ご利用くださるようお願い申し上げます。
絞込み検索
  • カテゴリー 一覧

JMAG-Express Online
An engineer's diary