【ArcGIS Pro二次开发】(2):创建一个Add-in项目

news2024/12/26 21:36:12

Add-In即模块加载项,是一种能够快速扩展桌面应用程序功能的全新扩展方式。


一、创建新项目

1、打开VS2002,选择创建新项目。

2、在搜索框中输入“arcgis pro”,在搜索结果中选择【ArcGIS Pro 模块加载项】创建项目,注意选择语言应该是C#,而不是VB。

3、点击下一步,填写项目名称、位置和解决方案名称,可随意,点击创建。

生成的主界面如下:


二、添加一个按钮,并重写OnClick方法

1、在资源管理器中右键点击项目,选择【添加】—【新建项】。

2、在添加新项选项框中,左侧选择【ArcGIS】,主选框中选择【ArcGIS Pro 按钮】,点击添加。

生成按钮后,资源管理器里会新生成一个【Button1.cs】。

【Config.daml】文件里也会自动新增一段</button>代码:

<button id="ProAppModule1_Button1" caption="Button 1" className="Button1" loadOnClick="true" smallImage="pack://application:,,,/ArcGIS.Desktop.Resources;component/Images/GenericButtonBlue16.png" largeImage="pack://application:,,,/ArcGIS.Desktop.Resources;component/Images/GenericButtonBlue32.png">
<tooltip heading="Tooltip Heading">Tooltip text<disabledText /></tooltip>
</button>

</group>中也会新增一行:

<button refID="ProAppModule1_Button1" size="large" />

代码运行的结果:当Pro加载时,会在“菜单栏-加载项-Group 1”中显示新增的按钮。这部分暂时先不修改。

3、双击新生成的【Button1.cs】,在OnClick()中输入:

MessageBox.Show("Hello World");

老惯例了……

三、调试

1、点击菜单【生成】—【生成解决方案】。

2、点击工具栏的【调试】按钮。系统会自动打开ArcGIS Pro。

3、点击打开的ArcGIS Pro的选项卡【加载项】,可以看到下面有一个新的组,组里有一个按钮,这就是我们刚刚新建的按钮。

4、点击按钮,弹出消息框,运行成功。

四、修改新增按钮的布局和属性

主要就是修改【Config.daml】文件的代码。修改后的局部代码如下:

<modules>
    <insertModule id="ProAppModule1_Module" className="Module1" autoLoad="false" caption="Module1">
      <!-- uncomment to have the control hosted on a separate tab-->
      <tabs>
        <tab id="ProAppModule1_Tab1" caption="新的选项卡">
          <group refID="ProAppModule1_Group1"/>
        </tab>
      </tabs>
      <groups>
        <!-- comment this out if you have no controls on the Addin tab to avoid
              an empty group-->
        <group id="ProAppModule1_Group1" caption="新的组" appearsOnAddInTab="false">
          <!-- host controls within groups -->
          <button refID="ProAppModule1_Button1" size="large" />
        </group>
      </groups>
      <controls>
        <!-- add your controls here -->
        <button id="ProAppModule1_Button1" caption="新的按钮" className="Button1" loadOnClick="true" 
				smallImage="Images/BexDog16.png" 
				largeImage="Images/BexDog32.png">
          <tooltip heading="提示">这是提示信息<disabledText /></tooltip>
        </button>
      </controls>
    </insertModule>
  </modules>

修改后调试结果如下:

具体修改内容如下:

(1)新增了一个</tab>,内部引用了一个<group refID="ProAppModule1_Group1"/>。注意refID和下面group的ID要一致。

(2)caption即为各个控件在界面显示的标签。

(3)<group/>下的appearsOnAddInTab默认为true,即会添加到默认的【加载项】选项卡下,如果你新建了选项卡,建议改为【false】。

(4)</tooltip>即为提示信息。

(5)</button>下的【smallImage】和【largeImage】是按钮在界面上显示的图标。这里我更改了图标。首先需要在资源管理器中加入自己的图片,图片格式和大小建议参考系统自带的那2个。然后选择新添加的图片,在右侧属性栏中更改【生成操作】为【内容】。最后在代码里把路径修改好,见上面的代码。

如此,便修改完成。

五、生成Add-In插件

1、如果是第一次生成,点击菜单【生成】—【生成选定内容】。如果不是第一次,可以点击【重新生成选定内容】。待下方消息栏出现如下信息即为生成成功。

