• 一步步学习MDL[0]


    本系列博客将由浅入深地帮助您学习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三者的比照如下图所示。

    为了进一步分清楚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的。

                                                                        生成PureMDL应用程序的过程

                                         生成NativeCode MDL应用程序的过程

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

    如果您还没有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来写代码。

  • 相关阅读:
    把TXT GB2312文件转换成TXT UTF8文件
    把ANSI格式的TXT文件批量转换成UTF-8文件类型
    GB2312转换成UTF-8与utf_8转换成GB2312
    SQL 字符串处理函数大全
    编写一个程序,建立一个动态数组,为动态数组的元素赋值,显示动态数组的值并删除动态数组--简单
    设计一个使用常量成员函数的示范程序-简单
    声明一个复数类complex,使用友元函数add实现复数的加法-简单
    使用内联函数设计一个类,用来表示直角坐标系中的任意一条直线并输出它的属性
    设计一个点类point,再设计一个矩形类,矩形类使用point类的两个坐标点作为矩形的对角顶点,并可以输出4个坐标值和面积。使用测试程序验证程序。
    利用函数模板设计一人求数组元素总和的函数,并检验之-简单
  • 原文地址:https://www.cnblogs.com/zys871841072/p/2875326.html
Copyright © 2020-2023  润新知