以上章节和大家一起学习了ORD SDK的使用。我们对Geometry Model SDK和Linear Geometry SDK的使用有了比较深刻的了解。从课程刚开始的时候我们就通过学习,了解了ORD的开发是基于MicroStation的,ORD SDK的接口发布的时候也对MicroStation SDK也做了一次发布。这一章将以我们对ORD SDK知识的了解为基础,使用ORD SDK的接口读取道路几何信息、计算桩号,然后再使用MicroStation SDK 读取地形数据和计算投影点的位置,并创建一组方柱形状的Soild。
一、构建程序框架
二、创建DTM
使用Terrain->Create->From File菜单命令,选择group.dtm文件,创建数字地面模型。我们可以通过选择“Default-3D Views”和选择不同的“Display Styles”,来查看数字地面模型创建情况。
三、创建一条包含纵断面的Alignment
四、实现功能
五、创建方形的柱子
这里创建方形的柱子需要调用MicroStation SDK的接口。
首先要创建一个普通实体(SolidPrimitive),我们创建一个实体的先决条件必须要有几何描述。我们使用DgnBoxDetail去描述一个方柱,DgnBoxDetail的构造函数解释如下:DgnBoxDetail(baseOrigin, topOrigin, vectorX, vectorY, baseX, baseY, topX, topY, capped)。baseOrigin与topOrigin分别指的是底部与顶部的中心点的坐标,我们的方柱顶底部的坐标在XY上重合,在Z上相差一个柱高。vectorX与 vectorY是指的方柱的局部坐标系X,Y与世界坐标系的关系,我们设置它和世界坐标系的X,Y相同。baseX, baseY, topX, topY这四个值分别代表的方柱局部坐标系下的底部X,Y方向的边长和顶部X,Y方向的边长。capped我们设置为true,因为我们的方柱是一个封闭实体。
构建好了DgnBoxDetail以后,我们需要使用SolidPrimitive的CreateDgnBox方法去创建一个SolidPrimitive对象。调用CreateDgnBox的时候把我们先前创建的DgnBoxDetail对象传入。
获得创建好的SolidPrimitive对象以后,我们调用DraftingElementSchema的ToElement函数去生成一个Element。如果我们对MicroStation C++ SDK了解的话,就知道这里实际是转换成了一个EditElementHandle。我们把生成的Element加入DgnModel(调用AddToModel函数),这时方柱实体对象就加入到当前模型中了,并可在视图里显示。
代码如下:
public static void BuildBoxSolidElement(DgnModel model, DPoint3d pos, double h)
{
DPoint3d baseOrigin = pos;
DPoint3d topOrigin = pos;
topOrigin.Z += h * UorPerMeter();
double length = 2;
DVector3d vectorX = new DVector3d(1, 0, 0);
DVector3d vectorY = new DVector3d(0, 1, 0);
double baseX = length * UorPerMeter();
double baseY = length * UorPerMeter();
double topX = length * UorPerMeter();
double topY = length * UorPerMeter();
bool capped = true;
DgnBoxDetail box = new DgnBoxDetail(baseOrigin, topOrigin, vectorX, vectorY, baseX, baseY, topX, topY, capped);
SolidPrimitive sp = SolidPrimitive.CreateDgnBox(box);
Bentley.DgnPlatformNET.Elements.Element ee =
Bentley.DgnPlatformNET.Elements.DraftingElementSchema.ToElement(model, sp, null);
ee.AddToModel();
return;
}
绘制单个方柱的结果如下所示:
六、计算方柱底部的坐标并绘制
计算方柱底部坐标要经过两大步骤,通过路线的桩号及偏移距离去定位方柱的平面位置,通过方柱的平面位置计算数字地面模型上的投影点的坐标。这个坐标就是我们方柱底部的坐标。
绘制结果如下所示:
本章介绍了怎么利用ORD SDK获取路线信息,然后调用MicroStation SDK,两者结合去绘制两排沿路线布置的方柱。实际工程中有着大量的这种创建自定义工程构造的需求,比如创建挡墙、排水设置等。ORD SDK给大家提供了大量与路线工程相关的接口,MicroStation SDK作为基础平台的接口提供了大量三维建模的功能。这两种SDK的结合会让您在与路线相关专业的软件开发中更加自如。
本章示例代码: