许可优化
产品
解决方案
服务支持
关于
软件库
当前位置:服务支持 >  软件文章 >  Python自动化仿真HFSS:超简易教程来袭

Python自动化仿真HFSS:超简易教程来袭

阅读数 8
点赞 0
article_banner

python是一款适用性极强的编程语言。一直期待HFSS(三维全波电磁场仿真的行业标准)能有python接口。后知后觉的本人才发现原来HFSS16(2015版本)已经不止支持VB脚本,还增加了python支持,当然它用的是Ironpython,基于.NET,和Cpython还是有一定区别,Numpy Scipy 这些库的使用上可能还存在问题。正好网上有牛人已经写好了使用指南,我就当下搬运工,希望有更多的人参与来发展hfss的python自动化仿真。

本文英文原文来自codypiersall

运行环境

  1. python 2.7 / 3.4及以上
  2. Ansys HFSS16 (2015.1.0)
  3. win7 64位

引入

  • 当你发现你在HFSS中做一个重复性任务时,你可以通过自动化来节省时间。
  • 当你想要使用HFSS的脚本时,最简便的办法是利用脚本记录功能弄清楚HFSS是怎样编写脚本的。几乎所有你在HFSS用户界面做的事你都可以使用脚本做到。
  • 再次强调,找出如何使用脚本的最快的方式是在图形化用户界面记录一个脚本,看这个脚本是怎么说的。
  • 录制脚本文件:Tools → Record Script to File,然后做些你想被录制的事,如改变工作频率,某些设计变量。
脚本录制操作
  • 结束脚本录制:Tools →Stop Script Recording。
  • 如果你想改变Setup8的工作频率,如800MHz,然后改变一个设计变量N为7,你需要得到类似的一个脚本:
 # ----------------------------------------------
# Script Recorded by ANSYS Electronics Desktop Version 2015.0.0
# 10:04:03  May 13, 2015
# ----------------------------------------------
import ScriptEnv
ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")
oDesktop.RestoreWindow()
oProject = oDesktop.SetActiveProject("AntennaTemplate2")
oDesign = oProject.SetActiveDesign("HFSSDesign1")
oDesign.ChangeProperty(
    [
        "NAME:AllTabs",
        [
            "NAME:HfssTab",
            [
                "NAME:PropServers",
                "AnalysisSetup:Setup8"
            ],
            [
                "NAME:ChangedProps",
                [
                    "NAME:Solution Freq",
                    "MustBeInt:="           , False,
                    "Value:="               , "800MHz"
                ]
            ]
        ]
    ])
oDesign.ChangeProperty(
    [
        "NAME:AllTabs",
        [
            "NAME:LocalVariableTab",
            [
                "NAME:PropServers",
                "LocalVariables"
            ],
            [
                "NAME:ChangedProps",
                [
                    "NAME:N",
                    "Value:="               , "7"
                ]
            ]
        ]
    ])
  • 你不用完全弄清脚本是怎么做到这些事情的。前四行只是注释,没有做任何事。5-9行只是样板:初始化软件,指定活动的工程来让我们可以真正操作它。剩下的两个ChangeProperty就分别是将Setup8的工作频率改为800MHz和改变设计变量N为7的全部代码了。
  • 我录制的脚本示意图
改变扫描频率得到的脚本
  • 你可以使用用户界面同样也可以利用脚本来做许多不同的事:
    • 导出DXF文件
    • 改变材料
    • 运行分析
    • 导出报告
    • 打开一个工程
    • 创建一个模型
    等等。

完全自动化(使用命令行)

  • 我们的目标是编写脚本而完全不用与界面人工交互——比如不用我们手动打开HFSS来运行脚本。
  • 很简单,在命令行中,只需要输入ansysedt -RunScript my_script.py,或者你不希望在脚本运行结束后HFSS仍然打开着,使用ansysedt -RunScriptAndExit my_script.py命令。
  • 你还可以使用Matlab调用hfss,通过使用系统函数:
 system('"C:\Program Files\AnsysEM\AnsysEM16.0\Win64\ansysedt.exe" -RunScriptAndExit "my_script.py"')


