# Copyright (c) 2026 JSOL CORPORATION # # This script is released under the MIT License. # See the full license text at: # https://www.jmag-international.com/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): """Create a region by drawing a rectangle with a point, height and width in the sketch. And apply distance constraints to the height and width""" 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: Constraint(Fixation) 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: Constraint(Horizontality) # verticality: Constraint(Verticality) # distance: Constraint(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): """As a part, create a rectangular region on the XY plane and create a rectangular prism by extrusion.""" assembly = geomDoc.GetAssembly() rectPart = assembly.CreatePart() rectPart.SetName(u"RectangularPrism") rectPart.SetProperty(u"Color", u"navy") rectPart.OpenPart() refPlane = rectPart.GetPlaneXY() # Create a sketch on the XY Plane sketchOnXYPlane = rectPart.CreateSketch(refPlane) createRectangleRegion(geomDoc, sketchOnXYPlane) extrude = rectPart.CreateExtrudeSolid(sketchOnXYPlane, H/2) # Set extrude type to [Both Sides] extrude.SetTypeByName(u"BothSides") rectPart.ClosePart() app = designer.GetApplication() geomApp = app.CreateGeometryEditor() geomDoc = geomApp.GetDocument() createRectangularPrismPart(geomDoc)