基于Python的Solidworks二次开发方法

关于python简易二次开发Solidworks的小程序

第一次动手开发了一个Solidworks的小程序,实验的功能也很简单,出来分享一下,第一次大佬们也可以指出一些问题,来帮助我改进~

此处特别感谢 飛影大佬 的指导!

项目实现思路
我所做的功能非常的简单,就是通过python,来打开Solidworks文件(对已经存在的零件图进行修改),并且使用其自带的函数来进行对Soildworks的简单控制,我所实现的思路就是通过TK模块生成一个简单的GUI界面,通过SW内部的active属性来进行控制。我控制的大致思路还是通过SW内置的宏录制系统,但是由于SW内置的宏录制所出现的代码是VB的,大部分不能直接使用(部分代码包含坐标,如果获取不到是可以直接用的)

如何使用python连接solidworks

此处代码由大佬传授(https://mp.weixin.qq.com/s/xf_lDViBEt0IR-sxPlQVRA不明白可以关注一下大佬的公众号的原文!

首先找到你python路径下的Python38\Lib\site-packages\win32com\client \makepy.py的设置文件
在这里插入图片描述
选择SOLIDWORKS 2018 Type library和SOLIDWORKS 2018 Constant type library的文件 ,打开终端会出现一行地址 例如(AppData\Local\Temp\gen_py\3.8\83A33D31-27C5-11CE-BFD4-00400513BB57x0x26x0.py)
前往该地址,保存两个文件

在这里插入图片描述
这是其中一个文件的内容,该内容就是python在SW中的内置函数格式和参数。

import win32com.client as win32 
import pythoncom
#sw VBA接口引入  
sw_app = win32.Dispatch("Sldworks.application")            #引入sldworks接口
sw_app.Visible = True                                      #是否可视化
arg_Nothing = win32.VARIANT(pythoncom.VT_DISPATCH, None)   #转义VBA中不同变量nothing
sw_app.OpenDoc(r'C:\Users\11927\Desktop\Solidworks二次开发\test1.SLDPRT',1)     #打开二次开发源文件
part = sw_app.ActiveDoc                                    #sldworks 最高访问权限

上面的代码是通过python来进行访问 SW的最高权限,从而使得PYTHON获得控制SW的能力

tk控制界面

在这里插入图片描述
这是我自己做的一个TK界面,十分的简陋了

以下是实现的代码

from PIL import Image,ImageTk
import tkinter as tk
#运用PIL的Iamge方法和tkinter模块进行本项目的编写
window = tk.Tk()
window.title(' 生成器')
window.geometry('500x300')
#建立一个窗体并给重命名修改窗口的大小
j=tk.Label(window,text='high',font=('Arial',12),width=5,height=2)
j.place(x=0,y=50,anchor='w')
l=tk.Label(window,text='long',font=('Arial',12),width=5,height=2)
l.place(x=0,y=100,anchor='w')
K=tk.Label(window,text='wide',font=('Arial',12),width=5,height=2)
K.place(x=0,y=150,anchor='w'#以上三句为为窗口添加标签(anchor参数为方位)
entry1 = tk.Entry(window, show="")  
entry1.place(x=50,y=100,anchor='w')
entry2 = tk.Entry(window, show="")
entry2.place(x=50,y=150,anchor='w')
entry3 = tk.Entry(window, show="")  
entry3.place(x=50,y=50,anchor='w')
#以上三句为添加entry
im=Image.open(r'C:\Users\11927\Desktop\test.GIF')
img=ImageTk.PhotoImage(im)
imLabel=tk.Label(window,image=img).place(x=255,y=125,anchor='w')
b=tk.Button(window,text='run',width=10,height=1,command=hit_command)
b.place(x=200,y=250,anchor='w')
window.mainloop()
#以上三句为为窗口添加button按钮以及实现窗体的循环
#以上代码为插入图片

控制函数

由SW内置自带的宏录制函数,会产生一个VB代码块

例如下列这个 改变长度的VB函数块

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
boolstatus = Part.Extension.SelectByRay(-0.216369440159241, 0.034531910687619, 5.50000000000068E-02, 0.147359869979909, 8.99053212180621E-02, -0.98498837654877, 3.26516300139265E-03, 2, False, 0, 0)
Part.FeatEdit
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("D1@草图1@test2.6.SLDPRT", "DIMENSION", -5.34756715564095E-02, 0.108438751744452, 4.78676892114677E-02, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("D1@草图1@test2.6.SLDPRT", "DIMENSION", -5.34756715564095E-02, 0.108438751744452, 4.78676892114677E-02, False, 0, Nothing, 0)
Dim myDimension As Object
Set myDimension = Part.Parameter("D1@草图1")
myDimension.SystemValue = 0.5
Part.ClearSelection2 True
Part.SketchManager.InsertSketch True
End Sub

通过查阅我们上面SOLIDWORKS 2018 Type library所产生的函数库,可以在其中找到改线的函数SelectByRay
在这里插入图片描述
由此定义可知,在python中如何使用该函数块,并且该函数中的左边也可以直接使用

以下为完整的代码展示

from PIL import Image,ImageTk
import tkinter as tk
import win32com.client as win32 
import pythoncom
#sw VBA接口引入  
sw_app = win32.Dispatch("Sldworks.application")            #引入sldworks接口
sw_app.Visible = True                                      #是否可视化
arg_Nothing = win32.VARIANT(pythoncom.VT_DISPATCH, None)   #转义VBA中不同变量nothing
sw_app.OpenDoc(r'C:\Users\11927\Desktop\Solidworks二次开发\test1.SLDPRT',1)     #打开二次开发源文件
part = sw_app.ActiveDoc                                    #sldworks 最高访问权限
#定义选择修改长度函数
def modify_long():
    myDimension = part.Parameter('D1@草图1')       #对修改的对象进行赋值
    myDimension.SystemValue = entry1.get()       #修改   长  尺寸
#定义选择修改宽度函数
def modify_wide():
    myDimension2 = part.Parameter("D2@草图1")           #对修改的对象进行赋值
    myDimension2.SystemValue = entry2.get()             #修改   宽  尺寸
#定义拉伸函数(改高)
def modify_high():
    part.Extension.SelectByRay(0.249999999999829, 3.66326533407744E-02, 0.042461906089045, -0.525746397352897, -0.288152592392952, -0.800349179525831, 2.39088438353342E-03, 2, False, 0, 0)
    part.ActivateSelectedFeature
    part.Extension.SelectByID2("D1@拉伸1@test1.SLDPRT", "DIMENSION", 0.219736964536031, -0.127304044251369, -5.40747833103912E-02, False, 0, arg_Nothing, 0)
    myDimension3 = part.Parameter("D1@拉伸1")
    myDimension3.SystemValue = entry3.get()

#定义修改总命令函数
def modify_commands():
    modify_long()
    modify_wide()
    modify_high()
    
#建立tk窗口文件
window = tk.Tk()
window.title(' 生成器')
window.geometry('500x300')
#建立标签
j = tk.Label(window,text='high',font=('Arial',12),width=5,height=2)
j.place(x=0,y=50,anchor='w')
l = tk.Label(window,text='long',font=('Arial',12),width=5,height=2)
l.place(x=0,y=100,anchor='w')
K = tk.Label(window,text='wide',font=('Arial',12),width=5,height=2)
K.place(x=0,y=150,anchor='w')
#建立entry
entry1 = tk.Entry(window, show="")  
entry1.place(x=50,y=100,anchor='w')
entry2 = tk.Entry(window, show="")  
entry2.place(x=50,y=150,anchor='w')
entry3 = tk.Entry(window, show="")  
entry3.place(x=50,y=50,anchor='w')
#插入图片
im=Image.open(r'C:\Users\11927\Desktop\test.GIF')
img=ImageTk.PhotoImage(im)
imLabel=tk.Label(window,image=img).place(x=255,y=125,anchor='w')
#命令函数
def hit_command():
    modify_commands()
    part.SaveAs3(r"C:\Users\11927\Desktop\test2.6.SLDPRT", 0, 2)
#按钮定义
b=tk.Button(window,text='run',width=10,height=1,command=hit_command)
b.place(x=200,y=250,anchor='w')
window.mainloop()

在这里插入图片描述
在这里插入图片描述
以上为实现后的样子

声明:
未经本人许可,任何单位及个人不得以任何形式对本文的全部或部分内容做转载、复制或商业用途。

  • 21
    点赞
  • 121
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
SolidWorks可以通过Python编程语言进行二次开发Python是一种简单易学的脚本语言,拥有丰富的库和模块,可以很好地与Solidworks集成。 首先,为了进行SolidWorks二次开发,我们需要安装SolidWorks API以及Python的相关库。SolidWorks API是一组可用于对SolidWorks进行编程访问的库和接口。Python的相关库包括pywin32和comtypes,用于与SolidWorks的COM接口进行交互。 使用Python进行SolidWorks二次开发可以实现许多功能,如自动化生成零件、装配件和工程图。我们可以使用Python脚本读取和修改SolidWorks文件、创建和操作零件和装配件,以及生成和管理工程图。Python也可以帮助我们进行CAD数据的处理和分析,如提取尺寸信息、计算质量和重心等。 在二次开发中,我们可以编写Python脚本来快速完成重复性的任务,提高工作效率。Python的易学性和代码的简洁性使得二次开发变得更加容易,无需编写繁琐的代码,可以快速实现想要的功能。 除了使用已有的库和模块,我们还可以使用SolidWorks的API文档和示例代码来学习和开发自己的功能。SolidWorks提供了详细的API文档,其中包含各种对象和方法的说明,以及示例代码和教程来帮助我们开始二次开发。 总之,通过使用Python进行SolidWorks二次开发,我们可以实现自动化、快速和高效的CAD任务处理,并且具有灵活性和可扩展性。这极大地促进了CAD工程师在实际工作中的效率和创造力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值