private static CurveLoop GetFaceBoundary(Face face, EdgeArray faceBoundary, XYZ baseLoopOffset, bool polygonalOnly, out FaceBoundaryType faceBoundaryType) { faceBoundaryType = FaceBoundaryType.Polygonal; CurveLoop currLoop = new CurveLoop(); foreach (Edge faceBoundaryEdge in faceBoundary) { Curve edgeCurve = faceBoundaryEdge.AsCurveFollowingFace(face); Curve offsetCurve = (baseLoopOffset != null) ? MoveCurve(edgeCurve, baseLoopOffset) : edgeCurve; if (!(offsetCurve is Line)) { if (polygonalOnly) { IList <XYZ> tessPts = offsetCurve.Tessellate(); int numTessPts = tessPts.Count; for (int ii = 0; ii < numTessPts - 1; ii++) { Line line = Line.get_Bound(tessPts[ii], tessPts[ii + 1]); currLoop.Append(line); } } else { currLoop.Append(offsetCurve); } if (offsetCurve is Arc) { faceBoundaryType = FaceBoundaryType.LinesAndArcs; } else { faceBoundaryType = FaceBoundaryType.Complex; } } else { currLoop.Append(offsetCurve); } } return(currLoop); }
private static CurveLoop GetOuterFaceBoundary(Face face, XYZ baseLoopOffset, bool polygonalOnly, out FaceBoundaryType faceBoundaryType) { faceBoundaryType = FaceBoundaryType.Polygonal; EdgeArrayArray faceBoundaries = face.EdgeLoops; foreach (EdgeArray faceOuterBoundary in faceBoundaries) return GetFaceBoundary(face, faceOuterBoundary, baseLoopOffset, polygonalOnly, out faceBoundaryType); return null; }
private static CurveLoop GetFaceBoundary(Face face, EdgeArray faceBoundary, XYZ baseLoopOffset, bool polygonalOnly, out FaceBoundaryType faceBoundaryType) { faceBoundaryType = FaceBoundaryType.Polygonal; CurveLoop currLoop = new CurveLoop(); foreach (Edge faceBoundaryEdge in faceBoundary) { Curve edgeCurve = faceBoundaryEdge.AsCurveFollowingFace(face); Curve offsetCurve = (baseLoopOffset != null) ? MoveCurve(edgeCurve, baseLoopOffset) : edgeCurve; if (!(offsetCurve is Line)) { if (polygonalOnly) { IList<XYZ> tessPts = offsetCurve.Tessellate(); int numTessPts = tessPts.Count; for (int ii = 0; ii < numTessPts - 1; ii++) { Line line = Line.get_Bound(tessPts[ii], tessPts[ii + 1]); currLoop.Append(line); } } else { currLoop.Append(offsetCurve); } if (offsetCurve is Arc) faceBoundaryType = FaceBoundaryType.LinesAndArcs; else faceBoundaryType = FaceBoundaryType.Complex; } else currLoop.Append(offsetCurve); } return currLoop; }
private static CurveLoop GetOuterFaceBoundary(Face face, XYZ baseLoopOffset, bool polygonalOnly, out FaceBoundaryType faceBoundaryType) { faceBoundaryType = FaceBoundaryType.Polygonal; EdgeArrayArray faceBoundaries = face.EdgeLoops; foreach (EdgeArray faceOuterBoundary in faceBoundaries) { return(GetFaceBoundary(face, faceOuterBoundary, baseLoopOffset, polygonalOnly, out faceBoundaryType)); } return(null); }