CST

您所在的位置:网站首页 python3脚本导cdl CST

CST

2024-01-25 16:09| 来源: 网络整理| 查看: 265

CST脚本发展现状

目前CST软件能支持的脚本语言为VB何Python。其中,VB是此前比较成熟的,在CST里面也内置了各种VB菜单和脚本示例,但是呢,大家都知道,脚本语言的王,最近几年最火的就是Python了,所以CST软件在大概2019版开始也就逐步引入了Python脚本,目前更新到了2023版(查了一下文档,其实内容模块还是较少)。 PS:这里吐槽一下,CST到现在主要还是靠VB脚本为主,这点远不如HFSS和ABAQUS好。特别是对比于ABAQUS,都是达索的,差距还是有点大啊,ABAQUS的脚本功能太强大。 好了,废话不多说,上货。主要步骤如下:

环境准备工作

1、安装CST studio suite。这个步骤就不演示了,具体怎么安装这个软件可以百度,网上教程较多。 我是按照了最新版的CST 2023(主要想着脚本可能更新了,结果也没更新啥),默认路径安装。 在这里插入图片描述

2、安装Python。这里要注意一点,Python更新了很多版本,但是CST并不是所有版本都支持,目前是也最高支持3.9版本,所以我就安装了3.9的Python。具体支持的版本可以查阅CST 帮助文档。 在这里插入图片描述

3、验证。验证Python能不能调用cst脚本,很简单的,允许以下程序。(路径改成CST的安装路径)

import sys sys.path.append( r"C:\Program Files (x86)\CST Studio Suite 2023\AMD64\python_cst_libraries") print(cst.__file__)

如果出现下面的即为成功了。 在这里插入图片描述

程序目的和建模 目的。该程序主要是实现了自动调用CST软件和优化变量数值的方法。利用给定的变量值和范围,让程序自己去调用CST循环计算,最终达到我们的标定值即结束。建模。建了一个较小的模型,设置了2个变量gap和dis。如图所示 在这里插入图片描述 PS:模型后续会上传,大家有需要的可以自行下载。 程序主体 环境导入: import sys sys.path.append( r"C:\Program Files (x86)\CST Studio Suite 2023\AMD64\python_cst_libraries") import cst.results import cst.interface import cst import math print(cst.__file__) # cst文件路径 Project_path = r"D:\testmodel\dipole1.cst"

如图所示,首先导入CST路径,引入它的包模块,并分别导入了result模块和interface模块,顾名思义,就是一个是跟仿真结果有关的,另一个是界面交互有关的。

CST_script类: class CST_script: def __init__(self) -> None: self.cst_full_path = Project_path # 打开CST。若已经打开了,则判断是不是我们需要打开的项目 def opencst(self): allpids = cst.interface.running_design_environments() is_open = False for pid in allpids: current_DE = cst.interface.DesignEnvironment.connect(pid) for project_path in current_DE.list_open_projects(): # print(project_path) if self.cst_full_path == project_path: current_project = MyCurrentDE.get_open_project( project_path) is_open = True break if is_open == False: current_DE = cst.interface.DesignEnvironment() current_project = current_DE.open_project(self.cst_full_path) is_open = True return current_DE, current_project # 更改变量 def change_para(self, para_name, para_value, CurrentProject): command = 'Sub Main ()\nStoreDoubleParameter("%s", "%.2f")\nRebuildOnParametricChange (bfullRebuild, bShowErrorMsgBox)\nEnd Sub' % (para_name, para_value) # 执行修改变量脚本 res = CurrentProject.schematic.execute_vba_code(command, timeout=None) return res def go(self, para_name, original_value, judge_value): current_DE, current_project = self.opencst() cst.interface.DesignEnvironment.in_quiet_mode = False current_project.modeler.run_solver() new_value=original_value[0] for n in range(original_value[2]): result_project = cst.results.ProjectFile(self.cst_full_path, allow_interactive=True) ids=result_project.get_3d().get_all_run_ids() S11 = result_project.get_3d().get_result_item(r'1D Results\S-Parameters\S1,1',ids[-1]) res = [20*math.log10(math.sqrt(math.pow(i.real, 2)+math.pow(i.imag, 2))) for i in S11.get_ydata()] thetas = S11.get_xdata() min_value = min(res) min_freq = thetas[res.index(min_value)] print(new_value,min_freq,min_value) if judge_value[0]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3