ArcGIS二次开发实践— — 遍历ToolBox中的工具!
在AO中,打开“文件A”的基本流程是:
1、创建对应“文件A”类型的WorkspaceFactory;
2、用WorkspaceFactory创建“文件A”的Workspace,Workspace可以是文件所在文件夹(如本文后面要创建的ToolBox的Workspace),也可以是空间数据库(如果你把文件存到数据库里了或要打开数据库里的数据)。
3、用Workspace打开“文件A”,获得对应类型的“文件A”对象;
----------------------------------------------------好了,开始(这里,我的Toolbox路径为F:\Root\Tools\MagmaDistribution.tbx)。
ArcGIS的每个Toolbox,在windows下都是一个.tbx文件。
通过AO的对象模型图可以知道,在.Net里用GPToolbox对象来代表Toolbox,因此我们首先需要打开事先准备好的.tbx文件,并实创建一个GPToolbox对象来管理它。
1、创建一个ToolboxWorkspaceFactory对象。
2、ToolboxWorkspaceFactory来创建用于打.tbx文件的ToolboxWorkspace。
3、用ToolboxWorkspace创建GPToolbox对象。
这样我们就创建了一个代表ToolBox的对象,代码如下:
ToolboxWorkspaceFactory toolBoxWSF = new ToolboxWorkspaceFactoryClass();
IToolboxWorkspace toolBoxWS = (IToolboxWorkspace)toolBoxWSF.OpenFromFile("F:\\Root\\Tools", );
IGPToolbox toolbox = toolBoxWS.OpenToolbox("MagmaDistribution.tbx");
我的MagmaDistribution.tbx里放了3个tool,下面我们来获得这些tool的名字,并输出到控制台:
//输出toolbox的路径信息
Console.WriteLine("IGPToolBox的PathName:" + toolbox.PathName);
//从IGPToolbox的ToolNames属性获得toolbox里3个tool的名字。
ESRI.ArcGIS.Geoprocessing.IEnumGPToolName toolName = toolbox.ToolNames;
IGPToolName gpn = toolName.Next();
while (gpn != null)
{//循环输出tool的名字
Console.WriteLine(gpn.DisplayName);
gpn = toolName.Next();
}
运行效果:

