Download presentation
Presentation is loading. Please wait.
1
Bentley开发技术支持经理 符永安 yongan.fu@bentley.com
2
主题 三大平台开发方法概述 MVBA Addins MDL 几何类API介绍 MSCE SDK架构 问题与解答
3
一、三大平台开发方法概述 设计平台——MicroStation 活动文档管理平台——ProjectWise
VBA C# (或C++/CLI、VB.NET) C/C++ 活动文档管理平台——ProjectWise 可自行封装供C#等语言调用 资产全生命周期管理平台——AssetWise (eB)
4
二、MVBA MVBA = MicroStation Visual BASIC for Application
从V8开始支持,不同于以前的MicroStation BASIC 面向对象,支持MicroStationDGN对象模型 易学、易用——适于批处理、绘图工具以及规模较小的应用程序; 和MicroStation结合得不够紧密,如不能定义命令、不能操作菜单等 对象模型中的常用对象 Application DesignFile Levels/Level ModelReferences/ModelReference Fonts/Font Attachments/Attachment LineStyles/LineStyle Element(LineElement, ArcElement, …)
5
录制MVBA宏是分析MicroStation命令和后台变量的一个手段
Sub Main() Dim ee As ElementEnumerator Set ee = ActiveModelReference.Scan Do While ee.MoveNext Debug.Print ee.Current.Type Loop End Sub MVBA项目的文件扩展名为.MVBA 录制MVBA宏是分析MicroStation命令和后台变量的一个手段 SetCExpressionValue "powerSelectInfo.prefs.selectControls", 1, "PSELECT” MDL中可通过调用mdlCExpression_setValueForApp来实现以上功能
6
MicroStationDgn (VBA库)
三、Addins 支持的版本: 可用语言: 用户界面(GUI) 可用对象模型: MSCE U11需要 V8XM V8i CE C# VB.NET C++/CLI WinForm WPF MicroStation.NET库 MicroStationDgn (VBA库) Visual Studio 2015
7
不使用MKE创建一个最简单的Addins项目:
在Visual Studio中新建一个C#的Class Library项目 引用以下三个DLL: …\MicroStation\ustation.dll …\MicroStation\assemblies\bentley.microstation.interfaces.1.0.dll …\MicroStation\assemblies\ECFramework\bentley.general.1.0.dll 键入如下代码: internal sealed class MyAddin : Bentley.MstnPlatformNET.AddIn { private MyAddin(System.IntPtr mdlDesc) : base(mdlDesc) } protected override int Run(string[] commandLine) MessageBox.Show("Hello World"); return 0;
8
四、MDL MDL = MicroStation Development Language/Library
功能强大——最适合编写专业级的应用程序; 基于C、C++程序设计语言; 从MicroStation V4.0开始就有; 需要单独安装MicroStation SDK后才能开发; MstnCE SDK中包含大量类,支持面向对象的编程; 学习资源:MicroStationAPI.chm随机帮助文档 BE-Communities下有MicroStation Programming社区 中文论坛(中国优先社区)—— Wiki > MicroStation > 二次开发
9
NativeCodeMDL——目前推荐的开发方式,用微软的编译器(cl)和链接器 (link)来生成应用程序. dll。还需要
NativeCodeMDL——目前推荐的开发方式,用微软的编译器(cl)和链接器 (link)来生成应用程序.dll。还需要.ma作为切入点。 extern "C" DLLEXPORT void MdlMain (int argc, WCharCP argv[]) { } 对话框资源既可以用传统的.r来定义也可以用VS中的.res来定义。 .r定义最终位于.ma中;.res定义最终位于.dll中。 MS特有的一些资源(如命令表资源、消息表资源等)必须在.r资源中定义。 cl link .cpp .obj .dll rcomp rlib .r .rsc .ma bmake
10
五、几何方面的API介绍 欧几里得几何 创建简单元素 三维建模 实体 网面(Mesh) B样条曲线和曲面(NURBS)
简单实体(Solid) 智能实体(SmartSolid) 参数化实体(ParametricSolid) 网面(Mesh) B样条曲线和曲面(NURBS)
11
欧几里得几何 DPoint2d、DPoint3d、DVec2d、DVec3d、DPlane3d、DRay3d、DSegment3d
RotMatrix(旋转矩阵)、Transform(变换矩阵)
12
创建简单元素(1) 1D/2D 参见Base Geometry.DGN ArcHandler::CreateArcElement
EllipseHandler::CreateEllipseElement ChainHeaderHandler::CreateChainHeaderElement / AddComponentElement / AddComponentComplete CurveHandler::CreateCurveElement LineHandler::CreateLineElement LineStringHandler::CreateLineStringElement ShapeHandler::CreateShapeElement 参见Base Geometry.DGN
13
创建简单元素(2) 3D (简单实体) ConeHandler::CreateConeElement
SurfaceOrSolidHandler CreateProjectionElement (创建拉伸体) CreateRevolutionElement (创建旋转体)
14
通用建模:智能实体模型 BrepCellHeaderHandler::CreateBRepCellElement
需要先构造ISolidKernelEntity几何表达 SolidUtil类 SolidUtil::Convert类 SolidUtil::Create类 SolidUtil::Modify类 SolidUtil::TopologyID类
15
通用建模:网面模型 MeshHeaderHandler::CreateMeshElement 需要先构造PolyfaceQuery几何表达
16
通用建模: NURBS BsplineSurfaceHandler::CreateBSplineSurfaceElement
需要先构造MSBsplineSurface几何表达
17
六、MicroStation CONNECT SDK架构
Application SessionManager MDL APIs MSDocumentManager etc. MstnPlatform AccuDraw AccuSnap DrawContext DgnPrimitiveTool FenceManager etc. DgnDisplay DgnFile DgnModel DgnAttachment ElementHandle LevelCache etc. DgnPlatform DPoint3d RotMatrix Transform CurveVector etc.. ECSchema ECInstance ECValue etc. BentleyGeom ECObjects WString BeStringUtilities BeTextFile BeStorage RefCounted etc. Bentley
18
七、问题与解答
Similar presentations