JMAG-Designerの形状エディタでは、2次元、3次元の形状の作成を行うことができます。
3次元形状の作成の手順として、まずパートを作成し、平面を指定して2次元のスケッチを作成します。
スケッチにて基本図形を描き、基本図形の集合で閉じられた領域を定義します。
その後、パートにてスケッチの押し出しを定義しソリッドとするのが基本的な作成方法です。
このスクリプトでは、長方形の領域を定義した後に押し出しを定義して直方体のソリッドを作成します。
前提条件
なし
スクリプトにおける設定内容
- パートを作成し編集可能ステータスとする
- XY平面上にスケッチを作成し、編集可能ステータスとする
- 開始点座標をX=10, Y=10とし、それぞれ+方向に指定された幅の直線を作成する
- 開始点の頂点に固定拘束を付与する
- X方向の直線には水平拘束、Y方向の直線には鉛直拘束を付与する
- 平行な2つの直線間に距離拘束を付与する
- 作成した4つの直線を選択し、領域を作成し、スケッチの編集を終了する
- 作成したスケッチを対象に押し出しを定義する
押し出しのタイプは両側とし、押し出しの高さは指定した高さの半分で設定
# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/
# Horizontal(X) Width of the Rectangular
HW = 20
# Vertical(Y) Width of the Rectangular
VW = 10
# Height(Z) of a Rectangular Prism
H = 10
def createRectangleRegion(geomDoc, sketch):
"""スケッチに1点と縦横幅を決めて長方形を作成し領域を作成する。縦幅、横幅には距離拘束を付与する"""
sketch.OpenSketch()
leftBottomX = 10
leftBottomY = 10
rightTopX = leftBottomX + HW
reghtTopY = leftBottomY + VW
bottomLine = sketch.CreateLineByLengthAngle(leftBottomX, leftBottomY, HW, 0)
startVertex = bottomLine.GetStartVertex()
refStartVertex = geomDoc.CreateReferenceFromItem(startVertex)
# fixture: 固定拘束
sketch.CreateMonoConstraint(u"fixture", refStartVertex)
refBottomLine = geomDoc.CreateReferenceFromItem(bottomLine)
leftLine = sketch.CreateLineByLengthAngle(leftBottomX, leftBottomY, VW, 90)
refLeftLine = geomDoc.CreateReferenceFromItem(leftLine)
topLine = sketch.CreateLineByLengthAngle(leftBottomX, reghtTopY, HW, 0)
refTopLine = geomDoc.CreateReferenceFromItem(topLine)
rightLine = sketch.CreateLineByLengthAngle(rightTopX, leftBottomY, VW, 90)
refRightLine = geomDoc.CreateReferenceFromItem(rightLine)
# horizontality: 水平拘束
# verticality: 鉛直拘束
# distance: 距離拘束
sketch.CreateMonoConstraint(u"horizontality", refBottomLine)
sketch.CreateMonoConstraint(u"horizontality", refTopLine)
sketch.CreateMonoConstraint(u"verticality", refLeftLine)
sketch.CreateMonoConstraint(u"verticality", refRightLine)
VWDistanceConstraint = sketch.CreateBiConstraint("distance", refBottomLine, refTopLine)
VWDistanceConstraint.SetName(u"VW")
HWDistanceConstraint = sketch.CreateBiConstraint("distance", refLeftLine, refRightLine)
HWDistanceConstraint.SetName(u"HW")
selection = geomDoc.GetSelection()
selection.Clear()
selection.Add(bottomLine)
selection.Add(leftLine)
selection.Add(topLine)
selection.Add(rightLine)
sketch.CreateRegions()
selection.Clear()
sketch.CloseSketch()
def createRectangularPrismPart(geomDoc):
"""パートとして、XY面に長方形領域を作成し、押し出しで直方体を作成する"""
assembly = geomDoc.GetAssembly()
rectPart = assembly.CreatePart()
rectPart.SetName(u"RectangularPrism")
rectPart.SetProperty(u"Color", u"navy")
rectPart.OpenPart()
refPlane = rectPart.GetPlaneXY()
# XY平面上にスケッチを作成
sketchOnXYPlane = rectPart.CreateSketch(refPlane)
createRectangleRegion(geomDoc, sketchOnXYPlane)
extrude = rectPart.CreateExtrudeSolid(sketchOnXYPlane, H/2)
# 押し出しタイプを[両側]に指定
extrude.SetTypeByName(u"BothSides")
rectPart.ClosePart()
app = designer.GetApplication()
geomApp = app.CreateGeometryEditor()
geomDoc = geomApp.GetDocument()
createRectangularPrismPart(geomDoc)


