二次开发常见问题解答


【问1】、MicroStation软件支持哪几种二次开发语言?
【答】、主要有三种:MicroStation VBA(简称MVBA)、Addin(基于C#语言或其它的.NET开发语言)和MDL(基于C/C++)。这三种开发手段由易到难,功能则是由弱到强。开发MVBA仅需具有MicroStation软件即可;开发Addin除了MicroStation软件外还需要安装相应版本的Visual Studio软件;开发MDL除了MicroStation软件、相应版本的Visual Studio软件外还需要相应版本的MicroStation SDK。

【问2】、MicroStation软件支持Java语言开发吗?
【答】、在MicroStation软件的较旧的版本J(07.01)和V8-2004(08.05)中曾经支持过,后来的版本中又不再支持了。

【问3】:什么是MDL ?
【答】:MDL是MicroStation Development Language的缩写,翻译过来就是“MicroStation开发语言”。现在正逐渐变为MicroStation Development Library(MicroStation开发库)。它原来是一套API函数加上C语言再加上Bentley自己的编译器和链接器,我们称之为PureMDL(纯MDL)。现在正逐渐降为库的地位,因为我们可以用微软的VC++直接调用这些API函数来开发了。

【问4】:PureMDL和NativeCode有什么区别 ?
【答】:PureMDL和NativeCode是目前用MDL开发MicroStation应用的两种方式。正如3中所述,PureMDL用C语言的语法写程序,用Bentley提供的编译器和链接器生成程序,最终可执行的文件扩展名为MA (MicroStation Application的缩写)。而NativeCode则是用C++(当然主要是指微软的VC++)写程序,用微软的编译器和链接器生成程序,最终可执行的文件为DLL。由于还需要MA作为桥梁,所以,用NativeCode开发时最终生成的执行程序是DLL+MA(用C#开发出来的Addins最终生成的执行程序只有DLL)。注:最新版的MicroStation CE已经不再支持PureMDL开发方式!

【问5】:用NativeCode开发时对话框是用MFC对话框还是继续使用MDL资源定义?
【答】:两者都可以,但各有利弊。MFC对话框适合那些熟悉MFC的用户,在MFC对话框中能嵌入各种控件。但MFC对话框和MicroStation总有“两张皮”的感觉,在MFC对话框中不能直接嵌入MicroStation中的控件,而且也要受到MicroStation Dialog Manager的控制。MDL资源定义的对话框和MicroStation浑然天成,能在这种对话框中直接嵌入MicroStation的各种控件,缺点是没有可视化的设计界面,需要你一行行自己写(当然主要是复制、粘贴、修改了)。实际上,MicroStation自身的大多数界面(菜单、工具栏、对话框等)都是用MDL资源写出来的。有些界面逐渐开始用Winform来写,如那个新式的Element Information对话框。

【问6】、开发NativeCodeMDL和Addins时我需要使用哪个版本的Visual Studio?
【答】、对于MicroStaiton V8-2004下的NativeCodeMDL程序开发,需要使用VS6;对于MicroStation V8XM下的NativeCodeMDL,需要用VS2003;对于MicroStation V8i下的NativeCodeMDL,需要用VS2005。对于MicroStation CONNECT Edition Update4及以下的NativeCodeMDL,需要用VS2013,对于MicroStation CONNECT Edition Update5~9的NativeCodeMDL需要用VS2015。Addins的开发从V8XM开始才支持,V8XM和V8i下的Addins需要指定.NET 2.0或.NET3.5,如果是用C#语言来开发,对VS的版本要求不是很严格。如果是用C++/CLI,MstnV8iSS3下则是需要用VS2008。MicroStation CE Update7~10要求.NET4.6.2。

【问7】、用哪种开发语言开发程序最合适?
【答】、要回答这个问题有些难度,因为涉及的因素较多,比如您已经掌握了哪种开发语言,您项目的复杂程度如何等等。一般来说,MVBA(基于VB)最容易上手,适合开发简单的小工具,开发周期最短;MDL(基于C/C++)相对来说复杂一些,但包含最全的功能。Addins(基于C#)介于两者之间。MVBA开发出来的项目需要向最终用户提供源代码,对于保护您的知识产权不利。而Addins和MDL都可以生成DLL提交给最终用户。

【问8】、MicroStation PowerDraft下可以装载哪些类型的程序?
【答】、MicroStation PowerDraft下默认可以装载MicroStation VBA设计的.mvba程序和PureMDL设计的.ma程序,但不能装载涉及有.dll的程序(如Addins生成的.dll和NativeCode生成的.ma+.dll)。如果想在MicroStation PowerDraft下装载.dll程序,需要您首先申请加入BDN(Bentley Developer Network,Bentley开发者网络),然后向Bentley提交您的开发说明以获得一个passcode,然后将该passcode添加到您的源代码中编译生成的程序就能在MicroStation PowerDraft下装载了。nativeCode DLL和.NET DLL所需要的passcode还不同,在申请时需要指明您的DLL的类型。

【问9】、我可以基于Bentley Navigator进行定制开发吗?
【答】、Navigator目前主要有三个版本:Navigator V8i、Navigator CONNECT和Navigator Mobile。对于V8i版,默认支持MVBA和PureMDL开发。如果要用到Addins和NativeCodeMDL(即涉及到调用DLL的)则需要先加入商业BDN,再申请passcode才可以。对于后两者Navigator,目前没有提供定制开发的手段。有关BDN和Passcode请阅读如下两篇文章来了解:Bentley开发者网络(BDN)介绍Bentley公司重新声明passcodes的地位

【问10】、为什么我编写程序时都要设计一套键入(Keyin)命令?不能直接将功能挂接到按钮上吗?
【答】、MS提供有方便的定制界面的功能,所有图标功能按钮都不需要编程实现。在定制这些图标功能按钮时,需要我们在按钮的Keyin栏放入我们程序中的某个键入命令字符串。所以,Keyin是程序功能和界面的纽带和桥梁。

C# 程序编译正常,但执行时经常导致死机