背景
在工程设计、求解计算的过程中,往往存在大量重复性的工作,这些工作不仅耗时耗力,而且容易出错。为了提高工作效率,减少人为错误,我们希望这些重复性工作能够被计算机自动完成,从而让工程师从繁重的重复性劳动中解放出来,将更多的精力投入到创造性的工作中。
在 Windows 环境下搭建 CST Studio Suite Python 自动化测试环境的步骤,包括 Python 版本选择与安装、Jupyter Notebook 配置、环境变量设置以及 CST 库的连接验证。通过实例演示了如何在 Jupyter 中调用 CST Design Environment 创建项目、查询求解器及设置参数,旨在帮助工程师利用脚本语言实现仿真工作的自动化。

在工程设计、求解计算的过程中,往往存在大量重复性的工作,这些工作不仅耗时耗力,而且容易出错。为了提高工作效率,减少人为错误,我们希望这些重复性工作能够被计算机自动完成,从而让工程师从繁重的重复性劳动中解放出来,将更多的精力投入到创造性的工作中。
脚本是一种常用的自动化形式,它通过编写一系列的指令,让计算机或程序按照既定的顺序执行这些指令,从而完成一系列的自动化操作。
Python 是一种广泛使用的脚本语言。Jupyter Notebook 是基于网页的用于交互计算的应用程序,可以以网页的形式打开 Python 项目,在网页中直接编写运行脚本。
**CST Studio Suite 提供了 Python 编程接口,也提供了在 Python 环境中执行 VB 脚本的接口。并且,在 CST Studio Suite 2024 中,CST Python Libraries 的特性得到了更新。**通过脚本控制 CST Studio Suite,工程师可以将这些重复性的工作交给计算机自动完成,例如编写相应的算法让计算机自动寻找最优解,从而大大提高求解计算的效率。
现在,我们将使用 Jupyter Notebook 连接到 CST Studio Suite,通过一个演示案例,完成脚本控制建立模型、查看结果等工作,并在 Python 中进行更多自动化任务。
文章共分为 5 个部分,分别介绍以下内容:
本期为第 1 篇文章,详细介绍如何搭建 Python 测试环境。
在 CST Studio Suite 2024 帮助页面中标明,支持的版本为 Python 3.6-3.11 版本。
在开始测试之前,可以检查计算机是否已安装符合要求的 Python,例如在已安装应用列表中查阅,如未找到则需要手动安装 Python。
根据 Python Developer's Guide 的信息(https://devguide.python.org/versions/#branchstatus),目前的发行的 Python 版本,状态为 security 的有 3.8-3.11。
其中,在尝试使用 3.11 版部署环境时,安装上述 cst-studio-suite-link 包的时候,有一定概率会提示错误,错误信息表明 cst-studio-suite-link 包要求的 Python 版本是小于 3.11。
因此,可以根据自身情况安装 3.10 或 3.9,这里以 3.10 版本为例。

Python 生命周期
Python 的来源可以为 Python 官网和 Microsoft Store,可以根据自身情况选择安装途径。
如果选择从 Python 官网下载安装:
Add Python to PATH 选项,以便在命令行中直接运行 Python。如果选择从 Microsoft Store 下载安装:
安装 或 下载。如果使用 Python 官网下载的安装包安装,并勾选了 Add Python to PATH 选项,则可以忽略该步骤。
在 Windows 系统中,按照以下步骤操作:
C:\Users\<username>\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\Scripts<username> 表示当前用户名。打开 cmd,在命令行中输入 python,若返回以下信息,则代表 Python 已经成功安装。
Python 3.10.xx ... Type "help", "copyright", "credits" or "license" for more information.
成功安装 Python 后,进一步部署 Jupyter。
安装 Jupyter Notebook 之前,为了提升下载安装的体验,建议先手动设置国内的下载源。
我们推荐将下载源设置为清华大学,以管理员身份打开 cmd,输入对应指令
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip #升级 pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple #将该地址设为默认下载源
pip install jupyter
通常而言,默认下载源的下载速率约为 20kB/s,如果下载速率太慢,或者无法全局设置国内的源,可以在下载时临时使用清华的源。代码如下:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jupyter
这时候会进入下载与安装界面,从命令行窗口返回的信息中可以看到,下载速率可达到 10+MB/s。
在 cmd 中输入以下内容(注意全是小写)
jupyter notebook
若一切顺利,会出现以下反馈:

