![4dd67f3a7a62da4ee37f7737b8e3b3fc.png](https://i-blog.csdnimg.cn/blog_migrate/0312156bbebdc2af8e1e82256d2bab19.jpeg)
最近在使用ArcGIS进行数据处理过程中,发现有些功能用现有工具无法实现,比如批量修改拓扑错误,在网上搜了下,需要自定义开发,于是琢磨了下ArcGIS的插件。这里记录最简单的插件实现案例,具体功能代码可以自由发挥。
ArcGIS 插件(Add-ins)可以让用户更加容易的自定义和扩展ArcGIS Desktop应用程序,它创建一系列自定义工具提供了一个公开的基础框架,打包压缩成了一个单独的文件。 Add-ins插件能够很方便的在用户之间共享,因为它们既不需要安装程序 ,也不需要组件模型(COM)注册。
1、安装visual studio 2019。根据不同arcgis版本需要对应不同的vs版本,这个可以在官网上查到。
arcgis10.6需要对应vs2017及以上,装更新的总不会错。
直接在官网上下载vs2019 community版本,免费使用,选择.net模块。
https://visualstudio.microsoft.com/zh-hans/vs/
2、安装好arcgis desktop(arcmap),和arcgis object sdk for net framework
3、打开vs,新建一个arcgis add-in工程
![f59595cd34c6e244c456813256901905.png](https://i-blog.csdnimg.cn/blog_migrate/121fe3bc33cb889053762ebe4d30dc98.jpeg)
4、填写工程基本信息
![d77b93bc2e9f233650f5ada8975a8db8.png](https://i-blog.csdnimg.cn/blog_migrate/a58701aff2402bb064cd52fd332af025.png)
5、填写插件创建向导
![1c35cb0aa4528b86b6204678d528e877.png](https://i-blog.csdnimg.cn/blog_migrate/15ec740691ef915efe01634518f74cd8.png)
6、这里举个最简单的例子,创建一个按钮插件,预想效果:点击插件按钮,弹出一个对话框,可以输入文字,点对话框中按钮会弹出一个ok。
![34da4fca0096ee4b04a6eeb203bd0113.png](https://i-blog.csdnimg.cn/blog_migrate/7903f9a17f98887f191c7c0ffe17adde.jpeg)
7、在解决方案资源管理器中,选中解决方案arcmapaddin1,右键,添加Windows窗体,
![32467d08dfccec8614f61da29df348b7.png](https://i-blog.csdnimg.cn/blog_migrate/adcbf6c99077617f624f5db4b1aa08a3.jpeg)
8、资源管理器列表中会多出一个Form1,这个就是我们点击插件后会出现的弹框
![228e3535891b7b7a3eb1d6779a5d7e31.png](https://i-blog.csdnimg.cn/blog_migrate/9e2ec46d7b0503d8313940c65a41c303.png)
9、双击Form1.cs,会打开窗口设计界面,从工具箱中选择一个label,一个textbox,一个button按钮,因为只是测试,随便摆放一下。
![c545a493744621d3788f57130d3c4d5f.png](https://i-blog.csdnimg.cn/blog_migrate/874c7bfcf2e8e21fcb78a319ec5eb976.png)
10、希望点击button1后会弹出一个ok的确认框,则双击button1,跳转到Form1.cs的代码界面,在button1_click的响应函数中加一行代码即可:
MessageBox.Show("OK");
![90da18c41a29fcdaa9e50e48b6fc539e.png](https://i-blog.csdnimg.cn/blog_migrate/1b1fa66f0ba073866526c6eff24f4b90.jpeg)
11、跳转到Button1.cs按钮,在on_click响应函数中添加两行代码,这样点击插件的按钮时就能弹出我们设计的form1了
Form1 form1 = new Form1();
form1.Show();
![b6a5e2aa6f9f72857f42bf76b3ecb149.png](https://i-blog.csdnimg.cn/blog_migrate/4774f8e219ba7be3b851bd83cf4d343e.jpeg)
12、右键解决方案资源管理器中arcmapaddin1,选择生成,进行编译
![63bbc10a58eeb95be75746020506958e.png](https://i-blog.csdnimg.cn/blog_migrate/c1390742b42bdad56c4c18ff97784120.png)
13、生成成功
![f4eded8102c183606044549e09cc8f7d.png](https://i-blog.csdnimg.cn/blog_migrate/827a16c1270819cae573ff4351336948.png)
14、在arcmap中添加插件,在菜单栏customize下点击插件管理器,add-in manager
![b3af409a47d68ce62921f65744c31731.png](https://i-blog.csdnimg.cn/blog_migrate/21f7b9ceb19ab05a58e0b46dc8aa07f1.png)
15、其中可以看到my add-in中就有我们写好的ArcMapAddin1这个插件了,点击下面的customize按钮
![d943c5e47dd7cb6d731069d7eae5b8ac.png](https://i-blog.csdnimg.cn/blog_migrate/f2480d88031b919bb135e0a759ab9b81.jpeg)
16、在customize界面,点击commands选项卡,找到左边列表中的Add-in,右边出现的My button就是我们写的插件了,用鼠标选中拖到一个工具栏摆好。
![8e43c917e4c104143e737ca723bcf70b.png](https://i-blog.csdnimg.cn/blog_migrate/c698deb46e02f03835822f6441928129.jpeg)
17、点击弹出对话框,实现预期效果。
![4a6819df4c3b4b753ce6775a25aab6e0.png](https://i-blog.csdnimg.cn/blog_migrate/363b8f830776e2e74c36dc96d6a13678.jpeg)
18、后续就可以琢磨写出更复杂的代码,让插件有更多使用功能了。