2、找到项目目录【bin\Debug\net6.0-windows】下的【.esriAddinX】文件,双击,即可安装到ArcGIS Pro上。

3、 打开ArcGIS Pro。结果和调试时的一致,即为安装成功。

4、点击【工程】—【加载项管理器】,即可看到刚刚安装的工具,如果想移除掉,可以点击右下方的【删除此加载项】。

至此,我们的第一个Add-in项目就算完成了。虽然很简陋。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/339776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenSSL发布修复程序以解决多个安全漏洞!

OpenSSL 项目已发布修复程序以解决多个安全漏洞&#xff0c;包括开源加密工具包中的一个高严重性错误&#xff0c;该错误可能会使用户遭受恶意攻击。 国际知名白帽黑客、东方联盟创始人郭盛华表示&#xff0c;该问题被追踪为CVE-2023-0286&#xff0c;与类型混淆有关&#xff…

激光雷达相关技术

一、参考资料 17篇点云处理综述-点云语义分割、点云物体检测、自动驾驶中的点云处理…… #三维视觉 #点云 3D点云数据标准 自动驾驶之心 自动驾驶之心-专栏 二、重要信息 1. 黑车检测难题 从2018年至今&#xff0c;高线数机械式激光雷达的测距能力一直停留在200米10%反…

Fastjson 1.83漏洞利用猜想

0x00 前言 这篇是去年五月发到i春秋的~ 在不久前fastjson<1.2.83又爆出来了新的问题,详细内容可以参考 https://github.com/alibaba/fastjson/wiki/security_update_20220523,这篇文章主要是抛转引玉,写一种可能的利用思路,详细的利用链可能要等大佬们来给出了。 文内…

【LeetCode】动态规划总结

动态规划解决的问题 动态规划和贪心的区别&#xff1a; 动态规划是由前一个状态推导出来的&#xff1b; 贪心是局部直接选最优的。 动态规划解题步骤 状态定义&#xff1a;确定dp数组以及下标的含义状态转移方程&#xff1a;确定递推公式初始条件&#xff1a;dp如何初始化遍历…

java学习记录day7

类与对象 对象数组与管理 对象数组就是数组里的每个元素都是对象&#xff1a;House[] home new House[10];使用对象数组实现多个House的管理。 拓展:数组的扩充: 扩充原来数组的一半&#xff1a; public void add(House[] home){int newLen home.length*3/21;home Array…

ARM uboot源码分析3-启动第一阶段

一、start.S 解析7 总结回顾&#xff1a;lowlevel_init.S 中总共做了哪些事情&#xff1a; 检查复位状态、IO 恢复、关看门狗、开发板供电锁存、时钟初始化、DDR 初始化、串口初始化并打印 ‘O’、tzpc 初始化、打印 ‘K’。 其中值得关注的&#xff1a;关看门狗、开发板供电锁…

计算机网络1:Tcp三次握手和四次挥手

一、TCP传输的过程-三次握手 1.建立连接并确认连接&#xff08;三次握手&#xff09; ** 过程&#xff1a; ** &#xff08;1&#xff09;客户端向服务端发出连接请求SYN1&#xff0c;seqx&#xff0c;等待服务端响应.状态由CLOSED转为SYN_SENT &#xff08;2&#xff09;服务…

升级到https

现在很多站长都会考虑将自己的站点从http升级到https&#xff0c;不仅是基于安全的考虑&#xff0c;有的也是因为第三方平台的限制&#xff0c;如谷歌浏览器会将http站点标记为不安全的站点&#xff0c;微信平台要求接入的微信小程序必须使用https等。 那如何将一个http站点升…

C++006-C++分支结构练习题

文章目录C006-C分支结构练习题案例练习题目描述 有一门课不及格的学生题目描述 分段函数题目描述 骑车与走路在线练习&#xff1a;总结C006-C分支结构练习题 在线练习&#xff1a; http://noi.openjudge.cn/ch0104/ https://www.luogu.com.cn/ 案例练习 参考&#xff1a;http…

春招Leetcode刷题日记-D1-贪心算法-分配问题

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 D1-贪心算法-分配问题何为贪心力扣455. 分发饼干思路代码何为贪心 1、顾名思义&#xff0c;贪心算法采用贪心的策略&#xff0c;保证每次操作都是局部最优的&#xff0c;从而…

