Mark_MC506 发表于 2020-2-7 13:13

python 控制 ansys maxwell - 1 開啟軟體 + 新增project

## 環境
- windows VM in mac
- Ansys 17.2
- python 3.7.3

## 目標
使用python script,執行後自動開啟maxwell,且新增project

## win32com
首先要完成的是讓python開啟maxwell,參考了網路上的一些資訊,使用win32com這個module是最方便的,因此先跑`pip install pywin32`裝好module,使用
```
from win32com import client

oAnsoftApp = client.Dispatch("Ansoft.ElectronicDesktop")
```
就可以用python直接開啟maxwell

## 新增project
maxwell的script是一個OOP的概念,由很多層class組成,每個class中有許多function可用,繼承圖可參考官方的API文件,新增project很簡單,使用下列code

```
oDesktop = oAnsoftApp.GetAppDesktop()
oProject = oDesktop.NewObject()
```

看這篇文章的朋友,有興趣的話也可以嘗試一下,需要討論的話也可以留言,也歡迎一起討論

大熊弟 发表于 2020-3-13 18:56

我用vbs脚本可以实现,但是没用过python。我跟相关人士咨询说maxwell只支持ironpython,你用python3.7.3可以正常运行吗?

Mark_MC506 发表于 2020-3-14 14:54

大熊弟 发表于 2020-3-13 18:56
我用vbs脚本可以实现,但是没用过python。我跟相关人士咨询说maxwell只支持ironpython,你用python3.7.3可 ...

要透過win32com, 可以的

大熊弟 发表于 2020-3-14 17:44

Mark_MC506 发表于 2020-3-14 14:54
要透過win32com, 可以的

那您能详细的说明一下吗

壹个小俊哥 发表于 2020-3-14 19:56


学习学习。谢谢楼主!!

Mark_MC506 发表于 2020-8-22 23:44

本帖最后由 Mark_MC506 于 2020-8-22 23:49 编辑

大熊弟 发表于 2020-3-14 17:44
那您能详细的说明一下吗

win32com.client.Dispatch()是利用 微軟 提供的一個 IDispatch 的自動化介面,接收軟體的 ProgID為參數,來操作windows軟體。

可以在 powershell打上 `Get-ChildItem HKLM:\Software\Classes -ErrorAction SilentlyContinue | Where-Object {$_.PSChildName -match '^\w+\.\w+$' -and (Test-Path -Path "$($_.PSPath)\CLSID")} | Select-Object -ExpandProperty PSChildName` 找看看有沒有,如果太多的話可以在最後面加上 `| grep An` 來縮減結果。

大熊弟 发表于 2020-8-30 08:19

Mark_MC506 发表于 2020-8-22 23:44
win32com.client.Dispatch()是利用 微軟 提供的一個 IDispatch 的自動化介面,接收軟體的 ProgID為參數 ...

好的,我试试,谢谢

dtbdtb123 发表于 2020-11-9 22:35

兄弟,我试了不行啊

Billy_Smile 发表于 2020-12-25 13:59

最近刚好在二次开发Maxwell,正版软件,版本为AnsysEM19.5,有很多种方法打开Maxwell,一种为dispatch,另一种为命令行执行。
代码如下:
from win32com import client
oAnsoftApp = client.Dispatch("Ansoft.ElectronicsDesktop")
oDesktop = oAnsoftApp.GetAppDesktop()
oProject = oDesktop.NewProject()
oDesktop.RestoreWindow()
###新建2D瞬态分析
oProject.InsertDesign("Maxwell 2D", "Maxwell2DDesign3", "Transient", "")

##工程另存为
oProject.SaveAs("D:/projects/project1.aedt", true)

##关闭工程
oDesktop.CloseProject("project_name")
##关闭软件
oDesktop.QuitApplication()

Billy_Smile 发表于 2020-12-25 14:00

dtbdtb123 发表于 2020-11-9 22:35
兄弟,我试了不行啊

代码已贴出,亲测可用!

清_酒 发表于 2021-1-9 19:15

您好,请问一下官方python的API文档在哪里能下载?

Mark_MC506 发表于 2021-1-10 16:47

不好意思 Electronic 後面要加s :oAnsoftApp = client.Dispatch("Ansoft.ElectronicsDesktop") 才ˋ正確

dtbdtb123 发表于 2021-1-22 11:49

Billy_Smile 发表于 2020-12-25 14:00
代码已贴出,亲测可用!

好的,好兄弟,谢谢,我去试试。

dtbdtb123 发表于 2021-1-22 11:53

Mark_MC506 发表于 2021-1-10 16:47
不好意思 Electronic 後面要加s :oAnsoftApp = client.Dispatch("Ansoft.ElectronicsDesktop") 才ˋ正確

好的,谢谢兄弟纠正。

yupoo 发表于 2021-3-20 17:46

不需要指定maxwell 的系统安装路径吗

Answersz 发表于 2021-4-17 10:50

有开发文档嘛.......

MADANO 发表于 2021-4-20 19:27

请教一下楼主能否用 python实现 maxwell 中 select objects by material 的功能?
如下图所示


我用Record Script 功能尝试录制这个脚本,但是发现没办法记录这个操作



大佬能否提供一些用python实现该功能的思路呢{:10_366:}

Billy_Smile 发表于 2021-7-15 09:44

MADANO 发表于 2021-4-20 19:27
请教一下楼主能否用 python实现 maxwell 中 select objects by material 的功能?
如下图所示



oProject = oDesktop.SetActiveProject("Project Name")
oDesign = oProject.SetActiveDesign("Design Name")
oEditor = oDesign.SetActiveEditor("3D Modeler")

##获得材料为vacuum的所有object名字
objNames = oEditor.GetObjectsByMaterial("vacuum")

之后你可以遍历所有object来改变property

虽然我不知道你这样做的目的,但大致的思路是这个样子

MADANO 发表于 2021-8-24 18:04

Billy_Smile 发表于 2021-7-15 09:44
oProject = oDesktop.SetActiveProject("Project Name")
oDesign = oProject.SetActiveDesign("Design N ...

好的,多谢啦em825

双翼EE 发表于 2021-10-25 11:48

您好!
请问怎么能使用python在maxwell中设置绕组材料和激励呢?
页: [1] 2
查看完整版本: python 控制 ansys maxwell - 1 開啟軟體 + 新增project