当前位置: 首页 > news >正文

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

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 avoidan 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项目就算完成了。虽然很简陋。。

相关文章:

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

Add-In即模块加载项&#xff0c;是一种能够快速扩展桌面应用程序功能的全新扩展方式。 一、创建新项目 1、打开VS2002&#xff0c;选择创建新项目。 2、在搜索框中输入“arcgis pro”&#xff0c;在搜索结果中选择【ArcGIS Pro 模块加载项】创建项目&#xff0c;注意选择语言应…...

浏览器缓存是如何提升网站访问速度的

提升速度&#xff0c;降低负载 浏览器访问一个页面时&#xff0c;会请求加载HTML、CSS和JS等静态资源&#xff0c;并把这些内容渲染到屏幕上。 对浏览器来说&#xff0c;如果页面没有更新&#xff0c;每次都去请求服务器是没有必要的。所以&#xff0c;把下载的资源缓存起来&…...

Linux中几个在终端中有趣的命令

uhh…最近我不知道该更新些什么&#xff0c;所以就更新Linux几个很有趣的命令 文章目录前言1.命令&#xff1a;sl安装 sl输出2. 命令&#xff1a;telnet命令&#xff1a;fortune安装fortune4.命令&#xff1a;rev&#xff08;反转&#xff09;安装rev5. 命令&#xff1a;factor…...

快来来试试SpringBoot3 中的新玩意~

你还在用OpenFeign嘛&#xff1f;快来试试 SpringBoot3 中的这个新玩意&#xff01;声明式HTTP调用 1、由来 Spring Boot3 去年底就已经正式发布&#xff0c;我也尝了一把鲜&#xff0c;最近有空会和小伙伴们慢慢聊聊 Spring Boot3 都给我们带来了哪些新东西。 今天我们就先…...

【寻人启事】达坦科技持续招人ing

​​​​​​​ ❤️一起来探索前沿科技&#xff0c;做有意思的事情~ 我们是谁 达坦科技&#xff08;DatenLord&#xff09;专注于打造新一代开源跨云存储平台。通过软硬件深度融合的方式打通云云壁垒&#xff0c;实现无限制跨云存储、跨云联通&#xff0c;建立海量异地、异构…...

【C/C++基础练习题】简单函数练习题

&#x1f349;内容专栏&#xff1a;【C/C要打好基础啊】 &#x1f349;本文内容&#xff1a;简单函数使用练习题&#xff08;复习之前写过的实验报告&#xff09; &#x1f349;本文作者&#xff1a;Melon西西 &#x1f349;发布时间 &#xff1a;2023.2.11 目录 1.给定某个年…...

【代码随想录训练营】【Day11】第五章|栈与队列|20. 有效的括号|1047. 删除字符串中的所有相邻重复项|150. 逆波兰表达式求值

20. 有效的括号 题目详细&#xff1a;LeetCode.20 由题可知&#xff0c;有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。 那么&#xff0c;我们可以利用栈后进先出的特点&#x…...

基于云原生分布式存储ceph实现k8s数据持久化

文章目录1、初始化集群1.1 集群机器配置1.2 配置主机名1.3 配置hosts文件1.4、配置互信1.5、关闭防火墙1.6、关闭selinux1.7、配置Ceph安装源1.8、配置时间同步1.9、安装基础软件包2、安装ceph集群2.1 安装ceph-deploy2.2 创建monitor节点2.3 安装ceph-monitor2.4 部署osd服务2…...

SpringMVC获取请求参数

SpringMVC获取请求参数 通过ServletAPI获取 将HttpServletRequest作为控制器方法的形参&#xff0c;此时HttpServletRequest类型的参数表示封装了当前请求的报文对象。 RequestMapping("/testServletAPI") // request表示当前请求 public String testServletAPI(H…...

详解浏览器从输入URL到页面展示的过程

用户发出 URL 请求到页面开始解析的这个过程&#xff0c;就叫做导航。 1. 用户输入 当用户在地址栏中输入一个查询关键字时&#xff0c;地址栏会判断输入的关键字是搜索内容&#xff0c;还是请求的 URL。 当用户输入关键字并键入回车之后&#xff0c;这意味着当前页面即将要…...

