Teigha.net實體屬性註釋

来源:https://www.cnblogs.com/motao9527/archive/2019/12/20/12074160.html
-Advertisement-
Play Games

Polyline3d: 3D polyline的類型由PolyType屬性存儲, 它是由Poly3dType枚舉定義的整數值。PolyType屬性是一種繪製三維折線的近似方法 Polyline3d polyline = new Polyline3d(Poly3dType.SimplePoly, p3 ...


Polyline3d:

3D polyline的類型由PolyType屬性存儲,

它是由Poly3dType枚舉定義的整數值。PolyType屬性是一種繪製三維折線的近似方法

Polyline3d polyline = new Polyline3d(Poly3dType.SimplePoly, p3dc, false);

是否閉合:

polyline.Closed = false;

 

PolyType屬性可用於設置和返回折線的類型。

使用非預設構造函數Polyline3d()創建3D polyline實體時,可以指定類型

polyline.PolyType = Poly3dType.QuadSplinePoly;

polyline.ConvertToPolyType(Poly3dType.QuadSplinePoly);

 

ConvertToPolyType()方法使用SplineFit()方法進行轉換。如果需要其他設置,請使用此方法。

將當前三維折線轉換為特定類型的三維折線。

線段參數設置為每個樣條擬合折線生成的線段數量。大量的線段使折線更平滑。

polyline.SplineFit(Poly3dType.CubicSplinePoly, 3);

 

將當前3D折線轉換為預設類型的3D折線,並使用預設的插值線段數量。

資料庫對象的Splinetype和Splinesegs屬性相應地設置預設樣條類型和段數。

註意,當前Polyline3D對象必須是資料庫的常駐對象

polyline.SplineFit();

 

Polyline3D對象具有拉直(Straighten())方法,

用於去除樣條擬合,將樣條擬合的三維折線轉換為簡單的三維折線:

polyline.Straighten();

 

Polyline3D對象包含用於在polyline中添加和插入頂點的方法。

若要向3D折線添加頂點,請使用AppendVertex()方法:

該方法將新的頂點實體附加到三維折線實體的頂點列表中,並使該折線成為其所有者。

如果折線是資料庫駐留符,則必須在返回AppendVertex()方法後顯式關閉附加的頂點實體。

PolylineVertex3d vrtx = new PolylineVertex3d(new Point3d(0, 0, 0));

polyline.AppendVertex(vrtx);

polyline.Dispose();

 

要將頂點插入到3D折線,使用InsertVertexAt()方法:

將指定的頂點實體插入到指定頂點之後的3D折線實體中,並使折線成為其所有者。

如果折線是資料庫駐留,則必須在返回InsertVertexAt()方法後顯式關閉插入的頂點實體。

insert new vertex after the fourth vertex //在第四個頂點之後插入新頂點

polyline.InsertVertexAt(verticesID[3], vrtx1);

insert new vertex at the beginig of the polyline 在折線的起始點插入新的頂點

polyline.InsertVertexAt(ObjectId.Null, vrtx2);

 

讀取線段

foreach (ObjectId obj in polyline)

{

    using (DBObject dbObj = trans.GetObject(obj, OpenMode.ForRead))

    {

        if (dbObj is PolylineVertex3d)

        {

            PolylineVertex3d poly3D = (PolylineVertex3d)dbObj;

        }

    }

}

 

Polyline3D對象具有隻讀長度屬性,該屬性返回以繪圖單元測量的所有段長度的和。

MessageBox.Show(polyline.Length.ToString());

 

 

 

Arcs:

圓弧是由一個圓創建的,使用起始角和結束角、中心點和半徑來定義。

起始角設置圓弧將從何處繪製的起始點。

結束角設置將繪製圓弧的結束點。這兩個角都是用弧度(0到2 *)測量的,

並以逆向時針方計演算法向量的原點。

如果起點和終點相同,則實體被畫成一個圓。

 

public Arc(Point3d center, double radius, double startAngle, double endAngle);

  • 這個構造函數需要四個參數:

center —圓弧中心點的三維WCS坐標。

radius —弧的半徑。

startAngle —以弧度表示的弧的起始角。這個角的正方向是逆時針的。

endAngle —以弧度表示的弧的結束角。這個角的正方向是逆時針的。

Arc arc1 = new Arc(new Point3d(100, 50, 0), 50, 0, 45);

 

 

public Arc(Point3d center, Vector3d normal, double radius, double startAngle, double endAngle);

This constructor requires five parameters:

center — Three-dimensional WCS coordinates of the arc's center point.

normal — Three-dimensional vector of the arc’s normal.

radius — Radius of the arc.

startAngle — Start angle of the arc in radians.The positive direction for the angle is counter-clockwise.

endAngle — End angle of the arc in radians.The positive direction for the angle is counter-clockwise.

Arc arc2 = new Arc(new Point3d(100, 50, 0), new Vector3d(0, 0, 1), 150, 0, 90);

 

public Arc();

預設構造函數,它創建的弧的起始角和結束角為0.0,

半徑為0.0,圓心為(0, 0, 0),法向量為(0, 0, 1)。

using (var trans = F1Show.database.TransactionManager.StartTransaction())

{

using (BlockTableRecord btr = (BlockTableRecord)F1Show.database.CurrentSpaceId.GetObject(OpenMode.ForWrite))

{

btr.AppendEntity(arc1);

btr.AppendEntity(arc2);

trans.AddNewlyCreatedDBObject(arc1, true);

trans.AddNewlyCreatedDBObject(arc2, true);

}

trans.Commit();

}

圓弧的中心、半徑、起始角、結束角、法線和厚度屬性用於設置和獲取圓弧的中心、半徑、起始角和結束角、法線和厚度參數。

起始角和結束角屬性定義弧的起始角和結束角。角的正方向是逆時針方向,指向法向量的原點。

Arc對象還具有隻讀的TotalAngle和Length屬性。TotalAngle屬性獲取結束角和開始角之間的差(以弧度為單位)。Length屬性獲取弧的長度。

 

if (helperDevice != null)

{

helperDevice.Update();

}

Invalidate();

}

 

