[S0060] 面指定で3次元モデルのフラックスラインを作成する

フラックスラインを表示することで、解析によって得られた磁束等の流れを線で可視化することができます。
コンター表示やベクトル表示と組み合わせて利用でき、密度の大きさだけでなく流れの方向も把握できます。
3次元モデルでは、指定した点を通過するフラックスラインの描画の他、面を通過するフラックスラインを描画することができます。
このスクリプトでは、面を通過するフラックスライン描画を設定します。

前提条件

  • 3次元の磁界、トランス、熱、電界解析スタディのいずれか1つ以上作成されていること
    描画開始タイプの指定は3次元でのフラックスライン表示のための設定
    このスクリプト例では、プロジェクトツリー上でアクティブな磁界解析スタディに対して実行している
  • 描画対象とする部品セットのタイトルが既知であること
  • 設定値の単位は、作成されているモデルに設定されている単位系に従う
  • 定義したフラックスラインの表示はスタディが解析済みであること

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

  • 指定された名称の部品セットを取得する
    セット内の部品をフラックスラインの描画対象とする
  • フラックスラインを作成する。
    結果のタイプに磁束密度を設定
    描画開始タイプに面指定を設定
  • 描画開始面を定義する
    法線ベクトル:(1, 0, 0)
    面上の1点:(8, 7, 8)
    面の大きさ:幅15, 高さ15
  • 描画対象として先に取得した部品を指定する
  • 定義したフラックスライン表示をONにする
# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/

app = designer.GetApplication()

def createFluxLineFromPlane(study, fluxLineParam, planeParam):
    """面指定でフラックスラインを作成する"""
    fluxLineDef = study.CreateFluxLine(fluxLineParam[u"title"])
    fluxLineDef.SetResultType(fluxLineParam[u"resultType"])
    # 表示タイプ
    # 0 : シェーディング
    # 1 : 隠線なし
    # 2 : ワイヤフレーム
    fluxLineDef.SetDisplayType(fluxLineParam[u"displayType"])
    fluxLineDef.SetThickness(u"1.1")
    fluxLineDef.SetColor(u"red")
    fluxLineDef.SetLines(planeParam[u"lines"])
    # 描画タイプ
    # point : 点指定
    # plane : 面指定
    fluxLineDef.SetFluxLineType(u"plane")

    normalX, normalY, normalZ = planeParam[u"normal"]
    fluxLineDef.SetNormal( normalX, normalY, normalZ )

    originX, originY, originZ = planeParam[u"origin"]
    fluxLineDef.SetOrigin( originX, originY, originZ )

    plane = planeParam[u"plane"]
    useFinitePlane = plane[u"useFinite"]
    fluxLineDef.SetUseFinitePlane(useFinitePlane)
    if useFinitePlane:
        fluxLineDef.SetPlaneWidth(plane[u"width"])
        fluxLineDef.SetPlaneHeight(plane[u"height"])

    seed = planeParam[u"seed"]
    useAllParts = seed[u"allParts"]
    fluxLineDef.SetSeedLineAllParts(useAllParts)
    if not useAllParts:
        # 部品のIDを指定
        partIdList = seed[u"partIdList"]
        for partId in partIdList:
            fluxLineDef.AddPart(partId)

model = app.GetCurrentModel()
study = app.GetCurrentStudy()
partSet = model.GetSetList().GetSet(u"Rotor")
fluxLineParam = {
    u"title" : u"MagFluxDens",
    u"resultType" : u"MagneticFluxDensity",
    u"displayType" : 2
}
planeParam = {
    u"lines" : u"22",
    u"normal" : (1, 0, 0),
    u"origin" : (8, 7, 8),
    u"plane" : {
        u"useFinite" : True,
        u"width"     : 15,
        u"height"    : 15,
    },
    u"seed" : {
        u"allParts"   : False,
        u"partIdList" : partSet.GetIDs(),
    },
}

createFluxLineFromPlane(study, fluxLineParam, planeParam)

# フラックスラインの表示をON
app.View().SetFluxLineView(True)

Download Python source code

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

JMAG-Express Online
An engineer's diary