Jupyter Notebook 控制台
如果出现了问题,可参考以下解决方案:
| 问题 | 原因 | 解决方案 |
|---|---|---|
| cmd 窗口提示警告,存在环境变量相关内容 | 安装的某些脚本(例如 qtpy.exe 和 jupyter-console.exe)被放置在了系统 PATH 环境变量之外的目录中。 | 添加目录到环境变量中,或者使用完整的路径运行脚本。 |
| cmd 窗口未报错,但浏览器窗口提示提示 ERR_FILE_NOT_FOUND(未找到文件它可能已被移动、编辑或删除) | 添加环境变量后未重启 Jupyter 服务 | 关闭浏览器窗口与命令行窗口,尝试重启 Jupyter 服务。如无效则尝试重启计算机。 |
在 cmd 中输入以下内容(注意全是小写)
jupyter notebook
即可进入控制台(即自动打开的浏览器弹窗)。
在 Jupyter 控制台的导航窗口中打开待测案例的脚本文件,双击或者选中后点击 open 打开。

选定的待测案例
随后浏览器会弹出一个新的标签页面打开该文件。

打开的待测案例
如何运行一个 Jupyter Notebook 工程?我们可以查看下面这个案例:用 Python 计算
# some python code to calculate pi
import math
pi_estimate = 0.0
terms_in_series = 50
for k in range(terms_in_series):
pi_estimate += (-1.0/3.0)**k/(2.0*k+1.0)
pi_estimate = math.sqrt(12)*pi_estimate
print("Pi is approximately {0}".format(pi_estimate))
要运行该单元格中的代码,请执行以下两个步骤:
SHIFT+ENTER 键,或者点击上方工具栏中的'▶'按钮。成功运行后,该单元格的下行会展示运行结果,如图所示。

用 Python 计算 pi
在介绍与 CST Studio Suite 相关的特定导入之前,让我们先导入几个我们将要使用的通用库。
运行以下代码,报错提示缺少库的时候,使用 pip 安装缺少的库,直到无报错出现。
import time
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import minimize
import tempfile
tmp = tempfile.gettempdir()
%matplotlib notebook
使用 pip 安装库时,将报错的内容(提示缺少 xx 库),复制库的名称,替换下面命令的 numpy,然后运行即可。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
现在,开始执行下面的代码,加载一些 CST Python 库。
# cst related imports
import cst
import cst.interface
import cst.results
print(cst.__file__) # should print '<PATH_TO_CST_AMD64>\python_cst_libraries\cst\__init__.py'
如果成功执行该命令,该单元格的输出将打印库的路径,例如 C:\Program Files (x86)\CST Studio Suite 2020\AMD64\python_cst_libraries\cst\__init__.py

CST Python lib
在这种情况下,可以直接导入 CST Python 库,这是因为在该解释器中安装了一个最小软件包,该软件包与实际安装的 CST Studio Suite 相链接。
更多信息请参见在线帮助中的概述。
如果您没有安装该软件包,或者添加/修改了 PythonPath 系统环境变量(不推荐),您可以使用 sys.path.append 方法来确保您的解释器可以找到 CST Python 库。
import sys
sys.path.append("C:\Program Files (x86)\CST Studio Suite 2022\AMD64\python_cst_libraries")
# cst related imports
import cst
import cst.interface
import cst.results
print(cst.__file__) # should print '<PATH_TO_CST_AMD64>\python_cst_libraries\cst\__init__.py'
现在,让我们调用 CST Design Environment,开始初始化'连接'。
project = cst.interface.DesignEnvironment()
执行该代码,打开 CST Design Environment,会出现提示'静态/脚本模式已激活,弹出窗口已被阻止'弹窗,点击'Swich to Interactive Mode'切换到交互模式即可。

Swich to Interactive Mode
然后运行下面的单元格,创建一个空的 CST Microwave Studio 项目。
mws_project = project.new_mws()

创建一个空的 CST Microwave Studio 项目
mws_project.activate()
参数 activate() 会确保我们创建的项目是当前激活的项目。
在做其他事情之前,我们先将项目保存在当前用户的 TEMP 文件夹中,即 C:\Users\<Users>\AppData\Local\Temp 路径。
mws_project.save(tmp+"\CST_TEST.cst")
如果提示'文件已存在',说明此前已经保存过该文件到该目录,没有赋予文件操作相关的命令,无法覆盖保存。

'文件已存在'
可以修改拟保存的项目名称,也可以在文件管理器中访问该路径删除原有文件。
此外,用户也可以根据自己的需求,将项目文件保存到指定的位置。
作为最后的通信检查,我们将查询激活的 3D 求解器。请执行下面的单元格并观察输出。
mws_project.model3d.get_active_solver_name()

查询求解器
然后,在 CST Microwave Studio 中更改求解器,并再次执行该代码。

更改求解器为 F 求解器

求解器已经更改为 F 求解器
下面的单元格将用 Python 在模型中创建/更改一个名为 offset 的参数。
mws_project.model3d.StoreDoubleParameter("offset", 3)
请检查该参数在项目参数列表中是否可见。

设置参数 offset
在整个测试的过程中,若注意以下问题,将会使得整个测试过程更加顺利:
%matplotlib notebook 替换成 %matplotlib inline。
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online