public void SplitPolylineFeature(IFeature pPolylineFeature, IPointCollection pSplitPointCollection, IFeatureClass pFeatureClass) { //split the feature, each split makes a new part IEnumVertex pEnumVertex = pSplitPointCollection.EnumVertices; IPolycurve2 pPolyCurve = pPolylineFeature.Shape as IPolycurve2; IEnumSplitPoint pEnumSplitPoint = pPolyCurve.SplitAtPoints(pEnumVertex, true, true, -1); object Missing = Type.Missing; if(pEnumSplitPoint.SplitHappened) { //new geocoll for polycurve IGeometryCollection pGeometryCollection = pPolyCurve as IGeometryCollection; //loop through the parts of the split polyline for(int intPartCount = 0; intPartCount < pGeometryCollection.GeometryCount; intPartCount++) { IGeometryCollection pLineGeoColl = new PolylineClass(); IGeometry pGeometry = pGeometryCollection.get_Geometry(intPartCount); //IZAware zAware1 = (IZAware)pGeometry; //zAware1.ZAware = true; pLineGeoColl.AddGeometry(pGeometry, ref Missing, ref Missing); IFeature pFeature = pFeatureClass.CreateFeature(); try { pFeature.Shape = pLineGeoColl as IGeometry; //code crashes here: Geometry has no Z values pFeature.Store(); } catch (Exception ex) { MessageBox.Show("Error in WillisPolylines.SplitPolylineFeature: " + ex.Message); } } } pPolylineFeature.Delete(); }
Solved! Go to Solution.
IGeometryCollection pLineGeoColl = new PolylineClass(); IZAware zAware1 = (IZAware)pLineGeoColl; zAware1.ZAware = true; IGeometry pGeometry = pGeometryCollection.get_Geometry(intPartCount); pLineGeoColl.AddGeometry(pGeometry, ref Missing, ref Missing);
IGeometryCollection pLineGeoColl = new PolylineClass(); IZAware zAware1 = (IZAware)pLineGeoColl; zAware1.ZAware = true; IGeometry pGeometry = pGeometryCollection.get_Geometry(intPartCount); pLineGeoColl.AddGeometry(pGeometry, ref Missing, ref Missing);