Ellipse:

可以使用下麵的Ellipse()構造函數之一創建Ellipse對象。

public Ellipse(Point3d center, Vector3d unitNormal, Vector3d majorAxis, double radiusRatio, double startAngle, double endAngle);

公共橢圓(Point3d中心,Vector3d單位法線,Vector3d主軸,雙半徑比,雙起始角,雙結束角);

這個構造函數需要6個參數:

中心 - 中心點的三維WCS坐標。

單位法向量——法向量的三維向量。

主軸 - 指定主軸(中心點到起點)的三維向量。

半徑比 - 橢圓的半徑比,即小半徑(小矢量的長度)與大半徑(大矢量的長度)之比。半徑比必須在0.000001到1.000000(小半徑<大半徑)之間。

起始角 - 橢圓的起始角,單位為弧度。這個角的正方向是逆時針方向,指向法向量的原點。

端角 - 橢圓的端角,單位為弧度。這個角的正方向是逆時針方向,指向法向量的原點。

 

如果起始角為0,結束角為2,則創建一個閉合橢圓,否則構造函數將生成橢圓弧。

創建一個閉合橢圓

Ellipse el1 = new Ellipse(new Point3d(100, 50, 0), new Vector3d(0, 0, 1), new Vector3d(10, 0, 0), 0.7, 0.0, 6.283185);

 

創建一個橢圓弧,起始角0.0,結束角3.141592弧度

Ellipse el2 = new Ellipse(new Point3d(100, 50, 0), new Vector3d(0, 0, 1), new Vector3d(10, 0, 0), 0.9, 0.0, 3.141592);

 

預設構造函數,它創建一個半徑為1的圓(半徑比為1的閉合橢圓),圓心為(0, 0, 0),法向量為(0, 0, 1)。

Ellipse el1 = new Ellipse();

 

Center屬性用於設置和獲取橢圓的中心。創建橢圓對象後,

設置Center屬性來更改橢圓中心的位置。

el1.Center = new Point3d(10, 0, 0);

 

起始角和結束角屬性

StartAngle和EndAngle屬性用於設置和獲取橢圓的起始角和結束角。

角的正方向是逆時針方向,指向法向量的原點。

如果將StartAngle設置為0,EndAngle設置為2,則創建一個閉合橢圓,否則橢圓將轉換為橢圓弧。註意,起始角和結束角必須相差大於1E - 6。

 

el1.StartAngle = 0;

el1.EndAngle = 1.571;

