Solidworks二次开发(C# .net API):如何通过程序创建一个模型
前言
前面两篇文章介绍了如何通过c#二次开发AutoCAD。既然已经学会了如何通过程序创建一个二维模型,那么今天就来研究一下如何通过程序创建一个三维模型,即如何通过.net API开发Solidworks。当然,这两个软件的二次开发不是三天两头能研究明白的,主打一个大胆尝试,不求甚解…
一、开发工具
我使用的是 Visual Studio 2022 + Solidworks 2022 + .NET Framework 4.7.2。版本不是重点,可根据自己实际来选择。
二、项目创建
(一)新建窗体应用
- 打开Visual Studio,新建一个Windows 窗体应用(.Net Framework)
- 选择创建的项目然后右键→添加→引用→浏览,在弹出的窗口中找到Solidworks安装目录下的"…SOLIDWORKS\api\redist"文件夹,添加
SolidWorks.Interop.sldworks
和SolidWorks.Interop.swconst
这两个类库文件。然后点击确定。
(二)窗体布局
在空白窗体中依此拖入1个RichTextBox和4个Button,其布局和控件名称如下图所示。
(三)新建工具类
这里添加一个工具类,目的是封装一些通用的方法,同时让主程序看上去更加简洁。 选择创建的项目然后右键→添加→类,在弹出的窗口中选择“类”,其名称改为“SWtool.cs”,然后点击添加。
三、代码编写
(一)添加引用
在SWtool.cs
中添加引用SolidWorks.Interop.sldworks
和SolidWorks.Interop.swconst
,申明1个全局变量(swApp
)为后面开发做准备。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
namespace GenerateSmileFace
{
internal class SWtool
{
private SldWorks swApp;
}
}
(二)添加事件
回到窗体设计界面,依次双击4个Button按钮,为其添加事件。同时,在“Form1.cs”中申明1个全局变量(swApp
),并创建1个SWtool
对象。代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using SolidWorks.Interop.sldworks;
namespace GenerateSmileFace
{
public partial class Form1 : Form
{
private SldWorks swApp; //申明swApp全局变量
SWtool st = new SWtool(); //创建SWtool对象
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
}
private void button3_Click(object sender, EventArgs e)
{
}
private void button4_Click(object sender, EventArgs e)
{
Application.Exit();//关闭程序
}
}
}
(三)功能模块开发
- 在button1_Click事件中添加如下代码:
private void button1_Click(object sender, EventArgs e)
{
if (st.isSWopen())
{
richTextBox1.AppendText(st.CurrentTime() + ":SolidWorks已经处于打开状态!\n");