[Map 3D开发实战系列] Map Resource Explorer 之二-- 运行和调试

简介:


前面的文章中我们介绍了这个项目的背景和目的,着手在Visual Studio中建立了一个简单的项目并写了一个简单的自定义命令,下面我们来说说如何运行和调试。

由于我们是创建了一个Class Library,通过编译会生成一个dll程序集,这个程序集不能直接运行,我们需要把它加载到AutoCAD Map 3D环境中才能调试。我们要在Visual Studio的项目属性中做如下的配置,在Debug选项卡Start Action选择Start external program,并指向Map 3D的启动文件。

image

再运行之前,我们再回顾一下我们写的简单命令

 

public class Commands
{ 

    [CommandMethod("CmdList")]
    public void CmdListCommand()
    {
        Util.PrintLn("PROMPT: MapResourceExplore commands:");
        Util.PrintLn("\nResourceExplorer");
        Util.PrintLn("\nRegisterEvents");
    } 

}

我们定义了一个公有方法CmdListCommand,这个方法我们给了CommandMethod属性,从而把这个方法标示为AutoCAD命令。当我们的程序集加载后,在AutoCAD Map 3D的命令行中输入CmdList命令后,就会调用CmdListCommand方法。注意我们定义的方法名不一定和命令名移植。还有需要注意的是Commands这个类要标示为public。

这里我们使用了一个工具类Util,这个类定义在Autodesk.Gis.Map.Platform.Utils名称空间中,它在作用就是在命令中中打印出字符串,具体的实现方法是这样的:

        /// <summary>
        /// Prints message in the AutoCAD command line. Will automatically 
        /// add a newline symbol at the beginning.
        /// </summary>
        /// <param name="msg">The message to be printed.</param>
        public static void PrintLn(string msg)
        {
            Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage(msg);
.WriteMessage("\n" + msg);
        }

关于Util工具类的更多实现,可以参考Map SDK中的Platform.Samples.Util例子。

 

运行调试

下面我们就可以按F5启动调试了,Visual Studio会启动一个Map 3D。待Map 3D启动后,在命令行中输入netload,加载我们编译生成的MapResourceExplorer.dll, 然后在命令行中输入我们的自定义命令CmdList后回车,在Map 3D的命令行中应该就能打印出我们的字符串。如果需要调试,我们可以在需要调试的地方添加断点。

image

运行的结果如下:

image

 

好了,今天先说这么多,从下篇文章开始,我们将使用AutoCAD.net API来创建我们程序的基本界面,添加一个AutoCAD WPF风格的Palette。

 

Cheers,

峻祁连

作者: 峻祁连
邮箱:junqilian@163.com 
出处: http://junqilian.cnblogs.com 
转载请保留此信息。



本文转自峻祁连. Moving to Cloud/Mobile博客园博客,原文链接:http://www.cnblogs.com/junqilian/archive/2011/01/29/1947321.html ,如需转载请自行联系原作者
相关文章
|
7月前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
110 3
|
2月前
|
存储 Java 开发者
Java Map实战:用HashMap和TreeMap轻松解决复杂数据结构问题!
【10月更文挑战第17天】本文深入探讨了Java中HashMap和TreeMap两种Map类型的特性和应用场景。HashMap基于哈希表实现,支持高效的数据操作且允许键值为null;TreeMap基于红黑树实现,支持自然排序或自定义排序,确保元素有序。文章通过具体示例展示了两者的实战应用,帮助开发者根据实际需求选择合适的数据结构,提高开发效率。
79 2
SpringMVC入门到实战------5、域对象共享数据 Request、Session、Application、Model、ModelAndView、Map、ModelMap的详细使用及代码实例
这篇文章详细解释了在IntelliJ IDEA中如何使用Mute Breakpoints功能来快速跳过程序中的后续断点,并展示了如何一键清空所有设置的断点。
SpringMVC入门到实战------5、域对象共享数据 Request、Session、Application、Model、ModelAndView、Map、ModelMap的详细使用及代码实例
|
7月前
Elasticsearch【问题记录 02】【不能以root运行es + max virtual memory areas vm.max_map_count [65530] is too low处理】
【4月更文挑战第12天】Elasticsearch【问题记录 02】【不能以root运行es + max virtual memory areas vm.max_map_count [65530] is too low处理】
71 3
|
4月前
|
Java Serverless Go
Golang 开发函数计算问题之在 Golang 中避免 "concurrent map writes" 异常如何解决
Golang 开发函数计算问题之在 Golang 中避免 "concurrent map writes" 异常如何解决
|
5月前
|
JavaScript 定位技术
vue-baidu-map 绘制行政区划的轮廓,添加行政区划名称(含给覆盖物添加点击事件)——vue 百度地图开发
vue-baidu-map 绘制行政区划的轮廓,添加行政区划名称(含给覆盖物添加点击事件)——vue 百度地图开发
286 1
|
5月前
|
JavaScript 定位技术
vue 百度地图开发【教程】1. 绘制百度地图(不使用 vue-baidu-map,解决 BMap is undefined)
vue 百度地图开发【教程】1. 绘制百度地图(不使用 vue-baidu-map,解决 BMap is undefined)
442 0
|
6月前
|
存储 Java 数据处理
Java Map实战:用HashMap和TreeMap轻松解决复杂数据结构问题!
【6月更文挑战第18天】在Java中,HashMap基于哈希表提供快速的键值对操作,适合无序数据;而TreeMap利用红黑树保证排序,适用于有序场景。示例展示了HashMap如何存储并查找用户信息,以及TreeMap如何按员工编号排序存储员工名。两者在不同需求下优化了数据处理。
162 0
|
7月前
|
JavaScript
webpack-devtool选项 --生成source-map便于开发调试(二)
webpack-devtool选项 --生成source-map便于开发调试(二)
235 0
|
7月前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可为任意类型,有序且支持get、set、has、delete操作;Set存储唯一值,提供add、delete、has方法。两者皆可迭代。示例展示了Map和Set的基本用法,如添加、查询、删除元素。
41 2