Пример #1
0
        public static AbstractCircleFace Create(Face face)
        {
            FaceData           data = FaceUtils.AskFaceData(face);
            AbstractCircleFace abs  = null;

            switch (face.SolidFaceType)
            {
            case Face.FaceType.Cylindrical:
                abs = new CylinderFace(data);
                break;

            case Face.FaceType.Conical:
                abs = new CircularConeFace(data);
                break;

            case Face.FaceType.Planar:
                List <ArcEdgeData> edge = new List <ArcEdgeData>();
                if (CircleAnnylusFace.IsCircleAnnylus(face, out edge))
                {
                    abs = new CircleAnnylusFace(data, edge);
                }
                break;

            default:
                break;
            }
            return(abs);
        }
Пример #2
0
 public CylinderFeater(List <AbstractCircleFace> circle, CylinderFace cyl)
 {
     this.Cylinder     = cyl;
     this.CylinderFace = circle;
     SetDirection(cyl.Direction);
 }
Пример #3
0
        /// <summary>
        /// 获取圆柱特征
        /// </summary>
        /// <param name="circle"></param>
        /// <param name="cyl"></param>
        /// <returns></returns>
        public static CylinderFeater GetCylinderFeater(List <AbstractCircleFace> circle, CylinderFace cyl)
        {
            List <AbstractCircleFace> cylinder = new List <AbstractCircleFace>();

            cylinder.Add(cyl);
            int index = circle.IndexOf(cyl);

            if (index != -1)
            {
                for (int i = index - 1; i >= 0; i--)
                {
                    if (!(circle[i] is CylinderFace))
                    {
                        cylinder.Add(circle[i]);
                    }
                    if ((circle[i] is CylinderFace) && (UMathUtils.IsEqual((circle[i] as CylinderFace).Radius, cyl.Radius)))
                    {
                        cylinder.Add(circle[i]);
                    }
                    if (circle[i] is CircleAnnylusFace)
                    {
                        break;
                    }
                }
                for (int i = index + 1; i < circle.Count; i++)
                {
                    if (!(circle[i] is CylinderFace))
                    {
                        cylinder.Add(circle[i]);
                    }
                    if ((circle[i] is CylinderFace) && (UMathUtils.IsEqual((circle[i] as CylinderFace).Radius, cyl.Radius)))
                    {
                        cylinder.Add(circle[i]);
                    }
                    if (circle[i] is CircleAnnylusFace)
                    {
                        break;
                    }
                }
            }
            return(new CylinderFeater(cylinder, cyl));
        }