使用C#替换Solidworks原生功能💻🔄
在开发过程中,如果我们可以将Solidworks的原生功能替换为我们自定义的功能,这将对用户体验带来一个巨大的提升。但这能不能做到哪?
替换原理🔄🔍
如果你阅读过api文档里的时间,就知道有这样一个东西 CommandOpenPreNotify
,这个时间将在命令执行前通知你。此时,打开这个事件的详细文档, 仔细阅读,你会发现这样一句话:
Return Value
0 to execute the command or open a PropertyManager page, 1 to not
结合方法签名,很显然,只需要判断哪个命令是你需要替换的,然后返回1就可以了。
尝试替换自定义属性按钮🛠️🔄
下面我们来实操一个自定义属性按钮。
效果如上,让我们看一下代码
public override void OnConnect()
{
((SldWorks)Application.Sw).CommandOpenPreNotify += Addin_CommandOpenPreNotify;
}
private int Addin_CommandOpenPreNotify(int Command, int UserCommand)
{
if (Command == 963)
{
Application.ShowMessageBox("自定义逻辑...");
return 1;
}
return 0;
}
这里的核心是找到你需要替换的按钮的ID,所有id的列表就在Solidworks的文档里,点击此处打开。
但想要准确的得到一个命令的id,从这个列表里找可能也比较困难,这里也可以通过Solidworks Lookup来帮助查找。
这这里通过打开命令捕捉按钮,然后点击需要的按钮,就会在窗口中打印出名字。
真实案例效果🔧✅
这个是群里古月大佬做的案例,使用时按住Ctrl
就显示Solidworks原来的功能,不按就显示二开修改后的功能。
More✨📊
如果你说我不想取消原有的功能,只是想在原生功能后加上一点点东西。这时候你可以关注一下另外一个事件。
public override void OnConnect()
{
((SldWorks)Application.Sw).CommandCloseNotify += Addin_CommandCloseNotify; ;
}
private int Addin_CommandCloseNotify(int Command, int reason)
{
if (Command == 963)
{
Application.ShowMessageBox("添加自定义逻辑...");
}
return 0;
}
这时候你就可以在原有功能还在的情况下添加自己的功能。