首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python64位win32com (Solidworks-API)时出现异常:异常SldWorks.Application.InvokeTypes

使用Python64位win32com (Solidworks-API)时出现异常:异常SldWorks.Application.InvokeTypes
EN

Stack Overflow用户
提问于 2012-11-20 23:52:31
回答 1查看 1.1K关注 0票数 1

我的Windows Server2003标准x64版有64位的Python2.7 ( Python -2.7.3.amd64.msi)和64位的win32扩展(pywin32-218.win-amd64-py2.7.exe)。我的应用程序是SolidWorks 2012 x64版。然后我用

代码语言:javascript
复制
C:\Python27\Lib\site-packages\win32com\client\makepy.py "D:\Program Files\SolidWorks Corp\SolidWorks\sldworks.tlb" the file 83A33D31-27C5-11CE-BFD4-00400513BB57x0x20x0.py 

并使用

代码语言:javascript
复制
C:\Python27\Lib\site-packages\win32com\client\makepy.py "D:\Program Files\SolidWorks Corp\SolidWorks\swconst.tlb" the file 4687F359-55D0-4CD3-B6CF-2EB42C11F989x0x20x0.py

我的以下代码在带有32位Python2.4和32位Win32扩展的32位Windowes XP上运行良好。但是在我的64位服务器上,我通过调用ExitApp()-method得到了一个异常"SldWorks.Application.InvokeTypes“。原因是什么?我如何解决这个问题?谢谢你的提示,托马斯

代码语言:javascript
复制
 try:

        pythoncom.CoInitializeEx(pythoncom.COINIT_APARTMENTTHREADED)

        sldworks = gencache.EnsureModule('{83A33D31-27C5-11CE-BFD4-00400513BB57}', 0x0, 20, 0) 
        print "sldworks = " + str(sldworks)       
        swconst = gencache.EnsureModule('{4687F359-55D0-4CD3-B6CF-2EB42C11F989}', 0x0, 20, 0) 
        print "swconst = " + str(swconst)   


        sw = sldworks.ISldWorks(DispatchEx('SldWorks.Application'))  
        print "sw = " + str(sw)   

        sw.ExitApp() 

    except Exception, value:        
        print "Exception occured, value = ", value 

下面是打印结果:

代码语言:javascript
复制
sldworks = module 'win32com.gen_py.83A33D31-27C5-11CE-BFD4-00400513BB57x0x20x0' from 'C:\Python27\lib\site-packages\win32com\gen_py\83A33D31-27C5-11CE-BFD4-00400513BB57x0x20x0.pyc'  

swconst = module 'win32com.gen_py.4687F359-55D0-4CD3-B6CF-2EB42C11F989x0x20x0' from 'C:\Python27\lib\site-packages\win32com\gen_py\4687F359-55D0-4CD3-B6CF-2EB42C11F989x0x20x0.pyc'        

sw = win32com.gen_py.SldWorks 2012 Type Library.ISldWorks instance at 0x82548360  

Exception occured, value = SldWorks.Application.InvokeTypes 
EN

回答 1

Stack Overflow用户

发布于 2012-11-21 20:39:01

使用

代码语言:javascript
复制
sw = win32com.client.Dispatch("SldWorks.Application")

相反,

代码语言:javascript
复制
sw = sldworks.ISldWorks(DispatchEx('SldWorks.Application'))

与Python2.432位和win32扩展32位,它的工作很好。

托马斯

Diesen Beitrag melden Beitrag löschen

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13476933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档