1. 程式人生 > 其它 >Bentley ORD(openroads designer) 二次開發(BIM)第二節 基礎介面分享

Bentley ORD(openroads designer) 二次開發(BIM)第二節 基礎介面分享

技術標籤:Bentley ORD 二次開發(BIM)

Bentley ORD(openroads designer) 二次開發(BIM)第二節 基礎介面分享

CoderLPF2021-01-25 07:37:5489已收藏1

分類專欄:Bentley ORD 二次開發 系列文章

版權

目錄

前言

本系列文章第一節參考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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 二維點 DPoint2d

    // 定義
    DPoint2d point = new DPoint2d(double ax, double ay);
    // 運算 是否同一個點
    DPoint2d.Equals(DPoint2d left, DPoint2d right);// 靜態方法
    bool Equals(DPoint2d other); // 例項方法
    // 運算 求距離
    double Distance(DPoint2d target);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 三維點 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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 二維向量 DVector2d

    // 定義
    DVector2d v = new DVector2d(DPoint2d origin, DPoint2d target);
    DVector2d v = new DVector2d(double ax, double ay);
    
    • 1
    • 2
    • 3
  • 三維向量 DVector3d

    // 定義
    DVector3d v = new DVector3d(DPoint3d origin, DPoint3d target);
    DVector3d v = new DVector3d(double ax, double ay, double az);
    
    • 1
    • 2
    • 3

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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • ThreeDElementTools

    // TODO List
    // 三維空間實體元素建立工具暫不做詳細介紹,後續會根據開發情況逐步補充完善 
    
    • 1
    • 2

2、專案預備

本系列文章基於隧道設計斷面繪製專案為例項進行經驗總結及分享,過程中會用到以上介紹的相關名稱空間及介面函式,同時還需要有一定額數學幾何分析能力,主要包含以下:

  • 點、線、面關係,相切、相交等等

  • 三角函式應用

  • 相似三角形原理

  • 法向、矩陣、向量等概念

  • 三維幾何空間概念

注:斷面設計引數複雜多變,本專案會根據不同的設計引數定製開發一套通用的、靈活的斷面繪製演算法以適用不同種類的斷面設計過程

關注以下公眾號,關注各種技術文章,獲取本系列後續推送與分享