我正在尝试移植我在VBA中编写的一些代码来控制Solidworks到Python。特别是自动绘制草图。我在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是指向相关标注的指针。我宁愿不创建指针,因为它与我无关,我在VBA中看到它没有必要。
我尝试过使用Python的无,pythoncom.Missing,pythoncom.Empty,“”,“”,0 ......都无济于事。所有这些都给了我一个TypeError。
这是我的相关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
关于如何解决这个问题的任何建议?
答案 0 :(得分:0)
我知道它没有解决您的问题,但也许您可以使用以下解决方法:
swModel.FirstFeature
然后你问这个名字:
swFeat.Name = "Sketch1"
如果它不是您正在寻找的草图,请继续下一个:
swFeat = swFeat.GetNextFeature