# 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/ def getCircuitInStudy(study): """Retrieve the Circuit object from the study.if it does not exist, create a new circuit""" if study.HasCircuit(): circuit = study.GetCircuit() else: circuit = study.CreateCircuit() return circuit def createWindingThreePhaseCoil(circuit, circuitCompName): """Place the three-phase coil element in the circuit""" circuitComponent = circuit.CreateComponent(u"WindingThreePhaseCoil", circuitCompName) circuit.CreateInstance(circuitCompName, 10, 2) circuitComponent.SetValue(u"ConnectionType", u"Star") circuitComponent.SetValue(u"IncludeGround", u"On") def createWindingRegionOfThreePhase(study, windingRegionName, coilRegionPartSet): """Create the winding area (shape)""" windingRegion = study.CreateWindingRegion(windingRegionName, 0) windingRegion.SetSlots(u"SLOTS") windingRegion.SetPoles(u"POLES") windingRegion.AddCoilRegion(u"Coil Region A") windingRegion.AddSet(0, coilRegionPartSet) def createWindingSettingOfThreePhase(study, windingRegionName, circuitCompName): """Create a winding configuration, associate the winding area with winding elements, and set each parameter""" windingDefinition = study.CreateWinding(u"ThreePhase", u"Three Phase") windingDefinition.SetRegion(windingRegionName) # Coil tab windingDefinition.SetInputType(u"Resistance") windingDefinition.SetWireType(u"Round") windingDefinition.SetTurns(40.5) windingDefinition.SetWireDiameter(0.5) windingDefinition.SetSlotFillFactor(71.5) windingDefinition.SetResistance(0.407) windingDefinition.SetLeakageInductanceInputType(u"Auto") windingDefinition.SetLeakageInductanceCorrectionFactor(1) # Winding tab windingDefinition.SetComponent(circuitCompName) windingDefinition.SetParallelCoils(4) windingDefinition.SetWindingScheme(u"Auto") windingDefinition.SetLayers(1) windingDefinition.SetCoilPitch(5) windingDefinition.SetPhaseOrder(u"UWV") app = designer.GetApplication() study = app.GetCurrentStudy() circuit = getCircuitInStudy(study) circuitCompName = u"Winding Three Phase Coil" createWindingThreePhaseCoil(circuit, circuitCompName) windingRegionName = u"Coil Region" set = app.GetCurrentModel().GetSetList().GetSet(u"CoilSet") createWindingRegionOfThreePhase(study, windingRegionName, set) createWindingSettingOfThreePhase(study, windingRegionName, circuitCompName)