程序员我的Python自学之路生活不易 我用python

用python自动化仿真HFSS,超简易

2016-09-20  本文已影响4630人  treelake

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位

引入

# ----------------------------------------------
# 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"
                ]
            ]
        ]
    ])
改变扫描频率得到的脚本

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

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"]]]])

3.2. 改变一个设计属性

""""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

[可用参考文档](http://arrc.ou.edu/~cody/hfsslib/hfsslib/)

### 尽情探索吧,希望有你的交流
上一篇 下一篇

猜你喜欢

热点阅读