开发者社区 问答 正文

在给ANSYS Motor-CAD做接口时不能正常启动,该怎么解决呢?

在给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,还是没解决

怎么做才能解决这个问题呢?

展开
收起
游客w3w3eogqd6lnk 2023-09-07 16:41:38 799 分享 版权
4 条回答
写回答
取消 提交回答
  • 从您提供的错误信息来看,这似乎是一个DCOM配置的问题。DCOM是Windows的一个组件,用于在本地和远程机器之间进行COM对象的通信。在您的例子中,可能是由于DCOM配置不正确导致了Win32Com客户端无法连接到Motor-CAD服务器。

    为了解决这个问题,请按照以下步骤进行操作:

    1. 首先,确保您的电脑上已经安装了最新版本的Microsoft Visual C++ Redistributable for Visual Studio 2015,2017和2019。如果尚未安装,请在开始菜单中搜索"Microsoft Visual C++ Redistributable for Visual Studio 2015,2017和2019"并安装。

    2. 接下来,打开命令提示符(以管理员身份运行),输入以下命令:

      dcomcnfg
      

      这将打开DCOM配置管理器。

    3. 在DCOM配置管理器中,找到"Motor-CAD Application Automation"服务或应用程序,右键点击它,然后选择"属性"。

    4. 在属性窗口中,转到"安全"选项卡,并确保只有具有完全控制权限的用户才能访问此服务。如果需要,您可以在此处添加特定的用户或用户组。

    5. 如果您仍然遇到问题,请检查您的防火墙设置,确保它们允许Motor-CAD Application Automation通过网络进行通信。

    2023-09-10 09:00:13
    赞同 展开评论
  • 根据您提供的信息,您在使用 win32com.client 模块启动 ANSYS Motor-CAD 时遇到了问题。错误提示中显示了一个 DCOM 错误,指示服务器运行失败。

    针对此问题,您可以尝试以下解决方法:

    1. 确保正确的应用程序名称:请确保在调用 Dispatch 方法时传递的应用程序名称是正确的。根据您提供的代码,应该是 "MotorCAD.AppAutomation",请检查是否有任何拼写错误或其它错误。

    2. 检查软件安装:确保您的计算机上已经正确安装了 ANSYS Motor-CAD 软件,并且安装路径正确。如果软件未正确安装或路径发生变化,可能会导致启动失败。

    3. 检查 COM 组件注册:使用 regedit 工具打开注册表,检查是否存在与 ANSYS Motor-CAD 相关的 COM 组件键值,并确保其正确注册。如果没有找到相关键值,可能需要重新安装软件或者联系软件供应商获取支持。

    4. 检查权限设置:请确保您以管理员身份运行的脚本具有足够的权限来启动 ANSYS Motor-CAD。您可以尝试右键单击脚本文件并选择“以管理员身份运行”,或者通过其他方式确保脚本运行时具有管理员权限。

    5. 安全软件和防火墙:某些安全软件或防火墙可能会阻止程序启动。请确保您的计算机上的安全软件和防火墙允许 ANSYS Motor-CAD 运行,并将其添加到信任列表中。

    2023-09-08 08:39:31
    赞同 1 展开评论
  • 北京阿里云ACE会长

    ANSYS Motor-CAD 做接口时无法正常启动的问题,您可以尝试以下方法:

    1. 确保已正确安装 win32com.client 模块。您可以使用以下命令安装:

    pip install pywin32

    1. 在运行代码之前,请确保 ANSYS Motor-CAD 软件已经运行。您可以通过在任务栏中查找软件图标来检查软件是否正在运行。
    2. 尝试使用以下代码启动 ANSYS Motor-CAD 软件:

    import os
    import subprocess
    import win32com.client

    确保 ANSYS Motor-CAD 的路径已添加到环境变量中

    ansys_motor_cad_path = "C:\Program Files\ANSYSEM\ANSYSEM19.3\Win64"
    os.environ["PATH"] += os.pathsep + ansys_motor_cad_path

    启动 ANSYS Motor-CAD

    mcad = win32com.client.Dispatch("MotorCAD.AppAutomation")

    1. 如果上述方法仍无法解决问题,您可以尝试使用 subprocess 模块运行 ANSYS Motor-CAD 的命令行版本。请确保已将 ANSYS Motor-CAD 的路径添加到环境变量中,然后运行以下代码:

    import os
    import subprocess

    确保 ANSYS Motor-CAD 的路径已添加到环境变量中

    ansys_motor_cad_path = "C:\Program Files\ANSYSEM\ANSYSEM19.3\Win64"
    os.environ["PATH"] += os.pathsep + ansys_motor_cad_path

    启动 ANSYS Motor-CAD

    subprocess.Popen(["motor cad", "-console"])

    2023-09-08 07:36:03
    赞同 1 展开评论
  • 全栈JAVA领域创作者

    对于您遇到的这个问题,有几个可能的解决方法可以尝试:

    1. 确保正确安装了ANSYS Motor-CAD:请确保您已经正确安装了ANSYS Motor-CAD,并且没有发生任何错误或缺失的文件。

    2. 检查COM组件注册:使用管理员权限运行命令提示符,并执行以下命令:

      regsvr32 "C:\Program Files\ANSYS Inc\Motor-CAD\Engine\mcade.dll"
      

      然后再尝试运行您的代码。

    3. 检查Python环境和相关库:确保您的Python环境和相关库(如win32com)正常安装,并且与ANSYS Motor-CAD兼容。

    4. 检查系统环境变量:确保您的系统环境变量中已经正确配置了ANSYS Motor-CAD的路径。

    5. 与ANSYS支持团队联系:如果尝试了以上方法仍然无法解决问题,建议您联系ANSYS的支持团队,向他们咨询这个问题,并提供您的错误信息和代码示例。

    希望以上方法可以帮助您解决问题。如果您有其他疑问,请随时提问。

    2023-09-08 07:36:03
    赞同 展开评论
问答分类:
C++
问答地址: