/// <summary> /// 如果外环是个圆,获取和外环同圆心的内环圆 /// </summary> /// <param name="face"></param> /// <returns></returns> public static bool TryGetInnerLoop(this IFace2 face, out ILoop2 innerLoop) { var outloop = face.GetOuterLoop(); innerLoop = outloop; if (outloop.TryGetOneCircleEdge(out IEdge edge)) { var circlePoint = edge.GetCirlceParams().Item1; innerLoop = face.GetLoopsWithoutOuterLoop().Where(l => l.TryGetOneCircleEdge(out IEdge Inneredge) ? (IsSameVector3(Inneredge.GetCirlceParams().Item1, circlePoint) ? true : false): false ).FirstOrDefault(); return(innerLoop != null ? true : false); } return(false); }
/// <summary> /// 如果此环只包含一个Edge,并且这个Edge是个圆弧,返回True,负责返回false /// </summary> /// <param name="loop">ILoop2 Interface</param> /// <param name="edge"></param> /// <returns></returns> public static bool TryGetOneCircleEdge(this ILoop2 loop, out IEdge edge) { var edges = loop.GetEdgesEx(); edge = edges.FirstOrDefault(); if (edges.Count() == 1 && edges.First().IsCirlce()) { return(true); } else { return(false); } }
public ILoop2Object(ILoop2 ILoop2instance) { ILoop2Instance = ILoop2instance; }
/// <summary> /// 获取环中所有的直线边 /// </summary> /// <param name="loop"></param> /// <returns></returns> public static IEnumerable <IEdge> GetLineEdge(this ILoop2 loop) { return(loop.GetEdgesEx().Where(edge => edge.IsLine())); }
/// <summary> /// 获取所有的边 /// </summary> /// <param name="loop">ILoop2 Interface</param> /// <returns></returns> public static IEnumerable <IEdge> GetEdgesEx(this ILoop2 loop) { return((loop.GetEdges() as object[]).Cast <IEdge>()); }