> For the complete documentation index, see [llms.txt](https://eeman.gitbook.io/fields-calculator-of-maxwell/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://eeman.gitbook.io/fields-calculator-of-maxwell/si-zi-dong-hua-ying-yong/ping-mian-ci-tong-mi-du-ji-suan-liang-zi-dong-sheng-cheng/ci-tong-mi-du-zi-dong-ji-suan-bu-chong-shuo-ming.md).

# 磁通密度自動計算 - 補充說明

細心的讀者可能有注意到，在上章節的第八步，我們做了一次清除的動作，這個動作是因為如果重複創造一樣的名稱的時候，Maxwell會發生執行錯誤(如圖4-7)。但除了手動清除，有其他方法讓程式能自動順利執行嗎？

<figure><img src="/files/dZSOmk49trLmxpMoYlQo" alt="" width="563"><figcaption><p>圖4-7</p></figcaption></figure>

有的!\~\~

如下面筆者要介紹進階的功能：讓程式自動確認是否有存在相同的Named Expressions，利用這個函數，我們可以跳過上頁第八步的步驟，也不會有執行錯誤產生。

方法是利用DoesNameExpressionExists函數來判斷是否有重複的名稱，當系統判斷有重複名稱時，不執行場量運算，並利用AddWarningMessage函數跳出警告訊息。另外創建新的Named Expressions的時候，也可以用AddWarningMessage函數來做動作說明，讓程式動作更加明白清晰。

優化後的執行的結果可以參考圖4-8。

<figure><img src="/files/64blIRQB4l4vfIpxacTN" alt=""><figcaption><p>圖4-8</p></figcaption></figure>

更新的程式碼也提供給讀者參考。讀者可以比較前後程式碼的差別。

```python
// B_sheet Calculation with AutoCheck
# Script Recorded by Ansys Electronics Desktop Version 2023.1.0
# 16:20:28  Mar 16, 2023
# ----------------------------------------------
import ScriptEnv
ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")
oDesktop.RestoreWindow()
oProject = oDesktop.GetActiveProject()
oDesign = oProject.GetActiveDesign()
oModule = oDesign.GetModule("FieldsReporter")

for i in range(1,5):
    surf_name = "B_Flux_Density_A" + str(i)
    expr_name = "B_Flux_A" + str(i)
    if oModule.DoesNamedExpressionExists(expr_name):
        warning = expr_name +" is existed in Fields Calculator."
        AddWarningMessage(warning)
    else:
        warning = "Create " + expr_name + " in the field calculator."
        AddWarningMessage(warning)
        oModule.EnterQty("B")
        oModule.EnterSurf(surf_name)
        oModule.CalcOp("NormalComponent")
        oModule.CalcOp("Integrate")
        oModule.EnterScalar(1)
        oModule.EnterSurf(surf_name)
        oModule.CalcOp("Integrate")
        oModule.CalcOp("/")   
        oModule.AddNamedExpression(expr_name, "Fields")
ScriptEnv.Shutdown()
```

* &#x20;i`mport ScriptEnv`，ScriptEnv.py 執行作業系統的確認與定義AEDT scripts的functions使用。
* `ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")`, 是ScriptEnv.py的其中function。他會啟動載入AEDT。
* `ScriptEnv.Shutdown()`,這會停止ScriptEnv.py，假如有多個scripts，建議把它放在script的最下方。

##
