Solidworks窗口程序

     所谓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

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值