[S0041] 結果プロットの同時表示を設定する

結果の同時表示機能では、1画面に複数の分布量の結果プロットを同時に表示することができます。部品ごとに異なる物理量や、物理量の異なる成分をプロットし相関を把握するなどに利用できます。作成時にはまずそれぞれのプロット定義を作成した後で、同時表示定義を作成します。
このスクリプトでは、コンタープロット、ベクトルプロット、フラックスラインを作成し、3つの表示形式を同時に表示するように設定します。

前提条件

  • スタディが1つ以上作成されていること
    このスクリプト例では、プロジェクトツリー上でアクティブな磁界解析スタディに対して実行している
    スタディに応じた結果タイプを指定すれば、磁界解析スタディ以外にも実行可能
  • コンター表示対象の部品の名前が既知であること

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

  • 結果タイプが磁束密度のフラックスラインを作成する
    描画開始タイプを面指定とし、Z軸を法線とする面を指定。この指定は3次元解析で使用可能
    ラインの太さを5.0、色を青に指定
  • 結果タイプが電流密度のコンタープロットを作成する
    表示対象部品を部品グループの"Coil"のみとする
  • 結果タイプが磁界のベクトルプロットを作成する
    矢印タイプを"コーン", スケールの色グラデーションをCMRに指定
  • 作成したプロットの同時表示を設定する
    ここまでで作成したフラックスライン、コンター、ベクトルを同時表示に設定する
  • 結果の同時表示をONにする。解析結果がある場合に実行可能
# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/

app = designer.GetApplication()

def settingCompositeResultDefinition(study, fluxLine, contour, vector):
    """結果プロットの同時表示を設定する"""
    compoResult = study.CreateCompositeResult(u"flux_cont_vec_compo_res")
    compoResult.ClearResults()
    compoResult.SetFluxLineDefinition(fluxLine)
    compoResult.SetContourDefinition(contour)
    compoResult.SetVectorDefinition(vector)

def createFluxLine(study, typeName):
    """フラックスラインを作成"""
    fluxLine = study.CreateFluxLine("mag_flux_dens")
    fluxLine.SetResultType(typeName, u"")
    fluxLine.SetFluxLineType(u"plane")
    fluxLine.SetColor(u"blue")
    fluxLine.SetOrigin(28, 28, 15)
    fluxLine.SetNormal(0, 0, 1)
    fluxLine.SetThickness(u"5")
    # 表示タイプ
    # 0:シェーディング
    # 1:隠線なし
    # 2:ワイヤフレーム
    fluxLine.SetDisplayType(0)
    return fluxLine

def createContour(study, typeName, partIdList):
    """コンタープロットを作成"""
    contour = study.CreateContour(u"contour")
    contour.SetResultType(typeName, u"")
    # The Arguments of SetResultCoordinate
    # 名称かインデックス
    # プリセット座標系の名称は言語設定に従って固定
    # インデックスはプロジェクト-モデル-座標系の下にある座標系定義から0ベースで指定
    contour.SetResultCoordinate(0)
    #contour.SetResultCoordinate(u"直交座標系(全体)")
    contour.SetDisplayAllParts(False)
    contour.RemoveAllParts()
    for partId in partIdList:
        contour.AddPart(partId)
    return contour

def createVector(study, typeName):
    """ベクトルプロットを作成"""
    vector = study.CreateVector(u"vector")
    vector.SetResultType(typeName, u"")
    vector.SetStyle(u"Cone")
    vector.SetGradient(u"CMR", u"21", True)
    vector.SetNumVectors(u"0")
    # 表示タイプ
    # 0:シェーディング
    # 1:隠線なし
    # 2:ワイヤフレーム
    vector.SetDisplayType(0)
    return vector

study = app.GetCurrentStudy()

typeName = u"MagneticFluxDensity"
fluxLine = createFluxLine(study, typeName)

typeName = u"CurrentDensity"
model = app.GetCurrentModel()
partGroup = model.GetGroupList().GetGroup(u"Coil")
partIdList = partGroup.GetPartIDs()
contour = createContour(study, typeName, partIdList)

typeName = u"MagneticFieldStrength"
vector = createVector(study, typeName)

settingCompositeResultDefinition(study, fluxLine, contour, vector)
app.View().SetCompositeView(True)  # 解析結果がない場合はエラー

Download Python source code

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

JMAG-Express Online
An engineer's diary