ArcMap扩展开发方法与步骤_第1页
ArcMap扩展开发方法与步骤_第2页
ArcMap扩展开发方法与步骤_第3页
ArcMap扩展开发方法与步骤_第4页
ArcMap扩展开发方法与步骤_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ArcMap 扩展开发方法与步骤扩展开发方法与步骤 吕志勇吕志勇 2011 5 25 ArcMap 扩展开发是指在直接通过编写插件 扩展 ArcMap exe 的功能 下面以 VS 为例 说明如何进行 ToolBar Command Tool Menu 的开发与扩展 ToolBar 一 新建项目 选择 Class Library ArcMap 必须先安装 desktop 才可以出现此 选择项 二 在建立的工程项目中的 资源管理器 中的项目上进行右键单击 选择 添加类 如图所示 三 在添加的类中 选择 添加 Base ToolBr 并更改自己的类名 四 选择 ToolBar 要添加在哪里 选择 Desktop arcmap 五 点 OK 之后 便会自己动产生台下代码 详细代码 using System using System Collections Generic using System Text using System Runtime InteropServices using ESRI ArcGIS ADF CATIDs using ESRI ArcGIS ADF BaseClasses using ESRI ArcGIS SystemUI namespace TestPlugToolBar Summary description for ArcGISToolbar1 Guid 43e374c8 9468 48b2 9a72 bcbf0a3097d9 ClassInterface ClassInterfaceType None ProgId TestPlugToolBar ArcGISToolbar1 public sealed class ArcGISToolbar1 BaseToolbar region COM Registration Function s ComRegisterFunction ComVisible false static void RegisterFunction Type registerType Required for ArcGIS Component Category Registrar support ArcGISCategoryRegistration registerType TODO Add any COM registration code here ComUnregisterFunction ComVisible false static void UnregisterFunction Type registerType Required for ArcGIS Component Category Registrar support ArcGISCategoryUnregistration registerType TODO Add any COM unregistration code here region ArcGIS Component Category Registrar generated code Required method for ArcGIS Component Category registration Do not modify the contents of this method with the code editor private static void ArcGISCategoryRegistration Type registerType string regKey string Format HKEY CLASSES ROOT CLSID 0 registerType GUID MxCommandBars Register regKey Required method for ArcGIS Component Category unregistration Do not modify the contents of this method with the code editor private static void ArcGISCategoryUnregistration Type registerType string regKey string Format HKEY CLASSES ROOT CLSID 0 registerType GUID MxCommandBars Unregister regKey endregion endregion public ArcGISToolbar1 TODO Define your toolbar here by adding items AddItem esriArcMapUI ZoomInTool BeginGroup Separator AddItem FBF8C3FB 0480 11D2 8D21 080009EE4E51 1 undo command AddItem new Guid FBF8C3FB 0480 11D2 8D21 080009EE4E51 2 redo command public override string Caption get TODO Replace bar caption return My C Toolbar public override string Name get TODO Replace bar ID return ArcGISToolbar1 以上代码的主要功能 对建立的 ToolBar 进行注册 对 ToolBar 的属性 如 名称 名字属性设置 运行程序 会在相应的 debug Release 下产生一个 DLL 文件 并且会自动启动 arcmap exe 如果不用代码对产生的插件 DLL 进行注册 也可以手动注册 具 体注册方法如下 该阶段开发人员常常需要将组件编译成发布版 并将 dll 复制到其他机器 上进行各种测试 为满足这样的需求 开发人员可以在测试机器上使用 regasm exe 通过 Net 的 dll 文件生成一个同名的 tlb 类型库文件 这种 tlb 文件就可以像 COM 的 dll 一样 加 ArcGIS 使用 这样操作的前提条件是这台测试机器上至少安装有 Net Framework ArcGIS Desktop 以及相应的补丁包 具体的操作分为如下两步 1 在 运行 中敲入 cmd 进入命令行 2 转 到 regasm exe 文 件 所 在 目 录 下 C WINDOWS Microsoft NET Framework v1 1 4322 敲入 regasm PATH dll tlb tlb 例如 regasm D Program Files ArcGIS EditTools dll tlb EditTools tlb 这样 系统会在与 dll 相同的目录下生成一个 tlb 文件并已自动注册 该操作正确执行结果就象 COM 的 dll 文件注册后一样 你可以在 ArcGIS 相应的工具扩展中找到该工具了 如果未找到 也可 以 通过 Add From File 方法添加生成的 tlb 文件添加该组件 说明 1 这种注册方法虽不需要 组件调试阶段 代码中的那些 ComRegisterFunction 函 数 也能顺利执行 但强烈建议保留这些函数 如果没有这些函数将导致 系统部署阶段 注 册 失败 2 建议开发人员将 C WINDOWS Microsoft NET Framework v1 1 4322 路径加入 系 统环境的 Path 中 这样就可以直接敲入 regasm 命令 而不用每次注册组件的时候 都 要手动进入 regasm 路径下 3 敲入 regasm 和空格后 可以直接将有待注册的 dll 文件拖动到命令行窗口 系统会自动加入命令行 而不用用户亲自敲入 dll 文件的路径和文件名 4 可通过 regasm u PATH dll tlb tlb 命令来注销该组件 5 建议不要在不同地方注册包含相同类的 dll 否则很可能会产生类似于 COM 的 Dll Hell 的情况 导致 ArcGIS 识别和使用的组件很可能不是用户所期望的组件 造 成不 必要的麻烦 六 注册成功后 打开 arcMap 工具栏出单击 就会显示出刚才所产生的 toolbar 如图 所示 对其进行勾选 工具栏就会显示在上面 七 到目前为止 一个名称 Caption 为 要素融合工具 的工具栏建立成功 下面 就是如何开发 Command 并添加到这个空栏中了 Command Command 与 Tool 的主要区别在于 Command 可以产生人机交互 而 tool 才不能产 生人机交互 因此 放大 zoomIn 则称为 Tool 而若放大时放输入参 放大多少倍 刚是 一个 Command 产生 Command 前面建立工程的方法一样 只是在 添加类 时略有不同 添加类时 选择 baseCommand 如图所示 并下一步 选择 Desktop ArcMap Command 确定之后 会自动产生如下代码 以上代码主要功能为 注册 DLL 插件与设置此 Command 的 Category 分类归属 名 称 标题 onClick 事件所对应的操作等等 public MyCommand 构造函数 TODO Define values for the public properties base m category MyCommands 分类 base m caption 放大 对外显示的名字 base m message 对地图进行放大 消息 base m toolTip 放大 提示 base m name MyCommands ZoomIn unique id non localizable e g MyCategory ArcMapCommand try TODO change bitmap name if necessary string bitmapResourceName GetType Name bmp base m bitmap new Bitmap GetType bitmapResourceName catch Exception ex System Diagnostics Trace WriteLine ex Message Invalid Bit

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论