Search code examples
python-3.xvbawin32comsolidworks

Solidworks macro implementation not working with Python


I've got a macro (see below) that will load in a curve using xyz points from a .txt file into Solidworks. To be clear this gives the desired output.

Dim swApp As Object
Dim Part As Object

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
Part.InsertCurveFile("Generic Filepath\Points.txt")

End Sub

I'm trying to get the same macro to run from Python using this implementation:

import win32com.client

sldw = win32com.client.Dispatch('SldWorks.Application')
sldw.NewDocument("C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\lang\english\Tutorial\part.prdot", 0, 0, 0)  

Part = sldw.ActiveDoc
Part.InsertCurveFile("Generic Filepath\Points.txt")  

#Cleanup the com reference. 
del sldw

I know I can run Solidworks macros from Python as I have got some tests to work. When I run the macro Python does not output any kind of error message and nor does it generate anything in Solidworks.

Running the Python code line by line in the editor line Part.InsertCurveFile("Generic Filepath\Points.txt") returns False.

With Solidworks open and a part document open the following works:

import win32com.client
import pythoncom
pythoncom.CoInitialize ()

sldw = win32com.client.GetObject (Class='SldWorks.Application')
Part = sldw.ActiveDoc
Part.InsertCurveFileBegin()
Part.InsertCurveFilePoint(0, 0, 0)
Part.InsertCurveFilePoint(0, 1, 1)
Part.InsertCurveFilePoint(1, 1, 1)
Part.InsertCurveFileEnd()

How do I make the Python implementation work?


Solution

  • It looks the problem with \ (backslash). Replace it on / or declare string as raw (with and r in front of it) r"Generic Filepath\Points.txt"