所谓Solidworks窗口程序,即区别于插件,独立运行的程序,当然这只是我自己的命名。相较于插件程序的种种问题,窗体程序对于入门者来说,要友善很多,也容易很多,我常用来做调试,不用像插件程序每次启动Solidworks。当然窗口程序也有一些缺陷,比如因为是跨线程操作,速度慢要一点。
基本步骤如下:
建立一个WinForm项目:
1、添加如下引用:
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using SolidWorks.Interop.swcommands;
如果在.Net项找不到以上引用,可以直接浏览Solidworks目录下的文件,我一般是复制下来在程序的目录
2、获取Sldworks对象,注意,运行前要先启动solidworks
窗口程序不像插件程序,要手动获取Sldworks对象:
#region 获取SLDWORKS
public static SldWorks swApp { get; set; }
/// <summary>
/// 连接Solidworks
/// </summary>
public static SldWorks ConnectSW()
{
//SldWorks swapp = null;
//尝试连接已打开的Solidworks
if (swApp == null)
{
Process[] processArr = null;
processArr = Process.GetProcessesByName("SLDWORKS");
if (processArr.Length > 0)
{
//通过SldWorks.Application方式
try
{
swApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application");
}
catch (Exception)
{
}
//通过SldWorks.Application.18方式,.18=2010版,.19=2011版,.20=2012版,.21=2013版,.22=2014版,.23=2015版
if (swApp == null)
{
for (int i = 18; i < 28; i++)
{
try
{
swApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application." + i.ToString());
if (swApp != null)
{
break;
}
}
catch (Exception)
{
}
}
}
//通过Guid的方式
if (swApp == null)//2010sw
{
try
{
Guid myGuid1 = new Guid("6894540C-3171-484F-9E97-6A962559BA30");
object processSW = System.Activator.CreateInstance(System.Type.GetTypeFromCLSID(myGuid1));
swApp = (SldWorks)processSW;
}
catch (Exception)
{
}
}
if (swApp == null)//2012sw
{
try
{
Guid myGuid1 = new Guid("B4875E89-91F6-4124-BB63-2539727E98FA");
object processSW = System.Activator.CreateInstance(System.Type.GetTypeFromCLSID(myGuid1));
swApp = (SldWorks)processSW;
}
catch (Exception)
{
}
}
//通过SldWorks.ISldWorks方式
if (swApp == null)
{
try
{
swApp = (SldWorks)Marshal.GetActiveObject("SldWorks.ISldWorks");
}
catch (Exception)
{
}
}
}
}
//尝试连接注册表中注册的solidworks,可未打开状态,SldWorksClass() 方式
if (swApp == null)
{
try
{
//swApp = new SldWorksClass();
}
catch (Exception)
{
}
}
//
return swApp;
}
#endregion
3、有了sldworks对象,就可以开始操作solidworks