Solidworks を Python に制御するために VBA で記述したコードを移植しようとしています。特にスケッチ編集の自動化。Python で Solidworks SelectById2 を使用すると問題が発生します。VBA では、次のコードは正常に動作します。
Part.Extension.SelectByID2("Sketch1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
私が抱えている問題は、VBA の "Nothing" 値を Python の同等のものに置き換えることです。
Solidworks API Docs から、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
これを理解する方法について何か提案はありますか?