俗话说的好:“an image is better than tons of words.” 先上个图。
1.套路
很明显,这是一个插件,这个插件是通过“Extending ArcObjec”的方式开发的,相关信息可以扒本博。
通过menu按钮呼出了toolbox的工具窗口。
细看一下,它是由两级菜单实现的,第一级是工具类名,第二级是具体的工具按钮。
具体的呢:
①点击一级菜单ToolMenu展开二级菜单RasterToolMenu的按钮;
②二级菜单点击下去是执行了对应的Command。
2.Command里的实现
①从模板创建一个Command,把一同生成的bmp图标删掉,相关加载代码也在该类中删掉,因为这个图没啥用。
![](/qrcode.jpg)
②使该类实现IToolCommand接口,以调用扩展方法。
③对相关属性进行赋值。
④在OnClick方法中调用扩展方法,传入tool工具的名字进行调用。
需要注意的是tool工具名指的是如图的Name。
⑤IToolCommand接口及扩展方法代码如下
namespace YToolsForArcMap.Command.Tool
{
internal interface IToolCommand
{
}
internal static class Extend
{
public static void ShowToolCommandWindow<T>(this T t, string toolName) where T:IToolCommand
{
string dllFolderPath =Utils.Path.GetPath.GetThisDllFolderPath();
//打开tool窗口主要代码就是下面3行。
IGPToolCommandHelper gPToolCommandHelper = new GPToolCommandHelperClass();
gPToolCommandHelper.SetToolByName($"{dllFolderPath}/Tools/YToolsforArcMap.tbx",toolName);
gPToolCommandHelper.Invoke(null);
}
}
}