3次元モデルでの分布量の結果表示では、モデルを構成する各部品の表面のみが見えていますが、カット面を定義することでモデル内部の分布を確認することができます。
カット面は任意の断面で、平面または円筒面として定義することができます。
このスクリプトでは、カット面を作成しコンタープロット時に作成した面を表示するよう設定します。
前提条件
- スタディが1つ以上作成されていること
このスクリプト例では、プロジェクトツリー上でアクティブなスタディに対して実行している - 定義したコンターの表示はスタディが解析済みであること
- 設定値の単位は、作成されているモデルに設定されている単位系に従う
スクリプトにおける設定内容
- 平面カット面を作成する
法線ベクトル:(5, -5, 0)
面上の1点:(28, 28, 0) - 円筒カット面を作成する
円筒中心軸方向:(0, 0, 1)
中心軸上の1点:(0, 0, 0)
半径:13 - コンタープロットを作成する
結果のタイプに磁束密度を設定
先に作成したカット面の表示をコンター表示時に適用するよう設定 - 定義したコンター表示をONにする
# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/
app = designer.GetApplication()
def createCut(model, param):
"""カット面を作成する"""
cutList = model.GetCutList()
cutType = param[u"cutType"]
# 平面カット
if cutType == u"plane":
cutDefinition = cutList.CreateCutPlane(param[u"title"])
# 円筒カット
elif cutType == u"cylinder":
cutDefinition = cutList.CreateCutCylinder(param[u"title"])
cutDefinition.SetRadius(param[u"radius"])
nX, nY, nZ = param[u"normalXYZ"]
cutDefinition.SetNormalXYZ( nX, nY, nZ)
oX, oY, oZ = param[u"originXYZ"]
cutDefinition.SetOriginXYZ( oX, oY, oZ)
cutDefinition.SetDisplayType(param[u"displayType"])
return cutDefinition
def createContourWithCut(study, param):
"""作成したカット面を使用したコンタープロットを作成する"""
contour = study.CreateContour(param[u"title"])
contour.SetResultType(param[u"resultType"])
# The 1st argument of SetResultCoordinate
# 名称かインデックス
# プリセット座標系の名称は言語設定に従って固定
# インデックスはプロジェクト-モデル-座標系の下にある座標系定義から0ベースで指定
contour.SetResultCoordinate(param[u"resultCoordinate"])
# contour.SetResultCoordinate(u"直交座標系(全体)")
contour.SetDisplayAllParts(param[u"displayAllParts"])
cutDefNames = param[u"cutDefNames"]
for cutDefName in cutDefNames:
contour.AddCutPlane(cutDefName)
model = app.GetCurrentModel()
cutPlaneParam = {
u"cutType" : u"plane",
u"title" : u"DiagonalCut",
u"normalXYZ" : [5, -5, 0],
u"originXYZ" : [28, 28, 0],
u"displayType" : u"ShowBehind"
}
cutPlaneDef = createCut(model, cutPlaneParam)
cutCylinderParam = {
u"cutType" : u"cylinder",
u"title" : u"CylinderCut",
u"normalXYZ" : [0, 0, 1],
u"originXYZ" : [0, 0, 0],
u"radius" : 13,
u"displayType" : u"ShowOutside"
}
cutCylinderDef = createCut(model, cutCylinderParam)
study = app.GetCurrentStudy()
contourParam = {
u"title" : u"MagFluxDensContour",
u"resultType" : u"MagneticFluxDensity",
u"resultCoordinate" : 0,
u"displayAllParts" : True,
u"cutDefNames" : [ cutPlaneDef.GetName(), cutCylinderDef.GetName() ]
}
createContourWithCut(study, contourParam)
# 結果のコンター表示をON
app.View().SetContourView(True)


