import win32com.client
import pythoncom
import math
pythoncom.CoInitialize()
fileerror=win32com.client.VARIANT(pythoncom.VT_BYREF|pythoncom.VT_I4, -1)
filewarning=win32com.client.VARIANT(pythoncom.VT_BYREF|pythoncom.VT_I4, -1)
try:
swApp = win32com.client.DispatchEx("SldWorks.Application.32")
swApp.Visible = True
# 创建新零件(默认模板,零件,毫米)
Part = swApp.OpenDoc6(r"E:\desktop\动力活塞板弹簧-1.5mm.SLDPRT", 1, 0, "",fileerror,filewarning)
if Part:
print("新零件创建成功!")
else:
print("创建零件失败!")
except Exception as e:
print("发生错误:", e)
if Part is None:
print("错误:NewDocument() 返回 None,无法创建零件!")
elif not hasattr(Part, "Extension"):
print("错误:part 对象没有 Extension 属性,可能不是有效的 SolidWorks 文档!")
arg_Nothing = win32com.client.VARIANT(pythoncom.VT_DISPATCH,None)
boolstatus = Part.Extension.SelectByID2("草图4", "SKETCH", 0, 0, 0, False, 0, arg_Nothing, 0)
Part.EditSketch()
boolstatus = Part.Extension.SelectByID2("Spline14", "SKETCHSEGMENT", 2.03858265783315E-02, 1.50000000002137E-03, -1.70881193377191E-02, False, 0, arg_Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Spline14", "SKETCHSEGMENT", 2.03858265783315E-02, 1.50000000002137E-03, -1.70881193377191E-02, False, 0, arg_Nothing, 0)
equationCurve = Part.SelectionManager.GetSelectedObject5(1)
boolstatus = equationCurve.SetEquationParameters2("3.1*(t*sin(t)+cos(t))", "3.1*(sin(t)-t*cos(t))", "", 2*math.pi, 3.8*math.pi, False, 0, 8.66025403784451E-04, -4.9999999999998E-04, True, True)
boolstatus = Part.Extension.SelectByID2("Spline14", "SKETCHSEGMENT", 2.03858265783315E-02, 1.50000000002137E-03, -1.70881193377191E-02, False, 0, arg_Nothing, 0)
equationCurve = Part.SelectionManager.GetSelectedObject5(1)
Part.ClearSelection2(True)
Part.SketchManager.InsertSketch(True)
boolstatus = Part.Extension.SelectByID2("草图21", "SKETCH", 0, 0, 0, False, 0, arg_Nothing, 0)
Part.EditSketch()
Part.ClearSelection2(True)
boolstatus = Part.Extension.SelectByID2("Spline16", "SKETCHSEGMENT", -1.5823001555185E-03, 1.50000000002137E-03, -1.97693644219254E-02, False, 0, arg_Nothing, 0)
Part.EditDelete()
points=[-7.44310896393234E-04,2.13268833544406E-02, 0,2.22572936087786E-04,2.09892125961998E-02, 0,1.39881487144148E-03,1.98538834238149E-02, 0 ,1.49086858812133E-03, 1.84730776736171E-02,0,
8.72488077370869E-04,1.79923527087334E-02,0,-4.62715843640031E-04,1.85242186273281E-02,0,-2.63505273955162E-03,1.99605373315806E-02,0,-3.74571757248018E-03,2.03923626637228E-02,0,
-5.65274940202689E-03,2.07692967675423E-02,0,-8.06104399133102E-03,2.07692967675423E-02,0,-9.00118038180804E-03,2.07692967675423E-02,0,-8.06104399133102E-03,2.07692967675423E-02,0,
-9.00118038180804E-03,2.07692967675423E-02,0,-1.03800720714473E-02, 2.06038266007717E-02,0]
pointArray = win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, points)
pointArray = win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_VARIANT, points)
swSketchMgr = Part.SketchManager
swSketchMgr.CreateSpline2(pointArray,1)
if swSketchMgr.CreateSpline2(pointArray,1):
print(1)
Part.GraphicsRedraw2()
Part.ClearSelection2(True)
参考了https://blog.csdn.net/T20151470/article/details/133962095画样条曲线。
倒数第五行中的swSketchMgr.CreateSpline2(pointArray,1)无法运行,但是程序不报错,样条曲线画不出来,通过IF语句检测这句程序,发现没有运行,
