我正在尝试将我用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是指向关联标注的指针。我不想创建指针,因为它与我无关,而且我在VBA中看到它是不必要的。
我尝试过使用Python的None,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 对于如何解决这个问题,有什么建议吗?
发布于 2015-02-19 22:39:19
我知道这不能解决你的问题,但也许你可以使用一个变通的方法:
swModel.FirstFeature然后你问他的名字:
swFeat.Name = "Sketch1"如果这不是你要找的草图,那就去看下一个:
swFeat = swFeat.GetNextFeature发布于 2022-01-31 03:05:15
尝试将"ffff“更改为:
arg1 = win32com.client.VARIANT(pythoncom.VT_DISPATCH, None)
to get:
doc.Extension.SelectByID2("Sketch1", "SKETCH", 0, 0, 0, False, 0, arg1, 0)致谢:http://joshuaredstone.blogspot.com/2015/02/solidworks-macros-via-python.html
https://stackoverflow.com/questions/19454804
复制相似问题