神经网络损失函数分布可视化神器

论文名称和地址&#xff1a;Visualizing the Loss Landscape of Neural Netshttps://arxiv.org/pdf/1712.09913.pdf1.1 背景和动机作者主要想研究几个问题&#xff1a;为什么我们能够最小化高度非凸神经损失函数&#xff1f;为什么得到的最小值这个结果具有泛化性&#xff1f;不…

【C语言进阶】预处理与程序环境

目录一.详解编译与链接1.前言2.翻译环境3.剖析编译过程4.运行环境二.预处理详解1.预定义符号2.剖析#define(1).定义标识符(2).定义宏(3).替换规则(4).#和##(5).宏与函数的对比(6).#undef3.条件编译4.文件包含(1).头文件包含的方式(2).嵌套文件包含一.详解编译与链接 1.前言 在…

《流浪地球2》的现实倒影(三):从脑机接口到数字永生

是人&#xff0c;就会死。这个事实听起来或许很悲哀&#xff0c;但电影《流浪地球2》在一开始&#xff0c;就给出了另一种可能性——疯狂科学家进行数字生命实验&#xff0c;通过连接大脑的电极片&#xff0c;将思维意识上传到计算机&#xff0c;从而让人永生。电影开头的这位印…

《Keras深度学习:入门、实战与进阶》CIFAR-10图像识别

本文摘自《Keras深度学习&#xff1a;入门、实战与进阶》。 https://item.jd.com/10038325202263.html 这个数据集由Alex Krizhevsky、Vinod Nair和Geoffrey Hinton收集整理&#xff0c;共包含了60000张3232的彩色图像&#xff0c;50000张用于训练模型、10000张用于评估模型。…

JUC并发编程学习笔记(一)——知识补充(Threadlocal和引用类型)

强引用、弱引用、软引用、虚引用 Java执行 GC(垃圾回收)判断对象是否存活有两种方式&#xff0c;分别是引用计数法和引用链法(可达性分析法)。 **引用计数&#xff1a;**Java堆中给每个对象都有一个引用计数器&#xff0c;每当某个对象在其它地方被引用时&#xff0c;该对象的…

文献阅读:Scaling Instruction-Finetuned Language Models

文献阅读&#xff1a;Scaling Instruction-Finetuned Language Models 1. 文章简介2. 实验 1. 数据集 & 模型 1. 数据集考察2. 使用模型 2. scale up对模型效果的影响3. CoT对模型效果的影响4. 不同模型下Flan的影响5. 开放接口人工标注指标 3. 结论 文献链接&#xff1a;…

【C++】类和对象(一)

目录一、面向过程和面向对象初步认识二、类的引入三、类的定义四、类的访问限定符及封装4.1、访问限定符4.2、封装五、类的作用域六、类的实例化七、类对象的大小八、this指针8.1、this指针的引出8.2、this指针的特性8.3、C语言和C实现Stack的对比一、面向过程和面向对象初步认…

XSS漏洞,通过XSS实现网页挂马

**今天讲下通过XSS实现网页挂马~*&#xff0c;目的是了解安全方面知识&#xff0c;提升生活网络中辨别度 原理&#xff1a; 实验分为两部分&#xff1a; 1、通过Kali linux&#xff0c;利用MS14_064漏洞&#xff0c;制作一个木马服务器。存在该漏洞的用户一旦通过浏览器访问木…

C语言(C文件处理函数和文件指针)

C语言有很多文件操作函数&#xff0c;这里我们挑了一些重要的开始讲&#xff0c;首先说下这些函数都定义在stdio.h头文件中 目录 一.文件指针 二.文件处理函数 1.fopen&#xff08;打开文件&#xff09; 2.fclose(关闭文件) 3.getc和putc(从文件指针读取字符) 4.I/O工作…

「C++控制台生存游戏」暗黑体素 DarkVoxel 控制台版

“《只有作者能看懂的一款游戏》” 刚进高中前开始写的一款抽象的生存游戏 BUG很多请见谅 ###【点击此处&#xff0c;免费畅玩】### 类似泰拉瑞亚的一款游戏 『暗黑体素 DarkVoxel』 直接上图&#xff01; 用控制台写出如此奇葩的生存游戏&#xff0c;可谓世间少有。 操作…