俗話說的好:“an image is better than tons of words.” 先上個圖。
1.套路
很明顯,這是一個插件,這個插件是通過“Extending ArcObjec”的方式開發的,相關信息可以扒本博。
通過menu按鈕呼出了toolbox的工具窗口。
細看一下,它是由兩級菜單實現的,第一級是工具類名,第二級是具體的工具按鈕。
具體的呢:
①點擊一級菜單ToolMenu展開二級菜單RasterToolMenu的按鈕;
②二級菜單點擊下去是執行了對應的Command。
2.Command里的實現
①從模板創建一個Command,把一同生成的bmp圖標刪掉,相關加載代碼也在該類中刪掉,因為這個圖沒啥用。
②使該類實現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);
}
}
}