ArcGIS Pro SDK 001 基于SDK创建第一个插件
ArcGIS Pro SDK只能开发ArcGIS Pro软件上的插件,不能单独开发独立的应用程序。ArcMap是32位的,在处理大数据时,经常会崩溃,但同样的数据和逻辑,因为ArcGIS Pro是64位的,可以顺利执行出来。所以目前我们开发程序的时候,遇到处理大数据的需求,使用ArcObjects SDK开发的程序如果运行不起来,就会基于ArcGIS Pro SDK开发。
电脑上先安装好ArcGIS Pro,因为我们最终做的插件是要安装到ArcGIS Pro软件上的。
打开Visual Studio 2022,点击继续但无需代码按钮,如下图所示。

点击后,弹出的界面如下图所示。

点击【扩展】-【管理扩展】按钮,如下图所示。

在右侧搜索ArcGIS Pro SDK,在搜索结果中,选择安装 ArcGIS Pro SDK for .Net。安装后,就可以新建项目了。新建项目的时候,界面如下图所示。

新建后,项目默认情况下,包含的文件,如下图所示。

这个文件都不需要修改,下面我们创建一个按钮,放到菜单上。,在程序集中,新建项目项,如下图所示。

添加该按钮后,Config.daml文件内容会自动发生变化,加上了新建的这个按钮。Config.daml格式我们后面再研究。此时我们可以在按钮上添加逻辑,例如点击按钮,弹出信息对话框。代码如下所示。
using ArcGIS.Desktop.Framework.Contracts;
using ArcGIS.Desktop.Framework.Dialogs;
namespace ProAppModule1
{
internal class Button1 : Button
{
protected override void OnClick()
{
MessageBox.Show("ArcGIS Pro SDK 测试。");
}
}
}
点击下图红框中的运行按钮,如下图所示。

系统会弹出下面的对话框,如下图所示。

然后ArcGIS Pro并没有弹出,这个可能是ArcGIS Pro破解的问题,目前没找到如何解决。
点击第二个运行按钮,该按钮的意思是执行,但不调试。此时可以自动启动ArcGIS Pro主界面,如下图所示。

点击从没有模板的情况入手,点击加载项主菜单,会发现我们刚才添加的插件按钮,如下图所示。

点击该按钮,弹出我们代码中定义的信息,如下图所示。

如果我们想自己定义对话框,可以定义普通的WPF窗体即可,不需要非得使用ArcGIS Pro SDK中的UI元素。如下图所示。

修改代码,弹出新创建的Window1对话框,代码如下所示。
internal class Button1 : Button
{
protected override void OnClick()
{
Window1 myWindow1 = new Window1
{
Owner = Application.Current.MainWindow
};
myWindow1.ShowDialog();
}
}
编译运行,效果如下图所示。

如果想把开发的插件发给其他人使用,在编译结果目录如下图所示。

