Python SelectById2的指针标注

Python SelectById2的指针标注,python,solidworks,Python,Solidworks,我正在尝试将我在VBA中编写的一些代码移植到Python中,以控制Solidworks。特别是自动编辑草图。我在Python中使用Solidworks SelectById2时遇到问题。在VBA中,以下代码可以正常工作: Part.Extension.SelectByID2("Sketch1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0) 我遇到的问题是用一些Python等价物替换VBA的“Nothing”值 从Solidworks API文档中,Sele

我正在尝试将我在VBA中编写的一些代码移植到Python中,以控制Solidworks。特别是自动编辑草图。我在Python中使用Solidworks SelectById2时遇到问题。在VBA中,以下代码可以正常工作:

Part.Extension.SelectByID2("Sketch1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
我遇到的问题是用一些Python等价物替换VBA的“Nothing”值

从Solidworks API文档中,SelectByID2需要的是:

SelectByID2(Name, Type, X, Y, Z, Append, Mark, Callout, SelectOption)
其中Callout是指向关联的Callout的指针。我宁愿不创建指针,因为它与我无关,而且我在VBA中看到它是不必要的

我尝试过使用Python的None,pythoncom.Missing,pythoncom.Empty,“,”,0。。。都没有用。所有这些都给了我一个打字错误

以下是我的相关Python代码:

import win32com.client
import pythoncom

pythoncom.CoInitializeEx(pythoncom.COINIT_APARTMENTTHREADED)

sldworks = win32com.client.gencache.EnsureModule('{83A33D31-27C5-11CE-BFD4-00400513BB57}', 0x0, 20, 0) # Solidworks OLE Automation 1.0 Type Library
swconst = win32com.client.gencache.EnsureModule('{4687F359-55D0-4CD3-B6CF-2EB42C11F989}', 0x0, 20, 0)  # Solidworks 2012 Constant Type Library

sw = sldworks.SldWorks()
sw.Visible = 1
model_path = "Y:\\Templates\\Solidworks\\test.SLDPRT"
doc, errors, warnings = sw.OpenDoc6(model_path, swconst.constants.swDocPART, swconst.constants.swOpenDocOptions_Silent, "", pythoncom.Missing, pythoncom.Missing)
sw.ActivateDoc2(model_path, False,pythoncom.Missing)
Part = sw.ActiveDoc  

try:
    Part.Extension.SelectByID2("Sketch1", "SKETCH", 0, 0, 0, False, 0, ffff, 0)
except Exception, value:        
    print "Exception occured, value = ", value 

关于如何解决这个问题,有什么建议吗?

我知道这并不能解决您的问题,但也许您可以使用以下解决方法:

swModel.FirstFeature
然后你问我的名字:

swFeat.Name = "Sketch1"
如果它不是您要寻找的草图,请前往下一个草图:

swFeat = swFeat.GetNextFeature

我是否正确地理解了,它只在Part.Extension.SelectByID2()行中失败?pythoncom.Missing对sw.OpenDoc6()有效吗?是的,它对带有pythoncom.Missing的sw.OpenDoc6()有效。当我尝试在SelectByID2()中使用pythoncom.Missing时,我得到一个TypeError消息“类型为'PyOleMissing'的对象无法转换为COM变量”,我在表12-2中找到了COM变量列表。这就是为什么pythoncom.Missing不起作用的原因。我现在尝试使用该表中列出的所有变体,但都得到了TypeError。有趣的建议。像这样的事情可能已经奏效了。不幸的是,我不再有Solidworks可供试用:(