【吉先生的Java全栈之路】

吉士先生Java全栈学习路线&#x1f9e1;第一阶段Java基础: 在第一阶段:我们要认真听讲,因为基础很重要!基础很重要!基础很重要!!! 重要的事情说三遍。在这里我们先学JavaSE路线&#xff1b;学完之后我们要去学第一个可视化组件编程《GUI》&#xff1b;然后写个《贪吃蛇》游戏耍…...

第二章 Opencv图像处理基本操作

目录1.读取图像1-1.imread()方法2.显示图像2-1.imshow()方法2-2.waitKey()方法2-3.destroyAllWindows()方法2-4.小总结3.保存图像3-1.imwrite()方法4.查看图像属性4-1.常见的三个图像属性1.读取图像 要对一幅图像进行处理&#xff0c;第一件事就是要读取这幅图像。 1-1.imread(…...

字节一面:在浏览器地址栏输入一个 URL 后回车,背后发生了什么?

近段时间&#xff0c;有小伙伴面试字节&#xff0c;说遇到一个面试题&#xff1a; 在浏览器地址栏输入一个 URL 后回车&#xff0c;背后发生了什么&#xff1f; 这里尼恩给大家做一下系统化、体系化的梳理&#xff0c;使得大家可以充分展示一下大家雄厚的 “技术肌肉”&#xf…...

推荐3dMax三维设计十大插件

3dMax是一款功能非常强大的三维设计软件&#xff0c;但无论它的功能多么强大&#xff0c;也不可能包含所有三维方面的功能&#xff0c;这时候&#xff0c;第三方插件可以很好的弥补和增强3dMax的基本功能&#xff0c;下面就给大家介绍十款非常不错的3dMax插件。 森林包&#xf…...

Arduino IDE 2.0.6中 ESP32开发环境搭建笔记

Arduino IDE 2.0.6中 ESP32开发环境搭建 Arduino IDE2.0 已上线一段时间&#xff0c;以后ESP32的学习转至新的IDE中 &#xff0c;需对开发环境进行。 Arduino IDE&#xff12;.&#xff10;与&#xff11;.&#xff10;有很大差异。原来环境搭建方法已完全不同。下文主要记录环…...

商品秒杀接口压测及优化

目录一、生成测试用户二、jmeter压测三、秒杀接口优化1、优化第一步&#xff1a;解决超卖2、优化第二步&#xff1a;Redis重复抢购3、优化第三步&#xff1a;Redis预减库存①商品初始化②预减库存一、生成测试用户 将UserUtils工具类导入到zmall-user模块中&#xff0c;运行生…...

NFC 项目前期准备工作

同学,别退出呀,我可是全网最牛逼的 WIFI/BT/GPS/NFC分析博主,我写了上百篇文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦。 了解项目信息,FAE联系方式,驱动源码等驱动合入内核配置DTS驱动设备节点验证Push nf…...

(C语言)数据的存储

问&#xff1a;1. 数据类型有哪五大类&#xff1f;2. 数据类型的作用是什么与什么&#xff1f;3. 整型又可以具体分为哪五个&#xff1f;为什么字符char也归属于整型&#xff1f;4. 浮点型又可以具体分为哪两类&#xff1f;5. 构造类型就是什么&#xff1f;具体分为哪四类&…...

C语言深度剖析之文件操作

&#x1f497; &#x1f497; 博客:小怡同学 &#x1f497; &#x1f497; 个人简介:编程小萌新 &#x1f497; &#x1f497; 如果博客对大家有用的话&#xff0c;请点赞关注加关注 &#x1f31e; 什么是文件 磁盘上的文件是文件。 但是在程序设计中&#xff0c;我们一般谈的文…...

RNN神经网络初探

目录1. 神经网络与未来智能2. 回顾数据维度和神经网络1. 神经网络与未来智能 2. 回顾数据维度和神经网络 循环神经网络&#xff0c;主要用来处理时序的数据&#xff0c;它对每个词的顺序是有要求的。 循环神经网络如何保存记忆功能&#xff1f; 当前样本只有 3 个特征&#x…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...