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

C# SolidWorks 二次开发 API —《入门教程》完结

目前计划就按这个思路进行博客的发布,如果大家看到此有什么想法或者开发遇到什么问题,可以留言给我,大家一起探讨.

也可以加QQ群90216591 共同研究。

源代码下载:

https://gitee.com/painezeng/CSharpAndSolidWorks
https://github.com/painezeng/CSharpAndSolidWorks

当前入门系列已经全部完成,希望对新朋友有些帮助。

SolidWorks API
	API
		连接Solidworks
		打开和创建新零件
		读取零件属性
		修改零件
		遍历零件特征
		遍历装配体
		遍历工程图视图与球标
		装配新零件
		导出x_t/dwg
		插入库特征
		选择过滤
		清空草图的几何关系
		选择命名的实体/面
		遍历草图中的对象
		给文件增加第三方属性
		显示提示信息
		高级选择
		包围框生成(包括装配体方案)
		测量与获取结果
		获取质量属性
		Add-in的建立
		自动注册插件与更新方案
		Pane创建页面(预览BOM)
		给零件加上材质
		给选定面增加颜色
		打断连接关系
		替换零件 
		PMP新特征
		显示拖拽
		MacroFeature的生成
		等待用户选择后继续操作
		打包文件Pack and Go
		插入块 和 属性块
		工程图中获取模型
		给已有特征增加几何关系
	实例
		创建草图中心点
		自增Note插入
		球标位置自动优化
		批量导出实体,生成新装配体。
		随机上色
		屏幕1:1显示实物