C# SolidWorks 二次开发 API --- 创建Pane页面(预览BOM)

今天讲一下怎么在Solidworks界面中显示出窗体界面。

今天的功能是在右边提前预览BOM 清单,功能比较简单。预览图如下:

由于不是插件的形势,所以效率不是太高,如果大家想速度快,请自己改成插件形式,其实更好的方法是做成插件,可以在打开装配体之后自动预览BOM, 时间关系,这里仅作为示例。

这里面涉及到的功能大概有,遍历装配体,遍历零件属性,组织层级结构等等。

C# SolidWorks 二次开发 API --- 创建Pane页面(预览BOM)_第1张图片

完成后效果如下图:

C# SolidWorks 二次开发 API --- 创建Pane页面(预览BOM)_第2张图片

下面只显示了关键的页面加载代码,实际的代码请参考源码: 

https://gitee.com/painezeng/CSharpAndSolidWorks

 private void btn_Pane_Click(object sender, EventArgs e)
        {
            //注意: 这里只是显示自己的窗体到solidworks中,目前还是走的exe的方式 .
            //真正开发的时候应该在DLL中加入,这样速度会快很多.  exe读bom需要40s dll 只需要3秒左右.
            //获取当前程序所在路径
            string Dllpath = Path.GetDirectoryName(typeof(MyPane).Assembly.CodeBase).Replace(@"file:\", string.Empty);

            var imagePath = Path.Combine(Dllpath, "bomlist.bmp");

            ISldWorks swApp = Utility.ConnectToSolidWorks();

            string toolTip;

            toolTip = "BOM List";

            //创建页面
            if (taskpaneView != null)
            {
                taskpaneView.DeleteView();
                Marshal.FinalReleaseComObject(taskpaneView);
                taskpaneView = null;
            }

            taskpaneView = swApp.CreateTaskpaneView2(imagePath, toolTip);

            MyPane myPane = new MyPane(swApp);

            myPane.Dock = DockStyle.Fill;
            // myPane.Show();

            //在页面中显示窗体(嵌入)

            taskpaneView.DisplayWindowFromHandlex64(myPane.Handle.ToInt64());
        }

如果大家有什么问题,可以留言给我。

你可能感兴趣的:(solidworks二次开发,C#)