西莫电机圈

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 2667|回复: 20

[原创] python 控制 ansys maxwell - 1 開啟軟體 + 新增project

[复制链接]

该用户从未签到

发表于 2020-2-7 13:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
## 環境
- 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()
```

看這篇文章的朋友,有興趣的話也可以嘗試一下,需要討論的話也可以留言,也歡迎一起討論
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过

签到天数: 31 天

连续签到: 1 天

[LV.5]常住居民I

发表于 2020-3-13 18:56 | 显示全部楼层
我用vbs脚本可以实现,但是没用过python。我跟相关人士咨询说maxwell只支持ironpython,你用python3.7.3可以正常运行吗?
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

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

要透過win32com, 可以的
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

签到天数: 31 天

连续签到: 1 天

[LV.5]常住居民I

发表于 2020-3-14 17:44 | 显示全部楼层
Mark_MC506 发表于 2020-3-14 14:54
要透過win32com, 可以的

那您能详细的说明一下吗
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

发表于 2020-3-14 19:56 | 显示全部楼层

学习学习。谢谢楼主!!
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 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` 來縮減結果。
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

签到天数: 31 天

连续签到: 1 天

[LV.5]常住居民I

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

好的,我试试,谢谢
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2020-11-9 22:35 | 显示全部楼层
兄弟,我试了不行啊
E]{PS}~JYV~U6Y)XDA$5}_Q.png
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 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()

西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2020-12-25 14:00 | 显示全部楼层
dtbdtb123 发表于 2020-11-9 22:35
兄弟,我试了不行啊

代码已贴出,亲测可用!
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2021-1-9 19:15 | 显示全部楼层
您好,请问一下官方python的API文档在哪里能下载?
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2021-1-10 16:47 | 显示全部楼层
不好意思 Electronic 後面要加s :  oAnsoftApp = client.Dispatch("Ansoft.ElectronicsDesktop") 才ˋ正確
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2021-1-22 11:49 | 显示全部楼层
Billy_Smile 发表于 2020-12-25 14:00
代码已贴出,亲测可用!

好的,好兄弟,谢谢,我去试试。
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2021-1-22 11:53 | 显示全部楼层
Mark_MC506 发表于 2021-1-10 16:47
不好意思 Electronic 後面要加s :  oAnsoftApp = client.Dispatch("Ansoft.ElectronicsDesktop") 才ˋ正確

好的,谢谢兄弟纠正。
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

签到天数: 45 天

连续签到: 1 天

[LV.5]常住居民I

发表于 2021-3-20 17:46 | 显示全部楼层
不需要指定maxwell 的系统安装路径吗
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2021-4-17 10:50 | 显示全部楼层
有开发文档嘛.......
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2021-4-20 19:27 | 显示全部楼层
请教一下楼主能否用 python实现 maxwell 中 select objects by material 的功能?
如下图所示
1.jpg

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

2.jpg

大佬能否提供一些用python实现该功能的思路呢
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 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

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

西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2021-8-24 18:04 | 显示全部楼层
Billy_Smile 发表于 2021-7-15 09:44
oProject = oDesktop.SetActiveProject("Project Name")
oDesign = oProject.SetActiveDesign("Design N ...

好的,多谢啦
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2021-10-25 11:48 | 显示全部楼层
您好!
请问怎么能使用python在maxwell中设置绕组材料和激励呢?
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|西莫电机圈 ( 浙ICP备10025899号-3 浙公网安备:33028202000436号

GMT+8, 2024-4-27 02:53 , Processed in 0.173623 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表