C# SolidWorks 二次开发 API—连接solidworks
从事二次开发十几年了,一直没有时间好好整理笔记,最近准备花一些时间整理一下。
Solidworks二次开发需要一些C# Vb.net C++ 等编程语言的基础知识,大多使用Visual Studio进行开发。
再一个就是Solidworks要熟悉或者精通,因为任何手工都无法实现的东西,基本上做二次开发也不能实现。
那我们从最基础的连接到solidworks开始:
1.新建一个窗体程序或者控制台应用,我们以窗体程序为例:
加上一个按钮:
2.用NuGet查找solidworks进行dll的引用。自己选择对应版本或者其它包装好的库
(至少包括SolidWorks.Interop.sldworks ,SolidWorks.Interop.swconst,其它的可以删除掉)
3.新建一个公共类
using SolidWorks.Interop.sldworks;
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace CSharpAndSolidWorks
{
public class Utility
{
public static ISldWorks SwApp { get; private set; }
public static ISldWorks ConnectToSolidWorks()
{
if (SwApp != null)
{
return SwApp;
}
else
{
Debug.Print("connect to solidworks on " + DateTime.Now);
try
{
SwApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application");
}
catch (COMException)
{
try
{
SwApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application.23");//2015
}
catch (COMException)
{
try
{
SwApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application.26");//2018
}
catch (COMException)
{
MessageBox.Show("Could not connect to SolidWorks.", "SolidWorks", MessageBoxButtons.OK, MessageBoxIcon.Hand);
SwApp = null;
}
}
}
return SwApp;
}
}
}
}
上面这个代码块是C# 连接Solidworks的代码(EXE程序), 默认是solidworks已经被用户打开了。
这种连接不打开solidworks会提示连接失败。
这样我们可以获取到当前第一个运行的solidworks对象。(exe方式永远只能获取到第一个运行的solidworks对象。dll方式是集成在对应的运行进程中的,所以可以多个同时操作)
4.给按钮增加代码:
private void BtnConnect_Click(object sender, EventArgs e)
{
ISldWorks swApp = Utility.ConnectToSolidWorks();
if (swApp != null)
{
string msg = "This message from C#. solidworks version is " + swApp.RevisionNumber();
swApp.SendMsgToUser(msg);
}
}
运行之后,点击按钮,会提示如下消息,表示我们用Visual Studio连接到已经打开的Solidworks成功了 。
可在此下载源码:https://gitee.com/painezeng/CSharpAndSolidWorks
—————————————–
关于连接可以参考下面这一文章:
Solidworks的多开操作与连接指定版本Solidworks
https://blog.csdn.net/zengqh0314/article/details/105565915
posted @
2019-09-10 10:01
painezeng 阅读(
630) 评论(
0)
编辑
收藏
举报