當前位置: 首頁>>代碼示例>>C#>>正文


C# Line.GetOrthoProjectedCurve方法代碼示例

本文整理匯總了C#中System.Line.GetOrthoProjectedCurve方法的典型用法代碼示例。如果您正苦於以下問題:C# Line.GetOrthoProjectedCurve方法的具體用法?C# Line.GetOrthoProjectedCurve怎麽用?C# Line.GetOrthoProjectedCurve使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在System.Line的用法示例。


在下文中一共展示了Line.GetOrthoProjectedCurve方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。

示例1: IsAssocaitedWithAnotherFace

        /// <summary>
        /// 判斷當前麵是否與某個麵相關聯
        /// </summary>
        /// <param name="face">判斷是否關聯的麵</param>
        /// <param name="associateDist">容忍值,就是容差</param>
        /// <param name="peakValue">距離值,屬於特定的距離判定</param>
        /// <returns></returns>
        internal bool IsAssocaitedWithAnotherFace(PartFace anotherFace, double associateDist, double peakValue)
        {
            /*
            * 判斷原則
            * 1、兩個麵平行且距離小於某個固定值
            * 2、指令麵的所有頂點,投影到被關聯麵,至少有一個點位於關聯麵的內部
            * 3、如果是開槽關聯,則上述兩條不適用
            */

            //如果他們是同一個板件的不同麵,永遠都是不關聯的
            if (this.Part == anotherFace.Part)
                return false;

            //如果兩個麵不平行,那也是不關聯的
            //TODO:這裏用到了Plane屬於CAD的實體,是否會造成內存泄漏?
            if (!anotherFace.Plane.IsParallelTo(this.Plane))
            {
                return false;
            }

            //如果麵試四個水平邊,也不進行判斷,(考慮到開槽、層板孔指令的適用範圍)
            if (anotherFace.IsHorizontalFace)
                return false;

            ////不再做距離關聯,距離的判斷放到點的判斷中
            ////如果兩個麵的距離大於一定距離也就不關聯
            //if (anotherFace.Plane.DistanceTo(this.Point1) > dist)
            //{
            //    return false;
            //}

            //需要判斷兩件事情:
            //1、距離的判斷,如嵌入的深度等等
            //2、板件是否嵌入,嵌入一個點還是兩個點等等
            if (!IsDistEnough(anotherFace, this.Point1, peakValue, associateDist))
                return false;

            //用using,使用完就銷毀掉這些對象
            using (Line line1 = new Line(this.Point1, this.Point4))
            using (Line line2 = new Line(this.Point2, this.Point3))
            using (Line fLine1 = new Line(anotherFace.Point1, anotherFace.Point2))
            using (Line fLine2 = new Line(anotherFace.Point2, anotherFace.Point3))
            using (Line fLine3 = new Line(anotherFace.Point3, anotherFace.Point4))
            using (Line fLine4 = new Line(anotherFace.Point4, anotherFace.Point1))
            {
                using (Line line1Project = line1.GetOrthoProjectedCurve(anotherFace.Plane) as Line)
                using (Line line2Project = line2.GetOrthoProjectedCurve(anotherFace.Plane) as Line)
                {
                    Line[] lines = new Line[] { fLine1, fLine2, fLine3, fLine4 };

                    foreach (Line l in lines)
                    {
                        Point3dCollection pts1 = new Point3dCollection();
                        Point3dCollection pts2 = new Point3dCollection();

                        l.IntersectWith(line1Project, Intersect.OnBothOperands, pts1, IntPtr.Zero, IntPtr.Zero);

                        if (pts1.Count > 0)
                            return true;

                        l.IntersectWith(line2Project, Intersect.OnBothOperands, pts2, IntPtr.Zero, IntPtr.Zero);
                        if (pts2.Count > 0)
                            return true;
                    }
                }
            }

            return false;
        }
開發者ID:komelio,項目名稱:Dimeng.LinkToMicrocad,代碼行數:76,代碼來源:PartFace.cs


注:本文中的System.Line.GetOrthoProjectedCurve方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。