ビーム形状は線状の体積を持たないソリッドです。
解析においては構造解析で使用したり、磁界解析にて導体として利用できます。
形状エディタではスケッチの基本図形をビーム化できます。
このスクリプトでは、直線のビームを作成します。
前提条件
- ビームの開始座標及び長さは、方程式により設定する
スクリプトにおける設定内容
- ビームの開始座標及び長さを方程式として登録する
- XY平面をZ軸方向にオフセットした基準平面を作成し、この平面にスケッチを作成する
Z軸方向のオフセット量に開始座標z成分の変数を設定する - 指定した開始座標を基準として、ビームの長さを表すY軸方向の直線をXY平面上に作成し、拘束を付与する
- 作成した直線をビーム化しビーム形状を作成する
# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/
app = designer.GetApplication()
geomApp = app.CreateGeometryEditor()
geomDoc = geomApp.GetDocument()
# 寸法パラメータ
BeamLength = 100
BeamStartX = 0
BeamStartY = 0
BeamStartZ = 0
# 方程式名
EqLength = u"length"
EqStartX = u"start_x"
EqStartY = u"start_y"
EqStartZ = u"start_z"
def createNewPart():
"""新しいPartを作成し、編集可能な状態で開く"""
assm = geomDoc.GetAssembly()
part = assm.CreatePart()
part.OpenPart()
return part
def setupEquation(equation, expression):
"""DesignTable上の方程式の基本設定を行う"""
# The argument of SetType
# 0: 値
# 1: 式
equation.SetType(0)
equation.SetExpression(str(expression))
def createBeamEquations():
"""ビームの開始座標と長さを方程式として登録する"""
designTable = geomDoc.GetDesignTable()
equationDataList = [
(EqLength, BeamLength),
(EqStartX, BeamStartX),
(EqStartY, BeamStartY),
(EqStartZ, BeamStartZ),
]
designTable.EditStart()
for equationName, expression in equationDataList:
designTable.AddEquation(equationName)
equation = designTable.GetEquation(equationName)
setupEquation(equation, expression)
designTable.EditEnd()
def createOffsetXYPlane(part):
"""start_zでオフセットしたXY平面を作成する"""
refXYPlane = part.GetPlaneXY()
offsetPlane = part.CreateReferencePlane()
offsetPlane.SetTypeByString(u"Distance")
offsetPlane.SetPropertyByReference(u"Plane", refXYPlane)
offsetPlane.SetProperty(u"Distance", EqStartZ)
return offsetPlane
def createSketchOnBeamPlane(part):
"""start_zでオフセットしたXY平面上にスケッチを作成する"""
offsetPlane = createOffsetXYPlane(part)
offsetPlaneRef = geomDoc.CreateReferenceFromItem(offsetPlane)
sketch = part.CreateSketch(offsetPlaneRef)
return sketch
def setConstraintExpression(constraint, propertyName, equationName):
"""拘束寸法に方程式名を設定する"""
constraint.SetProperty(propertyName, equationName)
def getDistanceExpressionFromSignedValue(equationName, value):
"""符号付き座標値から、距離拘束に使用する正の式を返す"""
if value < 0:
return u"-" + equationName
return equationName
def drawBaseShapeForBeam(sketch, length):
"""ビームの基準線を作成し、開始位置と長さを拘束する"""
sketch.OpenSketch()
# ビームの開始点と終了点
startVertex = sketch.CreateVertex(BeamStartX, BeamStartY)
startRef = geomDoc.CreateReferenceFromItem(startVertex)
endVertex = sketch.CreateVertex(BeamStartX, BeamStartY + length)
endRef = geomDoc.CreateReferenceFromItem(endVertex)
# Y軸方向のビーム基準線
beamLine = sketch.CreateLine(
BeamStartX,
BeamStartY,
BeamStartX,
BeamStartY + length
)
beamLineRef = geomDoc.CreateReferenceFromItem(beamLine)
sketch.CreateMonoConstraint(u"verticality", beamLineRef)
# ビームの長さを方程式で拘束する
lengthConstraint = sketch.CreateBiConstraint(u"distance", startRef, endRef)
setConstraintExpression(lengthConstraint, u"Distance", EqLength)
# ビーム開始点のX位置を方程式で拘束する
startXConstraint = sketch.CreateMonoConstraint(u"distancefromyaxis", startRef)
startXDistanceExpression = getDistanceExpressionFromSignedValue(EqStartX, BeamStartX)
setConstraintExpression(startXConstraint, u"Distance", startXDistanceExpression)
# ビーム開始点のY位置を方程式で拘束する
startYConstraint = sketch.CreateMonoConstraint(u"distancefromxaxis", startRef)
startYDistanceExpression = getDistanceExpressionFromSignedValue(EqStartY, BeamStartY)
setConstraintExpression(startYConstraint, u"Distance", startYDistanceExpression)
sketch.CloseSketch()
def createBeamFromSketch(part, sketch):
"""スケッチ上の直線からビーム形状を作成する"""
beam = part.CreateMakeBeam(sketch)
return beam
def createBeamPart(part):
"""Part内に方程式付きのビーム形状を作成する"""
sketch = createSketchOnBeamPlane(part)
drawBaseShapeForBeam(sketch, BeamLength)
createBeamFromSketch(part, sketch)
def main():
"""方程式付きのビーム形状を持つPartを作成する"""
createBeamEquations()
part = createNewPart()
createBeamPart(part)
part.ClosePart()
main()


