C# SolidWorks 二次开发 API---让用户选择对象后执行操作

在做一些交互操作的时候,有时候需要用户做选择。比如对象很多的时候,让用户指定选择某个特征,或者基准面等等。
我用一个简单的例子说明一下如何处理。
这个是例用了solidworks提供的事件来操作,我们需要进行事件的绑定。
查看我的API中文宝典,发现有个官方例子:
在这里插入图片描述
这例子也比较简单,我就不多说了。
在这里插入图片描述
代码部分:

  //用于事件对象共享。
        private PartDoc partDoc = null;

        private void btnUserSelectFirst_Click(object sender, EventArgs e)
        {
    
    
            SldWorks swApp = Utility.ConnectToSolidWorks();

            if (swApp != null)
            {
    
    
                ModelDoc2 swModel = (ModelDoc2)swApp.ActiveDoc;

                partDoc = swModel as PartDoc;
                //为当前文件增加选择对象之后 通知事件
                partDoc.UserSelectionPostNotify += PartDoc_UserSelectionPostNotify;
            }
        }

        /// <summary>
        /// 选择之后 处理事件内容
        /// </summary>
        /// <returns></returns>
        private int PartDoc_UserSelectionPostNotify()
        {
    
    
            SldWorks swApp = Utility.ConnectToSolidWorks();

            ModelDoc2 swModel = (ModelDoc2)swApp.ActiveDoc;

            var swSelMgr = (SelectionMgr)swModel.SelectionManager;

            var selectType = swSelMgr.GetSelectedObjectType3(1, -1);

            SendMessageToUser("You Select :" + Enum.GetName(typeof(swSelectType_e), selectType));

            return 1;
        }

        /// <summary>
        /// 做完通知之后 ,去掉事件绑定
        /// </summary>
        /// <param name="s"></param>
        private void SendMessageToUser(string s)
        {
    
    
            SldWorks swApp = Utility.ConnectToSolidWorks();

            ModelDoc2 swModel = (ModelDoc2)swApp.ActiveDoc;

            swApp.SendMsgToUser(s);

            partDoc.UserSelectionPostNotify -= PartDoc_UserSelectionPostNotify;
        }

逻辑如下:当点击界面上的按钮之后,会给当前零件增加一个事件绑定。用于当用户选择对象之后,进行某些操作。
执行完操作之后,删除绑定(这里按实际需要处理)。

我这个例子结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zengqh0314/article/details/107690756