写了个标题好长啊~~~~

这两天又认识了一个新玩意,记录一下下,啦啦啦~~~~~

话说,认识arcgis快十年了,从桌面版到engine的二次开发,其实不过才认识到它的冰山一角,

它总是能带来很多还未知的东西,实话说,就是如此的热爱着它,因为从来都觉得遨游其中,没有边界~~~~~

arcengine二次开发,这个玩意现在已经不流行了,但是其奥妙和乐趣依然无穷~~~~

言归:

一. 之前写的basetool,basecommand等类都是在独立的系统中运行的,没有单独注册成过组件在桌面版arcmap中加载使用过,这种basetool结构:

public AddPolygonSymbol1()

public override void OnCreate(object hook)

public override void OnClick()

public override void OnMouseDown(int Button, int Shift, int X, int Y)

.........等等

private IMapControlDefault m_pMapControl = null;

一直通过m_pMapControl在OnCreate(object hook)传递其当前MapControl,如this.m_pMapControl = hook as IMapControlDefault;

but,改为要在arcmap中引用的工具,需要做一下几点:

二. 修改basetool,basecommand类中传递hook的方法,

private IApplication m_application;

public override void OnCreate(object hook)
      {
            m_application = hook as IApplication;

if (hook is IMxApplication)

base.m_enabled = true;
            else
                    base.m_enabled = false; 

       }并对应修改代码中的其他地方,如

IMxDocument mxDocument = application.Document as IMxDocument; // Dynamic Cast
       IActiveView activeView = mxDocument.ActiveView;

总之就是得到mapcontrol下的那些东西啊。

类修改完成之后,可以注册生成tlb文件了。

三.  做法,1.在代码中添加注册的代码,我直接拷贝的示例中的代码,其他方法未知,要自己生成一个新的guid就ok;

2.在visual studio中,项目右键属性,生成,勾选“为COM互操作注册”

3.在项目的AssemblyInfo.cs中修改[assembly: ComVisible(true)]为ture;

然后重新生成就ok了,在debug下面会找到.tlb文件,就是想要的那个东西了:

此步参考出处:http://www.cnblogs.com/carekee/articles/2227480.html

四. 在arcmap中加载此工具的tlb文件,然后使用。

加载方法:点红框框中那个小箭头,任意一个都可以

然后在customise对话框中,选择从文件添加:

添加完后,可以看到commands选项卡下面的walkthroughs下面多了自己定义的工具,

此处“walkthroughs”在代码构造函数中的的base.m_category = "Walkthroughs"定义的;

加上之后就可以用了,这里我添加的是一个AddPolygonSymbol1工具,

另,本人一向达到目的后就不求甚解, basetool其实之前一直在用,

却不懂得注册成工具在桌面版中使用,因为对com组件这些玩意其实不甚了解,

所以都是只知皮毛,浅尝辄止。

问题:

1.com组件注册的方法,在vs中那些代码是不是可以自动生成?

2.自定义生成的工具,添加图片没有成功, GetType().Name这些玩意不知道到底是怎么读的;

3.加载到arcmap上的工具怎么去掉啊~~~

4.除了自定义工具按钮,怎么添加一个工具条呢?~~~~

知者请不吝赐教。

最新文章

  1. Android随笔之——按键长按事件onKeyLongPress
  2. java中匿名类的注意细节
  3. Entity Framework与ADO.Net及NHibernate的比较
  4. Effective STL(第7条)
  5. shiro 简单的身份验证 案例
  6. Android - 动态调整ListView高度
  7. 流媒体学习二-------SIP协议学习(基本场景分析 )
  8. 我的EC-final总结
  9. bzoj 1023: [SHOI2008]cactus仙人掌图
  10. 33、多线程断点下载的实现&界面的更新
  11. ECSHOP文件目录详解
  12. poj3020二分图匹配
  13. Orcale 存储过程实践总结
  14. 1.3 正则表达式和python语言-1.3.7 匹配任何单个字符
  15. 软件工程实践助教每周小结 < 福州大学 | 傅明建 >
  16. 第三章 Typescript 基本数据类型
  17. Matlab 二维绘图函数(plot类)
  18. 安装rocketmq-console
  19. BZOJ 1006: [HNOI2008]神奇的国度(弦图染色)
  20. js中定时器2

热门文章

  1. 机器学习十大算法之EM算法
  2. 谈谈Java异常处理这件事儿
  3. InnoDB信息说明
  4. Boost Python官方样例(二)
  5. Linux之shell备份数据库
  6. Unity 着色器训练营(2) - MVP转换和法线贴图
  7. python字符串和日期相互转换
  8. 【转】C#里partial关键字的作用
  9. c# 衍生类和基类的构造顺序
  10. Unity---DOTween插件学习(3)---获取数据、协程、路径动画