1.前言
由于最近最近在使用solidworks,发现有些操作是比较重复,对于一个零件的修改可能只需要修改其中一个数据,经过查阅一些资料,发现其提供了一些API函数接口可以实现程序化绘图,所以开始了一些二次开发尝试。
2.说明
本人不是专家,也是在摸索当中,记录在操作中遇见的问题,文章中不对的地方,欢迎大家交流指正!!!
正文开始!!!
一、准备工作
软件:VS2019 + Solidworks2022(我是用的这两个,其他也可以)
辅助:有道翻译 + API帮助手册(Solidworks自带的)
二、基本搭建
VS的作用是提供一个我们可以调用API函数的一个载体,Solidworks是我们将API内容实现的工具
1.先使用VS创建项目
(1)使用VS创建项目 ----创建新项目
(2)我使用的是C#,选择的窗体应用
(3)项目名称:简单操作
保存位置:C:\Users\86136\Desktop\Solidworks -C#\ ---建议自己建一个文件夹,保存自己的练习
(4)创建好的界面如下
2.建立与Solidworks的连接
(1)右侧框中,右击引用,选择添加引用
(2)选择浏览,找到 SolidWorks.Interop.sldworks.dll、SolidWorks.Interop.swconst.dll
(3)勾选,确定即可
(4)添加成功后引用中会显示
(5)双击空白处,或者新建一个按键双击
(6)添加如下所示
3.开始画图
根据前面的操作我们已经完成一大半了,下面就开始我们想要的操作,比如画个圆柱,下面我将使用解读API帮助手册+宏录制的方法相互结合
(1)理解画图:我们要画一个圆柱,我们的手动画图的操作步骤:
新建一个空白零件--选择前视基准面---草图绘制---选择圆形---确定位置与尺寸---拉伸凸台---确定拉伸长度,这样一个圆柱就绘制好了
(2)使用程序绘图,也是和手工绘图一样,按照这个思路进行即可,在操作之前,先看一个图(记住这个图,后面我会反复使用):
由图中我们可以发现,一切的起点均是ISldWorks,我们也可以点开API帮助手册
发现要操作API函数,第一个是先拿下ISldWorks,此处接口的使用有很多种声明,我写一个我常用的
ISldWorks swApp = Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application")) as SldWorks;
(3)代码书写,这部分可以按照(2)中提到的整体框架+API帮助手册进行代码书写,或者使用宏录制,对于宏录制我个人是将其作为一个辅助的工具,对于简单的操作,宏录制一般没问题,但是复杂一点可能会存在录制不成功的情况,对于刚开始,我使用宏录制,然后根据宏录制的结果,进行逐一分析。
(4)宏录制:点击第三个就是开始录制
开始录制后第二个标志变成方形,若要结束,点击第二个即可
结束时,会弹出此界面,保存即可
录制完成后,点击如下,然后选择我们录制的代码即可
4.代码分析与书写
我们圆柱的录制如下,代码是VB语言,我们用的C#,所以在书写时会有所区别,但是调用的函数是一致的
代码分析
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Sub main()
Set swApp = Application.SldWorks '就是创建一个最高领导,如上述框架图展示那样
Set Part = swApp.ActiveDoc '还是按照那个框架图,我们要操作的零件、装配体、工程图可以统一理解为一个文档,现在我们要操作文档就要获取其指挥权,在代码里面则是激活它
'下面大致就是按照我们手动绘图的流程进行
boolstatus = Part.Extension.SelectByID2("前视基准面", "PLANE", 0, 0, 0, False, 0, Nothing, 0) '选择基准面
Part.SketchManager.InsertSketch True '插入草图
Part.ClearSelection2 True '清除所选中面
Dim skSegment As Object
Set skSegment = Part.SketchManager.CreateCircle(0#, 0#, 0#, -0.015062, 0.029713, 0#) '圆形绘制,CreateCircle,Creat Circle,创建一个圆,很多函数大致都是如此拼接的
' 下面这两句是调整视角
Part.ShowNamedView2 "*上下二等角轴测", 8
Part.ViewZoomtofit2
'下面部分是进行凸台拉伸
Dim myFeature As Object
Set myFeature = Part.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, 0.05, 0.05, False, False, False, False, 1.74532925199433E-02, 1.74532925199433E-02, False, False, False, False, True, True, True, 0, 0, False)
Part.SelectionManager.EnableContourSelection = False
End Sub
5.使用VS复现
在这里我将会结合API帮助手册
(1)新加一个创建零件的代码,打开API帮助手册,找到老大ISldWorks界面,关注两个地方,Members和下面的C#例子(其他也是如此),我们进行Members界面,在里面寻找一下
我们要新建零件,新---new,零件---Part,大概猜测一下NewPart,往下寻找,就会发现存在,然后点进去看看是否是我们想要的,但根据后面提示,这个方法过时了,后面有新的方法,但是还可以使用(有的好像不行,没有研究过),我这任然用它
swApp.NewPart();//新建零件
(2)激活,无论是看图分析还是宏录制,都会发现需要激活,而且出现了第二个领导IModeDoc2
ModelDoc2 Part = swApp.ActiveDoc;//激活ModelDoc2,激活需要上一层激活
(3)激活后我们就获得了文档的操作权限,我们先点开其Members,这里面我们会用到很多东西
(4)下一步就开始正式画图,按照画图步骤,选择基准面,这里可以根据宏录制提示进行操作
Part.Extension.SelectByID2("前视基准面", "PLANE", 0, 0, 0, fales, 0, null, 0);
(5)插入草图,草图---Sketch,Members中有一个SketchManger,草图管理,这就是我们对草图进行操作的入口,然后我们继续往里面挖,按照手动绘图顺序,插入草图,绘制圆
Part.SketchManager.InsertSketch(true);//插入草图
Part.SketchManager.CreateCircle(0 ,0 , 0 , 0 , 0.25 , 0);//绘制圆,这个函数API中有解释,基于圆心和圆上的一个点创建一个圆。
(6)然后就是拉伸,这个函数的参数太多了,就大家自己查询吧,我将其所有结合起来如下,这样一个直径500,拉伸50的圆柱就写好了
ISldWorks swApp = Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application"))as SldWorks; //创建最高领导swAPP
swApp.NewPart();
ModelDoc2 Part = swApp.ActiveDoc;//激活ModelDoc2,激活需要上一层激活
Part.SketchManager.InsertSketch(true);//插入草图
Part.SketchManager.CreateCircle(0 ,0 , 0 , 0 , 0.25 , 0);//绘制圆,这个函数API中有解释,基于圆心和圆上的一个点创建一个圆。
//进行拉伸
Part.FeatureManager.FeatureExtrusion2(true, false, false, 0, 0, 0.05, 0.01, false, false, false, false, 1.74532925199433E-02, 1.74532925199433E-02, false, false, false, false, true, true, true, 0, 0, false);
(7)效果如下
到这对于基本的简单操作就结束了