前言
本系列文章第一节参考 Bentley ORD(openroads designer) 二次开发(BIM)第一节 环境配置
本节主要进行ORD SDK通用方法的介绍,包括创建基本的元素、SDK常用命名空间及相关接口的使用示例,如有不妥,欢迎大家在评论区修改补充
1、命名空间
主要介绍最基本的三个命名空间,分别是Bentley.GeometryNET、Bentley.DgnPlatformNET.Elements、MdlUtility。
Bentley.GeometryNET
该命名空间主要定义Bently开发包中最基本的图形元素,包括角度、二维点、三维点、二维向量、三维向量等元素,这些元素是构成后续复杂图形(包括线段、弧段、复杂链、面等)的必须的基本元素。
- 角度Angle // 弧度与角度转换 Angle.DegreesToRadians(double degress); Angle.RadiansToDegrees(double radians); // 常量 Angle.PI; // 常用三角函数 Angle.Acos; Angle.Asin; Angle.Atan;Angle.Atan2; // 角度自身三角函数运算 Angle angle = new Angle(); angle.Cos; angle.Sin; angle.Tan; 一键获取完整项目代码csharp运行1234567891011121314
- 二维点 DPoint2d // 定义 DPoint2d point = new DPoint2d(double ax, double ay); // 运算 是否同一个点 DPoint2d.Equals(DPoint2d left, DPoint2d right);// 静态方法 bool Equals(DPoint2d other); // 实例方法 // 运算 求距离 double Distance(DPoint2d target); 一键获取完整项目代码csharp运行1234567
- 三维点 DPoint3d // 定义 DPoint3d point = new DPoint3d(double ax, double ay, double az); // 运算 是否同一个点 DPoint3d.Equals(DPoint3d left, DPoint3d right);// 静态方法 bool Equals(DPoint3d other); // 实例方法 // 运算 求距离 double Distance(DPoint3d target); 一键获取完整项目代码csharp运行1234567
- 二维向量 DVector2d // 定义 DVector2d v = new DVector2d(DPoint2d origin, DPoint2d target); DVector2d v = new DVector2d(double ax, double ay); 一键获取完整项目代码csharp运行123
- 三维向量 DVector3d // 定义 DVector3d v = new DVector3d(DPoint3d origin, DPoint3d target); DVector3d v = new DVector3d(double ax, double ay, double az); 一键获取完整项目代码csharp运行123
Bentley.DgnPlatformNET.Elements
该命名空间主要定义在绘图空间形成的各类元素,其所有类均继承于Element。常见的元素类型包括线段、弧段、复杂多段线、面、复杂面及各类三维立体元素等,是构成各类复杂模型的基本元素。
- 线段 LineElement 线段元素,由两点组成的绘图元素,创建方法见下一个小节
- 弧段 ArcElement 弧段元素,由圆心、起终点或角度绘制而成,创建方法见下一个小节
- 其他元素创建方法与线 弧段创建方法一致,具体见下一小节内容。
- 通用元素类 Element
MdlUtility
该命名空间主要提供绘制元素的创建工具,具体包括二维空间元素工具TwoDElementTools、三维空间元素工具ThreeDElementTools,主要用于创建空间各种元素,具体如下:
- TwoDElementTools // 创建圆弧 CreateArcElement1(DPoint3d startPoint, DPoint3d centerPoint, DPoint3d endPoint, bool isMajor);// 起点、终点、圆心,major暂时未弄清楚 CreateArcElement2(DPoint3d CenterPoint, double PrimaryRadius, double SecondaryRadius, DMatrix3d Rotation, double StartAngle, double SweepAngle);// 圆心、主半径、第二半径、旋转法线、初始角度、圆弧角度 // 创建线元素 CreateLineElement1(List<DPoint3d> managedPoints);// 线段折点 CreateLineElement2(DPoint3d startPoint, DPoint3d endPoint);// 线段起终点 // 创建面元素 CreateShapeElement1(List<DPoint3d> managedPoints, MsdFillMode FillMode);// 多边形折点、填充模式 // 创建复杂链 CreateComplexLineElement(List<Element> eles);// 首尾相接的元素列表 // 创建复杂面 CreateComplexShapeElement(List<Element> eles, MsdFillMode FillMode);// 根据首尾相接的元素列表,创建多边形元素 /***************以上函数返回类型均为Element********************/ // 获取元素起终点 GetStartAndEndPoint(Element curve, ref DPoint3d StartPoint, ref DPoint3d EndPoint); 一键获取完整项目代码csharp运行12345678910111213141516
- ThreeDElementTools // TODO List // 三维空间实体元素创建工具暂不做详细介绍,后续会根据开发情况逐步补充完善 一键获取完整项目代码csharp运行12
2、项目预备
本系列文章基于隧道设计断面绘制项目为实例进行经验总结及分享,过程中会用到以上介绍的相关命名空间及接口函数,同时还需要有一定额数学几何分析能力,主要包含以下: 点、线、面关系,相切、相交等等 三角函数应用 相似三角形原理 法向、矩阵、向量等概念 三维几何空间概念
注:断面设计参数复杂多变,本项目会根据不同的设计参数定制开发一套通用的、灵活的断面绘制算法以适用不同种类的断面设计过程
关注以下公众号,关注各种技术文章,获取本系列后续推送与分享

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删