当前位置: 首页>>代码示例>>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;未经允许,请勿转载。