Look in to the "NearestFeature" method on IIndexQuery2. You can use this to get the nearest water main feature to each building. I guess you would then somehow need to loop thru the vertices on each building to find which one is the closest distance to this feature, then build a new polyline using the vertices from the building and watermain as endpoints. The only time I have done this was using two point featureclasses, wish I could offer more than that off the top of my head.. :D IFeatureCursor pDepthCursor = pDepthSoundings.Search(null, false); IFeatureIndex2 pFtrInd = new FeatureIndexClass(); pFtrInd.FeatureClass = pDepthSoundings.FeatureClass; pFtrInd.FeatureCursor = pDepthCursor; pFtrInd.Index(null, pCombinedEnvelope); IIndexQuery2 pIndQry = pFtrInd as IIndexQuery2; int FtdID = 0; double dDist2Ftr = 0; pIndQry.NearestFeature(ppoint, out FtdID, out dDist2Ftr); IFeature pCloseFeature = pDepthSoundings.FeatureClass.GetFeature(FtdID);