完整代码:
using System;
using System.Collections.Generic;
using System.Text;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.Geoprocessing; namespace esriTestConsole
{
class Program
{
private static LicenseInitializer m_AOLicenseInitializer = new esriTestConsole.LicenseInitializer(); [STAThread()]
static void Main(string[] args)
{
//ESRI License Initializer generated code.//这是创建ArcGIS控制台项目时自动生成的
m_AOLicenseInitializer.InitializeApplication(new esriLicenseProductCode[] { esriLicenseProductCode.esriLicenseProductCodeEngine, esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB, esriLicenseProductCode.esriLicenseProductCodeBasic, esriLicenseProductCode.esriLicenseProductCodeStandard, esriLicenseProductCode.esriLicenseProductCodeAdvanced },
new esriLicenseExtensionCode[] { esriLicenseExtensionCode.esriLicenseExtensionCodeNetwork, esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst });
//ESRI License Initializer generated code.
try
{
ToolboxWorkspaceFactory toolBoxWSF = new ToolboxWorkspaceFactoryClass();
IToolboxWorkspace toolBoxWS = (IToolboxWorkspace)toolBoxWSF.OpenFromFile("F:\\Root\\Tools", );
IGPToolbox toolbox = toolBoxWS.OpenToolbox("MagmaDistribution.tbx");
//输出toolbox的路径信息
Console.WriteLine("IGPToolBox的PathName:" + toolbox.PathName);
//从IGPToolbox的ToolNames属性获得toolbox里4个tool的名字。
ESRI.ArcGIS.Geoprocessing.IEnumGPToolName toolName = toolbox.ToolNames;
IGPToolName gpn = toolName.Next();
while (gpn != null)
{//循环输出tool的名字
Console.WriteLine(gpn.DisplayName);
gpn = toolName.Next();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
////Do not make any call to ArcObjects after ShutDownApplication()
finally
{
Console.WriteLine("输入任意字符退出程序:");
Console.Read();
m_AOLicenseInitializer.ShutdownApplication();
}
}
}
}
ArcGIS二次开发实践— — 遍历ToolBox中的工具!的更多相关文章
- ArcGIS二次开发AO软件安装破解教程
最近在做ArcGIS二次开发时,采用C#中的WPF技术,在调研中发现ArcGIS 10.3及以上版本支持WPF技术,但是关于ArcGIS10.3的破解教程甚少,自己尝试了不少方法都失败了,淘@宝@商家 ...
- ArcGIS二次开发入门(一)
作者:朱金灿 来源:http://blog.csdn.net/clever101 公司培训ArcGIS二次开发(C#作为开发语言),自己回家动手实践了一下. 1. 首先是二次开发环境的安装(AE 10 ...
- visual studio2010中C#生成的,ArcGIS二次开发的basetool的dll,注册为COM组件tlb文件,并在arcmap中加载使用
写了个标题好长啊~~~~ 这两天又认识了一个新玩意,记录一下下,啦啦啦~~~~~ 话说,认识arcgis快十年了,从桌面版到engine的二次开发,其实不过才认识到它的冰山一角, 它总是能带来很多还未 ...
- 【ArcGIS二次开发】CreateFeature报错(HRESULT E_FAIL)
在VS2010下基于ArcGIS 10.1做二次开发时遇到个奇怪的问题,对于MXD工程文档中已经存在的图层,获取其FeatureClass可以调用CreateFeature()函数生成要素,但是对于通 ...
- ArcGIS二次开发的几种方式
1.ArcEngine开发 二次开发的常用方式,开发提供接口齐全,功能强大,比较成熟.但是,开发的软件使用需要指定版本的运行环境才能运行. 2.Addin开发 二次开发与ArcMap嵌入,开发方便,可 ...
- 【NX二次开发】查找部件中的对象 UF_OBJ_cycle_objs_in_part
返回所有层上指定类型部件中的所有对象,不管它们的当前显示状态如何.这个例程不返回表达式.指定对象.临时(系统创建的)对象或休眠对象.休眠对象指的是从模型中删除的对象例如,如果你混合了一条边,那么这条边 ...
- ArcGIS 二次开发总结
个人总结 1. Enterprise10.7新特性 新增共享实例,可以将不常用服务分配共享实例,减少服务器压力.仅支持ArcGIS pro发布的地图服务,且仅开启feature access,kml, ...
- ARCGIS 二次开发可以参考的资源(长期更新)
背景: 今天,被领导教导,说是你刚入职,要尽快把项目做起.言语忠恳,而且说不要再在电脑上练习那些小的测试例子了,要直接切入项目,熟悉项目的开发框架,与设计理念.得到,我的负责人(TB)把他做的项目的资 ...
- ArcGIS Server开发实践之【Search Widget工具查询本地地图服务】
加载本地地图服务,并实现要素的查询.(不足之处还请指点)具体代码如下: <!DOCTYPE html> <html dir="ltr"> <head& ...
随机推荐
- Android 常用布局视图
常用包 http://square.github.io/ EventBus Scroller 滚动 拖拽 # android.support.design.widget.CollapsingToolb ...
- diskpart查看硬盘序列号
WIN + R键运行cmd,进如DOS界面: 1. systeminfo查看OS初始安装时间 2. diskpart工具查看硬盘序列号 (1)diskpart (2)lisk disk 查看主机安装的 ...
- php 使用curl模拟登录人人(校内)网
$login_url = 'http://passport.renren.com/PLogin.do'; $post_fields['email'] = 'XXXX';$post_fields['pa ...
- sass2:
ass学习笔记2 今天介绍sass在重用代码时最具威力的两个功能.一个是嵌套(Nesting),一个混合(Mixin). 我们在写CSS通过需要多个后代选择器组合到一起才能定位到目标元素上,而这定义过 ...
- android事件拦截处理机制详解
前段时间刚接触过Android手机开发,对它的事件传播机制不是很了解,虽然网上也查了相关的资料,但是总觉得理解模模糊糊,似是而非,于是自己就写个小demo测试了一下.总算搞明白了它的具体机制.写下自己 ...
- 我的毕业设计——基于安卓和.NET的笔记本电脑远程控制系统
手机端: 电脑端: 答辩完成后会开放代码.
- 简单学会.net remoting
简介 •.net remoting是.net在RPC分布式应用的技术.首先,客户端通过 remoting访问通道以获得服务端对象,再通过代理解析为客户端对象,通过通道来实现远程对象的调用. 原理 •远 ...
- CentOS6.5 下安装 texlive2015 并设置 ctex 中文套装
0 卸载旧版本的 texlive 0.1 卸载 texlive2007 如果系统没有安装过texlive,则跳过第0步. 可以在终端中使用如下命令查询本机已经安装的tex和latex版本: [She@ ...
- 个人c语言编程风格总结
总结一下我个人的编程风格及这样做的原因吧,其实是为了给实验室写一个统一的C语言编程规范才写的.首先声明,我下面提到的编程规范,是自己给自己定的,不是c语言里面规定的. 一件事情,做成和做好中间可能隔了 ...
- asp.net自己创建的app_code文件夹中的类不能访问的解决办法
在Web应用程序中不能通过右键项目-〉”添加“-〉”添加ASP.NET文件夹“方式添加 .因为Web应用程序中App_Code就不存在 .不过可以通过手动的方式创建,添加一个文件夹命名为App_Cod ...