把这些文件拷贝到其他已经安装了ArcGIS Pro软件的电脑,双击ProAppModule1.esriAddinX文件,进行插件安装。
现在遇到最大的问题就是,直接调试,系统运行不起来,所以开发的时候没法调试,只能通过记录日志的方法逐步输出各重要参数的值,来排查错误。目前一直没找到办法解决这个问题。
ArcGIS Pro SDK 001 基于SDK创建第一个插件的更多相关文章
- ArcGIS Pro体验02——启动、创建工程
所有的猜测都是眼睛看到的,自己想到的,可能不一定正确哈. 任务界面十分简洁,左上是创建新工程,右上是账户名称,左上是关于. 可以直接创建一个工程,Blank应该是无类型,最后保存再选择:Global ...
- ArcGIS Pro Add-In插件开发[ArcGIS Pro SDK for .NET]
本文基于 Windows7 + VS2019 + .NET Framework 4.8 + ArcGIS Pro 2.5 开发和撰写. 目录 开发环境配置 获取ArcGIS Pro 安装VS2019 ...
- ArcGIS Pro 二次开发
本文基于 Windows7 + VS2019 + .NET Framework 4.8 + ArcGIS Pro 2.5.22081 开发和撰写. 目录 开发环境配置 获取ArcGIS Pro 安装V ...
- ArcGIS Pro SDK 002 对数据文件的读取和操作
做系统开发或者数据处理的时候,我一般还是喜欢使用文件数据源,例如矢量用.shp文件存储,栅格数据用.tif或者.img文件存储.ArcGIS Pro SDK中对数据源操作的API和ArcObjects ...
- ArcGIS Pro SDK 003 如何调用Toolbox
1.如何调用普通的Tool ArcGIS中的Toolbox非常强大,做二次开发的时候,必不可少的会调用,在ArcObjects SDK中,每个Tool都会有自定义的类对应,例如栅格转矢量数据,定义在E ...
- 使用 ADD-ON SDK 开发 基于 Html JQuery 和 CSS 的 firefox 插件入门教程1: 创建一个简单的 Add-on
[本文转载自http://sixpoint.me/942/implementing-simple-addon/] 实现一个简单的插件 教程的这个部分带你使用 SDK 来实现, 运行并打包一个插件. 这 ...
- ArcObjects SDK开发 001 ArcObjects SDK 简介
1.什么是ArcObjects SDK 在网上搜索什么是ArcObjects,会搜到如下的定义. 这个定义比较准确,也比较容易理解. 2.什么是ArcEngine 在网上搜索ArcEngine,一般会 ...
- [Android Pro] 开发一流Android SDK
cp from : https://blog.csdn.net/dd864140130/article/details/53558011 本篇文章已授权微信公众号 guolin_blog (郭霖)独家 ...
- nrf52——DFU升级USB/UART升级方式详解(基于SDK开发例程)
摘要:在前面的nrf52--DFU升级OTA升级方式详解(基于SDK开发例程)一文中我测试了基于蓝牙的OTA,本文将开始基于UART和USB(USB_CDC_)进行升级测试. 整体升级流程: 整个过程 ...
- nrf52——DFU升级OTA升级方式详解(基于SDK开发例程)
在我们开始前,默认你已经安装好了一些基础工具,如nrfutil,如果你没有安装过请根据官方中文博客去安装好这些基础工具,连接如下:Nordic nRF5 SDK开发环境搭建(nRF51/nRF52芯片 ...
随机推荐
- 通俗易懂分布式事务之2PC、3PC、Seata AT模式、Seata TCC模式
通俗易懂分布式事务之2PC.3PC.AT.TCC 单机服务事务提交回滚操作是需要拿到Connection对象,调用提交commit方法或者rollback方法回滚的,例如下面操作 Connection ...
- 【Linux】3.1 远程登录Linux系统
为什么需要远程登录 Linux 示意图 说明: 公司开发时候, 具体的情况是这样的 linux 服务器是开发小组共享的. 正式上线的项目是运行在公网的. 因此程序员需要远程登录到 centos 进行项 ...
- 【Python】介绍以及环境搭建
Python简介 Python介绍 Python是时下最流流.最火爆的编程语言之一,具体原因如下: 简单.易学,适应人群广泛 免费.开源 应用领域广泛 备注:以下知名框架均是Python语言开发. G ...
- Python 潮流周刊#95:像人类一样使用计算机(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- Unity Mask原理及自定义遮罩
主要内容 StencilBuffer是什么? 自定义Shader来实现遮罩 Unity Mask的原理 1.什么是StencilBuffer GPU在渲染前会为每个像素点分配一个1字节(8位)大小的内 ...
- python开发箱号批量查询关联SN号码的程序
# 需要导入的包 import tkinter as tk from tkinter import ttk, messagebox, filedialog import pyodbc import p ...
- Laravel配置Route调用artisan
//web调用artisan Route::get('/artisan', function(\Illuminate\Http\Request $request) { $all = \Illumina ...
- fiddler断点应用
一.作用 1.模拟网络中断 2.断点时篡改数据 3.测试时做一些极端测试 二.断点步骤 1.全局断点 1)全局断点的两种方式 点击状态栏空白框,点击一下请求前断点,两下请求后断点,三下取消断点 Rul ...
- [笔记]关于JavaScript定时器如何清除和重启
定时器的清除和重启方法: // var t=setInterval(fun1,500) //fun1是你的函数 var fun1=function(){ //写入你的函数; } clearInterv ...
- Asp.net core 少走弯路系列教程(一)了解 W3C
前言 新人学习成本很高,网络上太多的名词和框架,全部学习会浪费大量的时间和精力. 新手缺乏学习内容的辨别能力,本系列文章为新手过滤掉不适合的学习内容(比如多线程等等),让新手少走弯路直通罗马. 作者认 ...