(MajorAxis and MinorAxis)主軸和小軸的性質是用來得到代表橢圓的主軸和小軸的向量。這兩個性質都是從橢圓中心點出發的

(MajorRadius and MinorRadius)大半徑和小半徑性質分別得到大半徑和小半徑。大半徑是主軸矢量的長度,小半徑是主軸矢量的長度。

Normal 法向量性質得到橢圓平面的法向量。

半徑比特性用於設置和得到小半徑與大半徑的比值。大半徑必須大於小半徑 ,

這意味著半徑比必須在0到1之間。如果輻射比大於1.0或小於1E - 6

el1.RadiusRatio = 0.5;

 

StartParam和EndParam屬性相應地獲取橢圓的開始和結束參數。用參數定義橢圓圓弧,用矢量參數方程:

p(u) = c + a* cos(u) + b* sin(u)

c 橢圓的中心。

a 橢圓的主軸。

b - 橢圓的小軸。

 

獲取指定角度的參數

要獲取與指定角度對應的參數值,可以使用GetParameterAtAngle()

public double GetParameterAtAngle(double angle);

 

參數求角

要獲得與指定參數值對應的角度,使用GetAngleAtParameter()方法:

public double GetAngleAtParameter(double value);

 

設置橢圓的參數

要設置橢圓的屬性,還可以使用set()方法:

public void Set(Point3d center, Vector3d unitNormal, Vector3d majorAxis, double radiusRatio, double startAngle, double endAngle);

 

具體示例:

Ellipse ellipse = new Ellipse();

ellipse.Set(new Point3d(0, 0, 0), new Vector3d(0, 0, 1), new Vector3d(10, 0, 0), 0.5, 0, 6.2830);

 

 

using (var trans = F1Show.database.TransactionManager.StartTransaction())

{

using (BlockTableRecord btr = (BlockTableRecord)F1Show.database.CurrentSpaceId.GetObject(OpenMode.ForWrite))

{

btr.AppendEntity(el1);

btr.AppendEntity(ellipse);

trans.AddNewlyCreatedDBObject(ellipse, true);

}

trans.Commit();

}

 

if (helperDevice != null)

{

helperDevice.Update();

}

Invalidate();

 

未完待續。。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 類和對象 ...
  • 內聯函數 C++ 內聯函數是通常與類一起使用。如果一個函數是內聯的,那麼在編譯時,編譯器會把該函數的代碼副本放置在每個調用該函數的地方。 對內聯函數進行任何修改,都需要重新編譯函數的所有客戶端,因為編譯器需要重新更換一次所有的代碼,否則將會繼續使用舊的函數。 如果想把一個函數定義為內聯函數,則需要在 ...
  • 一、什麼是泛型 泛型是C#2.0推出的新語法,不是語法糖,而是2.0由框架升級提供的功能。泛型類就類似於一個模板,可以在需要時為這個模板傳入任何我們需要的類型。 二、為什麼使用泛型 下麵代碼演示輸出幾種類型的相關信息: class Program { /// <summary> /// 列印幫助類 ...
  • 游戲開始界面 游戲開始 共有兩條蛇,吃到紅色食物加1分,吃到綠色毒食物減1分,知道0不減; 碰到牆壁游戲結束,碰到對方游戲結束,碰到自己游戲結束 此游戲通過Canvas畫布佈局,通過C 代碼實現 游戲主界面大小為1200 1000 全局聲明: 載入事件: 開啟游戲按鈕 暫停按鈕 創建食物方法: 游戲 ...
  • ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20191118171503872.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nL... ...
  • 本文主要講解通過WebBrowser控制項打開頁面,並自動輸入實現搜索功能,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 結構struct成員支持readonly,用來限制被其修飾的成員不會改變結構的內部狀態。加上7.2版本添加的readonly struct和ref readonly方法返回以及之前的欄位聲明修飾作用,現在readonly一共有四種修飾作用。下麵兩段代碼以及註釋進行了說明。 //(v8.0)reado ...
  • 時間如流水,只能流去不流回! 點贊再看,養成習慣,這是您給我創作的動力! 本文 Dotnet9 https://dotnet9.com 已收錄,站長樂於分享dotnet相關技術,比如Winform、WPF、ASP.NET Core等,亦有C++桌面相關的Qt Quick和Qt Widgets等,只分 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...