回路エディタ上で作成した複数の回路素子をひとつの回路ブロックとしてまとめ、マクロ素子(サブ回路)として回路エディタのライブラリに登録できます。
ライブラリに登録されたマクロ素子はPCのユーザーごとに保存され、他の解析で再利用することができます。
よく使用する回路構成や複雑な回路構成を部品化し、回路図を簡潔に表現したり複数プロジェクトで再利用できます。
このスクリプトでは、作成済みの回路をマクロ素子として登録します。
前提条件
- 回路を持つスタディが1つ以上作成されていること
- 回路が作成済みで、マクロ素子としたい回路が配置されていること
このスクリプト例では、プロジェクトツリー上でアクティブなスタディの回路に対して実行している - マクロ素子作成に必要な外部端子が1つ以上配置されていること
スクリプトにおける設定内容
- 回路上に外部端子が1つ以上配置されているかを確認する
外部端子が存在しない場合はエラーとする - 回路上の全素子の名称を収集する
- マクロ素子を作成する
回路上の素子すべてを含むマクロ素子を作成
マクロ素子は回路エディタのライブラリに保存される
保存フォルダ"SubCircuit"はカスタムマクロ素子保存場所の最上位を示す
# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/
app = designer.GetApplication()
def hasExternalTerminal(circuit):
"""回路の中に外部端子が存在するか確認する。"""
for i in range(circuit.NumInstances()):
instance = circuit.GetComponentInstance(i)
typeName = instance.GetScriptTypeName()
if typeName in (u"LeftExternalTerminal", u"RightExternalTerminal"):
return True
return False
def getComponentNames(circuit):
"""すべての回路素子の名称を取得する。"""
componentNames = []
for i in range(circuit.NumComponents()):
component = circuit.GetComponent(i)
componentNames.append(component.GetName())
return componentNames
def createMacro(circuit, componentNames, param):
"""指定した回路素子名からマクロ素子を作成する"""
macro = circuit.CreateMacro(param[u"title"])
for componentName in componentNames:
macro.AddInstance(componentName)
macro.SetDescription(param[u"description"])
macro.SetFolder(u"SubCircuit")
macro.Create()
def main():
study = app.GetCurrentStudy()
circuit = study.GetCircuit()
if not hasExternalTerminal(circuit):
print(u"マクロ素子作成では、左外部端子素子または右外部端子素子を少なくとも1つ以上含めてください。")
return
componentNames = getComponentNames(circuit)
macroParam = {
u"title" : u"MacroElem",
u"description" : u"Macro element T1Set"
}
createMacro(circuit, componentNames, macroParam)
main()


