从事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成功了 。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删