VDF常見(jiàn)問(wèn)題整理(五十二):如何在非XY平面中創(chuàng)建多邊形剖面線
VectorDraw Developer Framework(VDF)是一個(gè)用于應(yīng)用程序可視化的圖形引擎庫(kù)。有了VDF提供的功能,您可以輕松地創(chuàng)建、編輯、管理、輸出、輸入和打印2D和3D圖形文件。該庫(kù)還支持許多矢量和柵格輸入和輸出格式,包括本地PDF和SVG導(dǎo)出。
點(diǎn)擊下載VectorDraw Developer Framework
問(wèn):如何在非X / Y平面中創(chuàng)建多邊形剖面線?
答:創(chuàng)建剖面線時(shí),多曲線和剖面線應(yīng)在X / Y平面中,因此,如果在SAME中有折線,但在X / Y平面中沒(méi)有,則需要將它們“帶”到X / Y平面,然后創(chuàng)建多邊形線讓他們回到飛機(jī)上。參照以下代碼:
private void Test() { vdDocument doc = vdFramedControl.BaseControl.ActiveDocument; doc.New(); #region create 2 random polylines // 我們將使用兩個(gè)圓,以便從中獲得一些隨機(jī)的點(diǎn)來(lái)創(chuàng)建折線。 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; // 在同一個(gè)“隨機(jī)”平面上產(chǎn)生了兩個(gè)圓 //從中得到一些點(diǎn),從而“擁有”兩條折線 gPoints pts1 = cir1.geomMeasure(7); // 第1折線的點(diǎn) gPoints pts2 = cir2.geomMeasure(4); // 第2折線的點(diǎn) #endregion Matrix mat = new Matrix(); // 這是這些圓所屬的平面的矩陣 mat.SetToViewDirection(vec, 0.0d); Matrix invmat = new Matrix(mat.GetInvertion()); // 為多邊形創(chuàng)建曲線 vdPolyline pl = new vdPolyline(doc, pts1); // 矢量應(yīng)垂直于折線所在的平面,也可用CalculateNormal3P計(jì)算,如: Vector vec2 = new Vector(); Vector.CalculateNormal3P(pl.VertexList[0] as gPoint, pl.VertexList[1] as gPoint, pl.VertexList[2] as gPoint, out vec2); // 在這個(gè)例子中,我們已經(jīng)從圓中得到了它,正如我們?cè)谏厦嬖O(shè)置的那樣。 pl.ExtrusionVector = vec; pl.Flag = VdConstPlineFlag.PlFlagCLOSE; pl.Transformby(mat); // 我們需要把這些點(diǎn)放到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(); // 我們需要把這些點(diǎn)放到X/Y平面上 VectorDraw.Professional.vdCollections.vdCurves curves_Inside = new VectorDraw.Professional.vdCollections.vdCurves(); curves_Inside.AddItem(pl); //'創(chuàng)建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); //只是為了顯示的原因添加圓圈。沒(méi)有必要添加它們 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); }以上問(wèn)答,如果您有任何的疑惑都可以在評(píng)論區(qū)留言,我們會(huì)及時(shí)回復(fù)。此系列的問(wèn)答教程我們會(huì)持續(xù)更新,如果您感興趣,可以多多關(guān)注本教程。
熱門文章推薦:
=======================================================
如果您對(duì)想要購(gòu)買正版授權(quán)VectorDraw Developer Framework(VDF),可以聯(lián)系在線客服>>咨詢相關(guān)問(wèn)題。