Microstation Addins二次开发笔记(基于VS2008、C#)_1

        最近在学习 Microstation Addins二次开发,为了更好的积累和梳理,便把开发过程的一些经验和体会整理出来,希望得到各位前辈和高手的指点。笔记中部分内容来自Microstation的一些培训材料和Bentley BBS中的内容,在此表示感谢。

概述

        MicroStation 是 Bentley公司服务于基础工程设计、建造和运营活动的旗舰产品(产品详细介绍请参阅Bentley官方网站)。Microstation支持多种编程语言,如MDL(C)、NativeCode(C++)、Addins(c#/VB.Net/C++.NET)、VBA等。其中Addins方式只有在V8XM版本以上才开始支持。

        目前在网上能找到的绝大部分开发资源均是采用MDL或VBA开发的。关于Addins的开发资料则少的可怜。官方关于Addins的开发指南(或接口介绍、程序员手册)等都没有,相关接口只能参考MicroStation VBA手册。

      这几种开发方式中,MDL是最为强大的,基本上所有Microstation中的功能均可以采用MDL来实现,Addins功能次之,VBA最弱。而开发难度且是相反,VBA最简单,MDL最难。我想大部分.net开发人员都更热衷于采用Addins进行开发。毕竟比MDL开发要容易得多,入门快,可以在Microsoft Visual Studio 中进行方便的开发调试,可以使用WinForm和.Net控件来进行丰富的用户界面设计,这些都是MDL无法比拟的。(在MDL中做用户界面绝对是个痛苦的事情)。相比VBA来讲,Addins显然更为强大,而且可以编译成dll来运行,有效的保护了代码成果。

 

 

开发环境配置

本机开发环境:Microsoft Visual Studio 2008(c#)+ MicroStation V8i (SELECTseries 1)

开发环境的配置如下:

 

1、  安装MicroStation V8i (SELECTseries 1)

2、  MicroStationAddInWizard2005的安装及使用

MicroStationAddInWizard2005是VS2005(VS2008)下的开发向导,可以很方便的进行入门。(MicroStationAddInWizard2005可以从Bentley BBS中找到),不过目前这个向导还不少很完善,有些地方还需要手动进行修改。具体步骤如下:

  1. 解压“MicroStationAddInWizard2005.rar”将“vcprojects”和“VCWizards” 两个目录复制到VS2005(VS2008)安装目录的“VC”目录下。

(如果使用的是VS2008,请将“MicroStationAddInWizard.vsz”文件中的“Wizard=VsWizard.VsWizardEngine.8.0” 改为“Wizard=VsWizard.VsWizardEngine.9.0”。 )

  

2.打开VS2005或VS2008,新建项目,命名为“MsApp”,选择VC++下的“MicroStationAddInWizard”模板,选择C sharp,后面的选项页中均打勾,完成后生成项目;

 

 



 

 

  • 3.直接编译,提示一大堆错误,是缺少引用的原因。添加引用,将程序中凡“USING”语句后面的均是要引用的。

  





需要用到的dll路径:(假设你的MicroStation默认安装在C盘)
  • C:\Program Files\Bentley\MicroStation V8i (SELECTseries 1)\MicroStation\ustation.dll
  • C:\Program Files\Bentley\MicroStation V8i (SELECTseries 1)\MicroStation\assemblies\bentley.microstation.dll
  • C:\Program Files\Bentley\MicroStation V8i (SELECTseries 1)\MicroStation\assemblies\bentley.interop.microstationdgn.dll
  • C:\Program Files\Bentley\MicroStation V8i (SELECTseries 1)\MicroStation\assemblies\bentley.windowing.dll
  • C:\Program Files\Bentley\MicroStation V8i (SELECTseries 1)\MicroStation\assemblies\bentley.microstation.interfaces.1.0.dll
  • C:\Program Files\Bentley\MicroStation V8i (SELECTseries 1)\MicroStation\assemblies\ECFramework\Bentley.General.1.0.dll

其中还需用到Windows Form自带的引用,可以添加一个Windows 窗体即可再删除,方案里自动添加了几个必须的引用。 

 

 

 

1、  添加完成后,再重新生成解决方案,可以看到生成成功了。

2、  下面有几个需要注意的问题,需要手动调整下:

 

  • 将“commands.xml” 文件的“生成操作”属性改为“嵌入的资源”;(这样只需拷贝一个dll文件到Microstation的mdlapp目录下即可了,否则的话还需要把这个commands.xml文件一并拷贝。)
  • 主程序文件中(MsApp.cs) KeyinTree的值要加上主命令名
    (即namespace 关键字后面的)。即

              [Bentley.MicroStation.AddInAttribute(MdlTaskID=“MsApp”, KeyinTree=“MsApp.commands.xml")]

 

 

3、  测试

a)        将生成的文件MSAPP.dll复制到Microstation安装目录下的“mdlapps”目录下,然后运行Microstation,打开菜单【实用工具】-【键入命令】,弹出键入命令窗口,键入“MDL load msapp”,提示已加载。

 

 

然后再键入msapp,即可以出现默认的2个命令。

 

到这一步,说明这个开发环境已经配置成功了,下一步就可以针对这个向导添加自己的命令、窗口和其它功能了。

 

调试运行

  • VS里设置调试环境

C:\Program Files\Bentley\MicroStation V8i (SELECTseries 1)\MicroStation\mdlapps\

1.  首先设置项目属性,在项目上点击右键,选择属性,在“生成”选项卡,设置输出路径为Microstation的安装目录下的mdlapps下。

2.  为了方便调试和提高效率,可以将常用的几个键入命令设置为工具条。

(Microstation中界面定制保存在*.dgnlib文件中。可以先打开常用的一个dgnlib文件,如General.dgnlib,然后在Microstation中定义工具菜单

  • 装载:mdl load msapp,,mydomain
  • 卸载:clr unload domain mydomain
  • Open:msapp open
  • ……

 

定制完成后效果如下:

 

 

备注:

Addins依附于应用程序域(AppDomain),要卸载Addins必须将其所在的应用程序域一起卸载。通过mdl load MSAddins,会将Addins加载到DefaultDomain应用程序域中,而该应用程序域不能被卸载。这样,只能退出MicroStation才能卸载用户加载的Addins

 

通过

  • 装载:mdl load msapp,,mydomain
  • 卸载:clr unload domain mydomain

可实现在不关闭MS的情况下进行加载和卸载,方便调试。

 

 

  • Vs中调试方法
    • 启动Microstation
    • Vs:【调试】-【附加到进程】
    • 选择MS进程

(ustation.exe)

 

VS自动启动调试,只需要在需要的地方插入断点,在microstation中操作的时候即可自动跳转到该断点进行调试。 

(待续) 

本文提到的Microstation addins二次开发向导包:点击下载 

转载于:https://www.cnblogs.com/nuoya_design/archive/2011/03/03/microstation.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值