在OpenRoads Designer中,面向几何模型的SDK(GeometryModel.SDK)由两部分组成,即面向Native C++层面的Bentley.Cif.GeometryModel.SDK以及面向.NET层面的Bentley.CifNET.GeometryModel.SDK。这两者在功能上是等价的,只是面向不同的开发平台;而在实现上,后者是基于前者封装而成的。GeometryModel SDK用于获取OpenRoads Designer程序里工程模型信息的库,例如道路中线、路廊信息和超高信息等。
在OpenRoads Designer里工程模型的数据是以树的关系存储的,数据结构关系如下图所示:
从类层次图我们可以看出,几乎所有的Entity对象均继承自ConsensusItem对象。这个ConsensusItem从最底层代表了OpenRoads Designer中任何可持久化的对象,同时,此类中提供了一些通用性的方法,可用于直接从Dgn中的 Element对象创建实例、从DgnEC实例创建对象、查询所属DgnModel等。
在ConsensusItem基础上,依次派生出了ModelEntity、NamedModelEntity、FeaturizedModelEntity三个层次的抽象基类。其中,ModelEntity在其基类基础上,增加了获取与平台对象对应DgnPlatform::Elements::Element的能力;NamedModelEntity则在其基类基础上,增加了获取对象名称的能力;FeaturizedModelEntity则在其基类基础上,增加了获取与对象关联的FeatureName、FeatureDefinition、GeometryPresentation以及AnnotationProcessingGroup的能力。
(1)ConsensusItem
命名空间(namespace): Bentley.CifNET.SDK
库名称:Bentley.CifNET.SDK.4.0.dll
此类是SDK中所有可持久化类的基类。其中不仅提供了类实例所属的DgnModel、DgnECInstance,同时还提供了从DgnElementECInstance、InstanceId直接创建SDK对象的能力。
(2)ModelEntity
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类为ConsensusItem的子类,主要用于代表系统中任何具有图形表现的对象,它相对父类而言,主要增加了获取对等的DgnPlatformNET.Elements.Element的功能。通过获取Element,就可以配合MS的SDK完成一些当前层次所不能完成的
(3)NamedModelEntity
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表可获取名称的图形化实体,以此为基类的所有实体,可以获取实体的名称。
(4)Annotation
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表SDK中的标注对象实体,其中包含此标注对象的定义对象,在openRoad modeling模式下的Drawing Production,如下图所示。
(5)AnnotationDefinition
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表SDK中标注对象的定义,通过它可以获取标注定义中的标注实例数据(XML形式)、保存标注数据的Schema名称以及标注所定义的类名称。此对象的获取,既可以通过标注对象Annotation得到,也可以通过GeometricModel对象获取,在openRoad modeling模式下的Drawing Production,如下图所示。
(6)AnnotationProcessingGroup
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表一组待处理的标注对象,它是个容器对象。通过它可以提取所有标注对象实例以及与标注组相关联的Role对象。此对象可通过其所属的FeaturizedModelEntity获得,在openRoad modeling模式下的Drawing Production,如下图所示。
(7)ApplicationObjectSettings
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此对象主要用于代表系统中FeatureDefinition中面向APP级别的持久化对象,通过它可以获取相关联的所有几何呈现对象(GeometryPresentation)。而它自身则可以通过FeatureDefinition对象得到,打开element的属性窗口,如下图所示。
(8)XSectionNamedBoundary
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表命名的横断面绘图边界对象,通过它可以获取关联的横断面绘制时所需的各种参数设置,主要包括断面的桩号、横向宽度、名称、所属的组名称等等。此对象的获取,既可以通过DgnModel对象显式创建,也可以通过ConsensusConnection直接获取,在openRoad modeling模式下的Drawing Production,如下图所示。
(9)ProfileNamedBoundary
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表命名的纵断面绘图边界对象,通过它可以获取关联的纵断面绘制时所需的各种参数设置,主要包括纵断面的起始/终止位置、长度、关联的Alignment对象、边界名称、边界所属的组名称等等。此对象同样需要使用DgnModel显式创建,在openRoad modeling模式下的Drawing Production,如下图所示。
(10)PlanNamedBoundary
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表命名的平面绘图边界对象,通过它可以获取关联的横断面绘制时所需的起终位置、长度、坐标、关联的Alignment对象、边界名称、边界所属的组名称等等。此对象需要从DgnModel或者DgnPlatformNET::Elements::Element显式创建,在openRoad modeling模式下的Drawing Production,如下图所示。
(11)SurveyPoint
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表路线测绘时确定的单个控制点对象,通过它可以获取此控制点相关的所有信息,如:点的名称、特征名称、大地坐标、高程、确定时间、所属区域、所属数据文件等等。此对象的获取,可以通过所属导线对象SurveyChain获取,也可以通过ConsensusConnection对象获取,还可以通过其关联的DgnPlatformNET::Elements::Element对象创建,一般在survey模式下创建SurveyPoint,如下图所示。
(12)SurveyChain
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表路线测绘时确定的单根控制线(也称为导线),它是由若干个控制点连接而成,用于控制路线的平面线型。通过它可以获取导线相关的所有信息,例如:导线名称、特征名称、相关的控制点集合、勘定时间、所属数据文件等等。此对象,既可以通过ConsensusConnection对象获取,也可以通过其关联的DgnPlatformNET.Elements.Element对象创建。
(13)StationEquation
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类用于代表路线设计中的断链(含短链和长链),通过它可以获取路线中特定断链的信息,这些信息主要包括:断链名称、来向桩号、去向桩号。此对象可通过Stationing对象获取,在openRoad modeling模式下的Geometry选项下,如图所示。
(14)GeometricSpace
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表一个容纳所有几何实体的容器,使用它可以获取容器中包含的所有实体。
(15)SuperElevationTransition
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表路线横断面超高中的超高过渡,通过它可以获取路线特定段落中的超高过渡信息,如:超高旋转方式、过渡段长度、非线性曲线长度、旋转轴位置等等。此对象可通过SuperElevation
此类代表具有附加特征属性的图形化实体,也就是说,但凡以此为基类派生的类,其上均可以附加额外的属性信息。通过此对象可以查询到的信息包括:对象的特征名称(FeatureName)、对象的特征定义(FeatureDefinition)、对象的几何呈现对象(GeometryPresentation)以及对象的标注处理组(AnnotationProcessingGroup),在openRoad modeling模式下的Corridors选项下,如图所示。
(16)Corridor
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表一个路廊对象(实质上,它可以代表任何基于给定横断面模板扫略而成的3D网格表面对象)。通过此对象,可以获取Corridor的创建数据以及Corridor本身的一些数据,主要包括:用于描述Corridor的XML片段、构成Corridor的Surface对象集合以及Corridor关联的Alignment对象,此外,通过此对象还可以在Corridor上提取指定桩号处的正切断面数据,在openRoad modeling模式下的Corridors选项下,如图所示。
(17)FeaturizedModelEntity
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类是一个抽象基类, 用于代表具有图形表达、具有名称以及具有特征的模型实体。通过他可以获取模型的特征名称、模型的可视化呈现对象及模型的特征定义对象。
(18)FeatureDefinition
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表附加在FeaturizedModelEntity上的附加特征信息定义。其中包含的数据目前主要为ApplicationObjectSettings对象组。此对象主要通过所属的FeaturizedModelEntity对象来获取。
(19)SuperElevation
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表横断面超高定义。通过它可以获取超高的过渡方式定义(SuperElevationTransition)、正常横坡值以及所属的超高断面(SuperElevationSection)。此外,它还提供了若干方法用于计算特定桩号处的断面超高。此对象主要通过所属的SuperElevationSection对象来获取,在openRoad modeling模式下的Corridors选项下,如图所示。
(20)SuperElevationSection
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表路线横断面中使用了超高的区段。通过它可以获取区段内所使用的超高定义集合、与之关联的Alignment对象,在openRoad modeling模式下的Corridors选项下,如图所示。
(21)AnnotationGroup
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表一个标注组,其中包含有保存标注数据的Schema名称以及匹配的标注类名称。此对象可通过GemetricModel对象获取。
(22)AnnotationGroupReference
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表一个标注组引用对象(一个用于引用标注组对象对象),其中包含所引用的标注组以及关联的RoleSetOverrides集合。
(23)GeometryPresentation
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表一个几何呈现对象(主要用于支持属性面板、动态属性显示等UI操作),其中提供的方法可用于从FeaturizedModelEntity获取标注定义对象集合。
(24)GeometricModel
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表一个几何模型。SDK中的几何模型是个实体集合,充当实体对象总目录的角色;与此同时,它又是一个DgnModel中的一部分。通过此对象,可以获取模型中包含的所有对象实例,继而提取其中的数据。通过此对象可获取的信息包括:
(25)LongSectionSpace
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表一个纵断面空间对象。此类主要用于完成纵断面空间点(X为桩号,Y为高程,Z不使用)与3D世界坐标系点的互转。此对象可通过所属的Alignment对象获取。
(26)Alignment
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表路线的平面线对象。通过它可以获取如下信息:
(27)LinearEntity3d
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表与路线平面线等价的一条空间3D曲线实体,而且每条此类曲线均与一个Alignment相对应。通过此对象可获取与之关联的CurveVector对象,它是此3D空间曲线的几何表达;此外通过它还可以获取所属的Alignment对象。
(28)PointEntity2d
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表几何模型中包含的一个2D点实体,通过此对象可获取点的坐标。此对象可通过所属的几何对象GeometricModel来获取。
(29)Profile
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表Alignment所属的纵断面对象,通过它可以获取纵断面的竖曲线几何对象以及与之关联的地形表面对象(TerrainSurface)。此对象可通过所属的Alignment对象来获取。
(30)SurfaceEntity
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表一个表面实体。
(31)ScalableMeshSurface
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表一个可伸缩的网格表面。
(32)TerrainSurface
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表一个地形表面对象,通过它可以获取与之关联的DTM对象,从而可以实现基于DTM的应用,如:断面剖切、点投影、路径投影、体积/面积计算等等。此对象可通过所属的几何模型(GeometricModel)获取,也可以通过所引用的Profile对象来获取。
(33)ConsensusConnection
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类代表SDK与DgnModel的一个连接。SDK中任何对DgnModel的数据查询和提取,都需要直接或间接的透过此连接进行操作。所以,构造此对象始终是顺序遍历和解析DgnModel中数据的第一步。通过建立此对象,可以获取:
(34)StationFormatSettings
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类是个工具类,主要用于提取指定DgnModel中桩号字符串格式化的相关设置,并提供了相关接口供用户直接获取具体的设置项属性。
(35)StationingFormatter
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类是个工具类,主要用于按照OpenRoads Designer内部设置将桩号值转换为桩号字符串,同时还提供了桩号字符串反向转换为桩号值的功能。
(36)TemplateDrop
命名空间(namespace): Bentley.CifNET.GeometryModel.SDK
库名称:Bentley.CifNET.GeometryModel.SDK.4.0.dll
此类是个模板类,主要用于根据不同的模板生成不同的路廊断面。