一步步学习MDL[0]

时间:2022-04-07 03:22:20

本系列博客将由浅入深地帮助您学习MDL。按照本博客的步骤,相信您能很快地掌握这一开发MicroStation应用程序的最主要方法。本博客有中、英文两种版本,分别发布在中国BDN社区博客和Bentley Developer Netwrok社区博客。

第零章、介绍与必备条件

从MicroStation  4.0版开始就有MDL这一功能强大的开发手段了,那还要追溯到上世纪90年代初。那时的MDL是MicroStation Development Language(MicroStation开发语言)的简称,它是Bentley公司基于C语言的一种扩展语言,编译器和链接器均由Bentley公司提供。最终生成的程序扩展名为.MA,是MicroStation  Application的缩写。我们把这样的开发方法叫做PureMDL,开发PureMDL您仅需要一个源代码编辑器,其它的工具(编译器、链接器以及调试器)都由Bentley提供了。

随着时间的推移,MDL也在与时俱进。今天的MDL已经完全可以基于C++来开发,因而我们可以采用微软的Visual Studio作为开发工具来生成本机代码的DLL,同时,为了保留MDL的一些特性(如命令表、MDL特有的资源等),仍然需要生成一个.MA文件。我们称这种新的MDL为NativeCode MDL,这里的MDL不再是MicroStation Development Language而是MicroStation Development Library(MicroStation开发库)。NativeCode MDL能使您采用面向对象的编程方式来写代码,还能使您直接调用任何VC++中可以调用的功能。大多数新的MicroStation开发功能(如XAttribute、点云、i-model等)都采用类的形式提供,这些新的功能也要求我们必须使用NativeCode MDL来开发应用。PureMDL、NativeCode再加上新的开发手段Addins三者的比照如下图所示。

一步步学习MDL[0] 为了进一步分清楚PureMDL和NativeCode MDL,下图分别列出了两者的生成过程。其中的mcomp.exe、mlink.exe、rsctype.exe、rcomp.exe、rlib.exe都是由Bentley提供的执行程序,当您安装完MicroStation SDK后在…\MicroStation\mdl\bin目录下就能找到它们。而cl.exe和link.exe则是来自VS的编译器和连接器程序,在您的VS的…\VC\bin目录下能找到。从MicroStation SDK V8iSS2开始,所附带的例子都改为NativeCode MDL了,而以前版本的SDK中所附带的例子还是PureMDL的。

一步步学习MDL[0]                                                                     生成PureMDL应用程序的过程

一步步学习MDL[0]                                      生成NativeCode MDL应用程序的过程

本系列博客中的代码都将以NativeCode MDL来写,所以请按下面步骤安装我们的开发环境: 1、安装Visual Studio 2005+SP1:       虽然大多数MicroStation的功能在VS2008和VS2010中也可使用,但有些特定的功能则必须在VS2005下才能正常工作,所以,强烈建议您安装VS2005及其补丁包1; 2、安装MicroStation V8iSS3:从SS3开始,可以联网自动安装预安装包了,如果您的网络条件较差,还是建议您先下载预安装包后在行安装; 3、安装MicroStation SDK V8iSS3。

一步步学习MDL[0]

如果您还没有VS2005,请与微软公司联系。如果您还没有MicroStation软件及其开发包,您需要加入Bentley开发商网络(BDN)以获取它们。详细情况请与我(yongan.fu@bentley.com)联系。 如果您的操作系统是64位的Windows 7,则MicroStation及其开发包的默认安装位置如下: MicroStation程序文件:C:\Program Files (x86)\Bentley\MicroStation V8i (SELECTseries) 工作空间:C:\ProgramData\Bentley\MicroStation V8i (SELECTseries)\WorkSpace SDK程序文件:C:\Program Files (x86)\Bentley\MicroStation V8i (SELECTseries)\mdl SDK例子:“我的文档”下的MDLProjects V8i (SELECTseries 3)

安装完SDK后在C:\Program Files (x86)\Bentley\MicroStation V8i (SELECTseries)\Documentation目录下会有三个重要的开发帮助文档: ① MDLProgrammerGuide.chm:该文档是程序员指南,详细介绍了什么是MDL、如果建立并运行一个应用程序、MicroStation中的资源、MFC对话框、i-model开发以及如何使用向导来开发应用程序; ②MDLAPIFunctionReference.chm:该文档是MDL的C API参考,里面列出了上千个基于C的MDL函数及其详细说明; ③MicroStationAPI.chm:该文档是新的MDL C++ API参考,里面列出了数百个在NativeCode MDL中可用的类。

在C:\Program Files (x86)\Bentley\MicroStation V8i (SELECTseries)\MicroStation目录下有两个重要开发文档您可能会用到: ④readme_microstationsdk.chm:MicroStation各版本中的MDL的变化; ⑤MicroStationVBA.chm:该文档在安装MicroStation后就存在了,不属于SDK安装的内容。其本意是为MicroStationVBA编程服务的,不过,如果您采用COM方式编程的话,有关MicroStationDGN对象模型的内容可从该文档中查到。这一部分内容可参考我的另一系列博客Learning MicroStation Addins Step By Step。

在NativeCode MDL程序中,您既可以调用C API也可以调用C++ API。目前这两种API并行使用,新功能基本上都是在C++ API中才有,而有些旧有的功能只有在C API中才有。还有一些功能两个里面都有。我们在此系列博客中将尽量使用C++ API来写代码。