private List <PlaneHelper> GetPlaneHelpers([NotNull] IFeature feature) { const bool includeAssociatedParts = true; SegmentsPlaneProvider planeProvider = SegmentsPlaneProvider.Create(feature, includeAssociatedParts); var indexedMultiPatch = (IIndexedMultiPatch)planeProvider.IndexedSegments; var result = new List <PlaneHelper>(); SegmentsPlane segmentsPlane; while ((segmentsPlane = planeProvider.ReadPlane()) != null) { result.Add(PlaneHelper.Create(segmentsPlane, indexedMultiPatch, this)); } return(result); }
private static IEnumerable <Either <NonPlanarError, SegmentsPlane> > GetPlanarRings( [NotNull] IFeature planarFeature, double coplanarityTolerance) { SegmentsPlaneProvider provider = SegmentsPlaneProvider.Create(planarFeature, false); SegmentsPlane segPlane; while ((segPlane = provider.ReadPlane()) != null) { // check for co-planarity double maximumOffset; yield return(IsCoplanar(segPlane, planarFeature, coplanarityTolerance, out maximumOffset) ? new Either <NonPlanarError, SegmentsPlane>(segPlane) : new NonPlanarError("Coplanarity tolerance is exceeded", maximumOffset, segPlane)); } }
private SegmentsPlaneProvider GetPlaneProvider([NotNull] IFeature feature) { return(SegmentsPlaneProvider.Create(feature, _shapeType, _includeAssociatedParts)); }