翻譯|使用教程|編輯:李顯亮|2020-08-19 15:53:35.170|閱讀 224 次
概述:本系列教程整理了VectorDraw Developer Framework(VDF)最常見問題,教程整理的很齊全,非常適合新手學習。本文將會介紹如何在非XY平面中創建多邊形剖面線。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
VectorDraw Developer Framework(VDF)是一個用于應用程序可視化的圖形引擎庫。有了VDF提供的功能,您可以輕松地創建、編輯、管理、輸出、輸入和打印2D和3D圖形文件。該庫還支持許多矢量和柵格輸入和輸出格式,包括本地PDF和SVG導出。
點擊下載VectorDraw Developer Framework
問:如何在非X / Y平面中創建多邊形剖面線?
答:創建剖面線時,多曲線和剖面線應在X / Y平面中,因此,如果在SAME中有折線,但在X / Y平面中沒有,則需要將它們“帶”到X / Y平面,然后創建多邊形線讓他們回到飛機上。參照以下代碼:
private void Test()
{
vdDocument doc = vdFramedControl.BaseControl.ActiveDocument;
doc.New();
#region create 2 random polylines
// 我們將使用兩個圓,以便從中獲得一些隨機的點來創建折線。
vdCircle cir1 = new vdCircle(doc, new gPoint(3, 2), 5);
vdCircle cir2 = new vdCircle(doc, new gPoint(3, 2), 2);
Vector vec = new Vector(0.3, 0.7, -0.2); vec.Normalize();
cir1.ExtrusionVector = vec;
cir2.ExtrusionVector = vec;
// 在同一個“隨機”平面上產生了兩個圓
//從中得到一些點,從而“擁有”兩條折線
gPoints pts1 = cir1.geomMeasure(7); // 第1折線的點
gPoints pts2 = cir2.geomMeasure(4); // 第2折線的點
#endregion
Matrix mat = new Matrix(); // 這是這些圓所屬的平面的矩陣
mat.SetToViewDirection(vec, 0.0d);
Matrix invmat = new Matrix(mat.GetInvertion());
// 為多邊形創建曲線
vdPolyline pl = new vdPolyline(doc, pts1);
// 矢量應垂直于折線所在的平面,也可用CalculateNormal3P計算,如:
Vector vec2 = new Vector();
Vector.CalculateNormal3P(pl.VertexList[0] as gPoint, pl.VertexList[1] as gPoint, pl.VertexList[2] as gPoint, out vec2);
// 在這個例子中,我們已經從圓中得到了它,正如我們在上面設置的那樣。
pl.ExtrusionVector = vec;
pl.Flag = VdConstPlineFlag.PlFlagCLOSE;
pl.Transformby(mat); // 我們需要把這些點放到X/Y平面上
pl.Update();
VectorDraw.Professional.vdCollections.vdCurves curves_Outer = new VectorDraw.Professional.vdCollections.vdCurves();
curves_Outer.AddItem(pl);
pl = new vdPolyline(doc, pts2);
pl.ExtrusionVector = vec;
pl.Flag = VdConstPlineFlag.PlFlagCLOSE;
pl.Transformby(mat); pl.Update(); // 我們需要把這些點放到X/Y平面上
VectorDraw.Professional.vdCollections.vdCurves curves_Inside = new VectorDraw.Professional.vdCollections.vdCurves();
curves_Inside.AddItem(pl);
//'創建polyhatch
vdPolyhatch onehatch = new vdPolyhatch(doc);
onehatch.PolyCurves.AddItem(curves_Outer);
onehatch.PolyCurves.AddItem(curves_Inside);
onehatch.HatchProperties = new VectorDraw.Professional.vdObjects.vdHatchProperties(VectorDraw.Professional.Constants.VdConstFill.VdFillModeSolid);
onehatch.Transformby(invmat); // 把它帶到圓所在的平面上。
doc.Model.Entities.AddItem(onehatch);
//只是為了顯示的原因添加圓圈。沒有必要添加它們
cir1.PenColor.FromSystemColor(Color.Red);
cir2.PenColor.FromSystemColor(Color.Red);
doc.Model.Entities.AddItem(cir1);
doc.Model.Entities.AddItem(cir2);
doc.CommandAction.Zoom("E", 0, 0);
}
以上問答,如果您有任何的疑惑都可以在評論區留言,我們會及時回復。此系列的問答教程我們會持續更新,如果您感興趣,可以多多關注本教程。
熱門文章推薦:
=======================================================
如果您對想要購買正版授權VectorDraw Developer Framework(VDF),可以聯系咨詢相關問題。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn