在给ANSYS Motor-CAD做接口时,ANSYS Motor-CAD无法正常启动,每次都要手动打开才能进行后续操作。采用win32com.client模块启动软件,代码如下:
1.源代码
import win32com.client
mcad = win32com.client.Dispatch("MotorCAD.AppAutomation“)
2.错误提示
代码单独运行时没有问题,集成到公司软件时ANSYS Motor-CAD无法启动,显示错误如下:
Traceback (most recent call last):
File "g:\abaqus_link\motorcad\sub_wnd_widget\solver_setting_wnd\motorcad\setting_wnd.py", line 610, in import_input_file
mcad = win32com.client.Dispatch("MotorCAD.AppAutomation")
File "F:\miniconda\envs\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
File "F:\miniconda\envs\lib\site-packages\win32com\client\dynamic.py", line 114, in _GetGoodDispatchAndUserName
return (_GetGoodDispatch(IDispatch, clsctx), userName)
File "F:\miniconda\envs\lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatch
IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2146959355, '服务器运行失败', None, None)
3.方法尝试
1). DCOM配置。试过了,没找到ANSYS Motor-CAD这一项。
2). 权限问题。VS Code和ANSYS Motor-CAD都是管理员权限,没解决
3). 注册表。更新了注册表里ANSYS Motor-CAD的默认路径,还在后面加了/Automation,还是没解决
怎么做才能解决这个问题呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
从您提供的错误信息来看,这似乎是一个DCOM配置的问题。DCOM是Windows的一个组件,用于在本地和远程机器之间进行COM对象的通信。在您的例子中,可能是由于DCOM配置不正确导致了Win32Com客户端无法连接到Motor-CAD服务器。
为了解决这个问题,请按照以下步骤进行操作:
首先,确保您的电脑上已经安装了最新版本的Microsoft Visual C++ Redistributable for Visual Studio 2015,2017和2019。如果尚未安装,请在开始菜单中搜索"Microsoft Visual C++ Redistributable for Visual Studio 2015,2017和2019"并安装。
接下来,打开命令提示符(以管理员身份运行),输入以下命令:
dcomcnfg
这将打开DCOM配置管理器。
在DCOM配置管理器中,找到"Motor-CAD Application Automation"服务或应用程序,右键点击它,然后选择"属性"。
在属性窗口中,转到"安全"选项卡,并确保只有具有完全控制权限的用户才能访问此服务。如果需要,您可以在此处添加特定的用户或用户组。
如果您仍然遇到问题,请检查您的防火墙设置,确保它们允许Motor-CAD Application Automation通过网络进行通信。
根据您提供的信息,您在使用 win32com.client
模块启动 ANSYS Motor-CAD 时遇到了问题。错误提示中显示了一个 DCOM 错误,指示服务器运行失败。
针对此问题,您可以尝试以下解决方法:
确保正确的应用程序名称:请确保在调用 Dispatch
方法时传递的应用程序名称是正确的。根据您提供的代码,应该是 "MotorCAD.AppAutomation"
,请检查是否有任何拼写错误或其它错误。
检查软件安装:确保您的计算机上已经正确安装了 ANSYS Motor-CAD 软件,并且安装路径正确。如果软件未正确安装或路径发生变化,可能会导致启动失败。
检查 COM 组件注册:使用 regedit
工具打开注册表,检查是否存在与 ANSYS Motor-CAD 相关的 COM 组件键值,并确保其正确注册。如果没有找到相关键值,可能需要重新安装软件或者联系软件供应商获取支持。
检查权限设置:请确保您以管理员身份运行的脚本具有足够的权限来启动 ANSYS Motor-CAD。您可以尝试右键单击脚本文件并选择“以管理员身份运行”,或者通过其他方式确保脚本运行时具有管理员权限。
安全软件和防火墙:某些安全软件或防火墙可能会阻止程序启动。请确保您的计算机上的安全软件和防火墙允许 ANSYS Motor-CAD 运行,并将其添加到信任列表中。
ANSYS Motor-CAD 做接口时无法正常启动的问题,您可以尝试以下方法:
pip install pywin32
import os
import subprocess
import win32com.client
ansys_motor_cad_path = "C:\Program Files\ANSYSEM\ANSYSEM19.3\Win64"
os.environ["PATH"] += os.pathsep + ansys_motor_cad_path
mcad = win32com.client.Dispatch("MotorCAD.AppAutomation")
import os
import subprocess
ansys_motor_cad_path = "C:\Program Files\ANSYSEM\ANSYSEM19.3\Win64"
os.environ["PATH"] += os.pathsep + ansys_motor_cad_path
subprocess.Popen(["motor cad", "-console"])
对于您遇到的这个问题,有几个可能的解决方法可以尝试:
确保正确安装了ANSYS Motor-CAD:请确保您已经正确安装了ANSYS Motor-CAD,并且没有发生任何错误或缺失的文件。
检查COM组件注册:使用管理员权限运行命令提示符,并执行以下命令:
regsvr32 "C:\Program Files\ANSYS Inc\Motor-CAD\Engine\mcade.dll"
然后再尝试运行您的代码。
检查Python环境和相关库:确保您的Python环境和相关库(如win32com
)正常安装,并且与ANSYS Motor-CAD兼容。
检查系统环境变量:确保您的系统环境变量中已经正确配置了ANSYS Motor-CAD的路径。
与ANSYS支持团队联系:如果尝试了以上方法仍然无法解决问题,建议您联系ANSYS的支持团队,向他们咨询这个问题,并提供您的错误信息和代码示例。
希望以上方法可以帮助您解决问题。如果您有其他疑问,请随时提问。