• <menu id="w2i4a"></menu>
  • logo VectorDraw Developer Framework使用教程

    文檔首頁(yè)>>VectorDraw Developer Framework使用教程>>VDF常見(jiàn)問(wèn)題整理(五十二):如何在非XY平面中創(chuàng)建多邊形剖面線

    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)題。

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();