在这里,你需要提供HFSS的完整运行路径,通过右击HFSS图标-属性-目标获取它。

  • 此外要注意的是,当你尝试在命令行中运行脚本时,该脚本必须是完全独立的。这意味着你不能指望任何已经打开的项目。应该遵循的策略是让你的脚本打开一个项目或创建一个新的项目。

一些实例
下面是一些示例脚本,它们仅与HFSS16兼容。
你可以在图形界面通过Tools运行脚本,也可以使用命令行的形式。
1. 创建一个新的工程

"""Create a new project"""
import ScriptEnv
ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")
oDesktop.RestoreWindow()
oProject = oDesktop.NewProject()

2. 打开一个已经存在的工程

"""Open an existing project"""
import ScriptEnv
ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")
oDesktop.RestoreWindow()
oDesktop.OpenProject("C:/Users/pier3595/Desktop/Project1.aedt")

3. 使用示例工程(下面的脚本都需要你在桌面上有 AntennaTemplate.aedt 文件,下载链接

3.1. 改变工作频率并扫频

""""Change sweep solution frequency and a sweep frequency"""
# Locate the project file on your desktop
# These three lines are just plain Python, and have *nothing* to do with HFSS.
import os
project_file = os.path.join(os.path.expanduser('~'), 'Desktop')
project_file = os.path.join(project_file, 'AntennaTemplate.aedt')
import ScriptEnv
ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")
oDesktop.RestoreWindow()
oDesktop.OpenProject(project_file)
oProject = oDesktop.SetActiveProject("AntennaTemplate")
oDesign = oProject.SetActiveDesign("HFSSDesign1")
oDesign.ChangeProperty(["NAME:AllTabs", ["NAME:HfssTab", ["NAME:PropServers", "AnalysisSetup:Setup8"],
            ["NAME:ChangedProps", [ "NAME:Solution Freq", "MustBeInt:=", False, "Value:=", "500MHz"]]]])
oDesign.ChangeProperty([ "NAME:AllTabs", ["NAME:HfssTab", ["NAME:PropServers", "AnalysisSetup:Setup8:Sweep1"],
            ["NAME:ChangedProps", [ "NAME:Start", "MustBeInt:=", False, "Value:=", "460MHz"]]]])
oDesign.ChangeProperty([ "NAME:AllTabs", [ "NAME:HfssTab", [ "NAME:PropServers", "AnalysisSetup:Setup8:Sweep1" ],
            [ "NAME:ChangedProps", [ "NAME: Stop", "MustBeInt:=", False, "Value:=", "540MHz"]]]])


该脚本改变Setup8的工作频率到500MHz,并且改变Sweep1的起始频率为460MHz、截止频率为540MHz。但是它还做了一些事:他利用普通的python函数来找到你的桌面并且打开指定的文件。这使得脚本更加强大。只要你在桌面上有AntennaTemplate.aedt 文件,它就会运行。能够使用python通用函数使得HFSS脚本编程非常强大有用。该脚本使用了python的os模块。

3.2. 改变一个设计属性

  • 将变量ws的值修改为2mm:
""""Change a design property."""
# Locate the project file on your desktop
# These three lines are just plain Python, and have *nothing* to do with HFSS.
import os
project_file = os.path.join(os.path.expanduser('~'), 'Desktop')
project_file = os.path.join(project_file, 'AntennaTemplate.aedt')
import ScriptEnv
ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")
oDesktop.RestoreWindow()
oDesktop.OpenProject(project_file)
oProject = oDesktop.SetActiveProject("AntennaTemplate")
oDesign = oProject.SetActiveDesign("HFSSDesign1")
oDesign.ChangeProperty(["NAME:AllTabs", ["NAME:LocalVariableTab", ["NAME:PropServers", "LocalVariables"],
            ["NAME:ChangedProps", ["NAME:ws", "Value:=", "2mm"]]]])
  • 使用扩展包来简化代码,拓展功能

pip install hfsslib
[可用参考文档](arrc.ou.edu/~cody/hfssl) ### 尽情探索吧,希望有你的交流


作者:treelake
链接:jianshu.com/p/9627ca143
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空