C# SolidWorks 二次开发 API—连接solidworks

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
编辑 
收藏 
举报