C# SolidWorks 二次开发 API---调用Solidworks命令

	在开发过程中,大家可能会遇到我想执行某个命令,但是api中没有提供对应的方法。

比如说用户选中一个尺寸时,solidworks的左侧属性框就会自动出来(有个选项可以控制),但此时如果我们想关闭属性框。应该怎么操作? 通过正常的测试可以发现按esc就可以。
当然如果直接发送系统的键盘命令的话,还需要先切换焦点到solidworks中。虽然 也可以实现,相对麻烦。
这时候我们可以通过另一种方式来执行命令,这个方式和我们手动点击菜单中的命令按钮是一样的效果。
这个我就不细说了,下面看一下简单的例子:

首先需要引用SolidWorks.Interop.swcommands
在这里插入图片描述
代码比较简单

			 SldWorks swApp = PStandAlone.GetSolidWorks();

            //执行命令监控
            swApp.CommandOpenPreNotify += SwApp_CommandOpenPreNotify;

            //请参考SolidWorks.Interop.swcommands

            //swCommands_e 命令操作

            //swMouse_e  鼠标操作

            //打开选项对话框
            //swApp.RunCommand((int)swCommands_e.swCommands_Options, "");

            //开始3d草图
            swApp.RunCommand((int)swCommands_e.swCommands_3DSketch, "");

            //单击右键
            //swApp.RunCommand((int)swMouse_e.swMouse_Click, "");

在零件或者装配体的状态下执行后,就会看到solidworks已经在3d草图状态下了。
在这里插入图片描述

下面这个事件就可以对执行的命令进行记录。还可以限制用户进行一些特殊的命令,如下面的代码就禁用了过滤面命令。
这个可以扩展很多功能,比如做一些标准化管理,限制用户乱改配置。

 		/// <summary>
        /// 在执行命令前通知。
        /// </summary>
        /// <param name="Command"></param>
        /// <param name="UserCommand"></param>
        /// <returns></returns>
        private int SwApp_CommandOpenPreNotify(int Command, int UserCommand)
        {
            Debug.Print($@"command is :{Enum.GetName(typeof(swCommands_e), Command)}");

            Debug.Print($@"user command Id is :{UserCommand}");

            if (Command == (int)swCommands_e.swCommands_FilterFaces)
            {
                MessageBox.Show("Fillet Faces Command is disable!");
                return 1;
            }

            return 0;
        }

在用户点击过滤面的时候就会出现:
在这里插入图片描述

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Paine Zeng

如果对有帮助,请我喝咖啡吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值