weigan
发布于 2024-08-26 / 81 阅读
0
0

二次开发如何替换Solidworks原生功能?

使用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来帮助查找。
image.png
这这里通过打开命令捕捉按钮,然后点击需要的按钮,就会在窗口中打印出名字。

真实案例效果🔧✅

这个是群里古月大佬做的案例,使用时按住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;
  }

这时候你就可以在原有功能还在的情况下添加自己的功能。


评论