文章目录
前言
能够对solidworks进行基本的参数修改的操作后,开始练习新建组装等操作。
步骤
1.通过录制宏,自动绘图
因为本人对Solidworks的操作,了解的非常非常的少,从来没有用过,所以只能绘制简单操作。
以下丑图形就是本人所画!切勿嘲笑,非专业绘图人员!
通过录制宏获取VB代码如下:
python复写VB代码如下(示例):
skSegment1 = Part.SketchManager.CreateLine(-0.048795, 0.036914, 0, -0.010456, -0.030693, 0)
skSegment2 = Part.SketchManager.CreateLine(-0.046616, 0.036914, 0, 0.077874, 0.10751, 0)
skSegment3 = Part.SketchManager.CreateLine(0.077874, 0.10751, 0, 0.108911, 0.052778, 0)
skSegment4 = Part.SketchManager.CreateLine(0.104995, 0.052778, 0, -0.009218, -0.029035, 0)
skSegment5 = Part.SketchManager.CreateLine(-0.009218, -0.029035, 0, 0.064043, -0.034573, 0)
skSegment6 = Part.SketchManager.CreateLine(-0.046616, 0.036914, 0, 0.064043, -0.031804, 0)
skSegment7 = Part.SketchManager.CreateLine(0.077874, 0.10751, 0, 0.064043, -0.031804, 0)
skSegment8 = Part.SketchManager.CreateLine(0.108911, 0.052778, 0, 0.064043, -0.034573, 0)
skSegment9 = Part.SketchManager.CreateLine(0.104995, 0.052778, 0, 0.178241, 0.076312, 0)
boolstatus1 = Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", 0.048329634906583, -3.7731758658148E-04, -4.79523786397384E-02, False, 0, Nothing, 0)
boolstatus2 = Part.Extension.SelectByID2("Point6", "SKETCHPOINT", 0.104995317939597, 5.27778683844579E-02, 0, False, 0, Nothing, 0)
boolstatus3 = Part.Extension.SelectByID2("Point6", "SKETCHPOINT", 0.106216416398708, 4.75317583675488E-02, 0, False, 0, Nothing, 0)
2.修改问题
1、VB中0#表示浮点型,python运行显示格式错误
修改方案:把0#换成0即可
2、Nothing并不是python中的类型,所以需要转换
直接讲python转换为Nothing会显示新的报错。
修改方案:打开swcommand文件,根据报错搜索SelectByID2 函数,修改第第 8 位为 (9, 1)中的9为16进制 (0x0009, 1),保存。
并添加代码::
import pythoncom
arg_Nothing = win32.VARIANT(pythoncom.VT_DISPATCH, None)
最后将Nothing替换为arg_Nothing即可。
完整代码如下:
import win32com.client as win32
import pythoncom
from swconst import constants
sw_app = win32.Dispatch("Sldworks.application")
sw_app.Visible = True
arg_Nothing = win32.VARIANT(pythoncom.VT_DISPATCH, None)
Part = sw_app.ActiveDoc
skSegment1 = Part.SketchManager.CreateLine(-0.048795, 0.036914, 0, -0.010456, -0.030693, 0)
skSegment2 = Part.SketchManager.CreateLine(-0.046616, 0.036914, 0, 0.077874, 0.10751, 0)
skSegment3 = Part.SketchManager.CreateLine(0.077874, 0.10751, 0, 0.108911, 0.052778, 0)
skSegment4 = Part.SketchManager.CreateLine(0.104995, 0.052778, 0, -0.009218, -0.029035, 0)
skSegment5 = Part.SketchManager.CreateLine(-0.009218, -0.029035, 0, 0.064043, -0.034573, 0)
skSegment6 = Part.SketchManager.CreateLine(-0.046616, 0.036914, 0, 0.064043, -0.031804, 0)
skSegment7 = Part.SketchManager.CreateLine(0.077874, 0.10751, 0, 0.064043, -0.031804, 0)
skSegment8 = Part.SketchManager.CreateLine(0.108911, 0.052778, 0, 0.064043, -0.034573, 0)
skSegment9 = Part.SketchManager.CreateLine(0.104995, 0.052778, 0, 0.178241, 0.076312, 0)
boolstatus1 = Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", 0.048329634906583, -3.7731758658148E-04, -4.79523786397384E-02, False, 0, arg_Nothing, 0)
boolstatus2 = Part.Extension.SelectByID2("Point6", "SKETCHPOINT", 0.104995317939597, 5.27778683844579E-02, 0, False, 0, arg_Nothing, 0)
boolstatus3 = Part.Extension.SelectByID2("Point6", "SKETCHPOINT", 0.106216416398708, 4.75317583675488E-02, 0, False, 0, arg_Nothing, 0)
Part.SaveAs3(r"D:\船舱\test\test.SLDPRT", 0, 2)
最后就会生成我画的丑图啦!再放一次!
总结
我觉得Solidworks中绘图方式,就是对象名+位置,python复写的过程就是对位置对象的位置生成的过程。
才疏学浅,如有问题,希望大佬多多指教!
循序渐进,继续加油!