public override void OnMouseDown(int Button, int Shift, int X, int Y) { IMxDocument mxdoc = m_application.Document as IMxDocument; IActiveView activeView = mxdoc.ActiveView; IPoint pPoint = activeView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y); IFeatureLayer pFlayer = null; IMap map = mxdoc.FocusMap; for (int i = 0; i < map.LayerCount - 2; i++) { ILayer layer = map.get_Layer(i); if (/*/layer is IFeatureLayer &&/*/ layer.Name == "Double_Endcap") { pFlayer = layer as IFeatureLayer; break; } } /////////////////////////////////////////////////////////////////////////////////////////////////////// IFeatureLayer flayer = null; for (int i = 0; i < map.LayerCount - 2; i++) { ILayer layer = map.get_Layer(i); if (/*layer is IFeatureLayer &&*/ layer.Name == "PePipe") { flayer = layer as IFeatureLayer; break; } } ITopologicalOperator topologicalOperator = pPoint as ITopologicalOperator; IGeometry geometry = topologicalOperator.Buffer(1);//(0.5); ISpatialFilter spatialFilter = new SpatialFilterClass(); spatialFilter.Geometry = geometry; spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects; //IFeatureSelection featureSelection = flayer as IFeatureSelection;// //featureSelection.SelectFeatures(spatialFilter, esriSelectionResultEnum.esriSelectionResultNew, true);// IFeatureClass featureClass = flayer.FeatureClass; IFeatureCursor featurecursor = featureClass.Search(spatialFilter, false); IFeature feature = featurecursor.NextFeature(); /////////////////////////////////////////////////////// int iOID = feature.OID; ////Split the feature. Use the IFeatureEdit::Split method which ensures ////the attributes are correctly dealt with. IFeatureEdit2 featureEdit = feature as IFeatureEdit2; featureEdit.SplitWithUpdate(pPoint); ////Set to hold the new features that are created by the Split. ISet newFeaturesSet = new SetClass(); ISet newFeaturesSetTemp = featureEdit.SplitWithUpdate(pPoint); if (newFeaturesSetTemp != null) { newFeaturesSetTemp.Reset(); for (int featureCount = 0; featureCount < newFeaturesSetTemp.Count; featureCount++) { IFeature newFeature = newFeaturesSetTemp.Next() as IFeature; if (newFeature.OID == iOID) { newFeaturesSet.Add(newFeature); } } } newFeaturesSet.Add(feature); //////////////////////////////////////////////////// if (feature == null) { MessageBox.Show("Select Pipe"); } else { //IFeatureClass pFeaturecalass = pFlayer.FeatureClass as IFeatureClass; IDataset pDataset = featureClass as IDataset; IGeoDataset pGeoDataset = featureClassas IGeoDataset; ISpatialReference sr = pGeoDataset.SpatialReference; sr.SetDomain(-1000000, 40000000, -1000000, 40000000); IWorkspace pWorkspace = pDataset.Workspace as IWorkspace; IWorkspaceEdit pWorkspaceEdit = pWorkspace as IWorkspaceEdit; pWorkspaceEdit.StartEditing(true); IFeature pNewFeature = featureClass.CreateFeature() as IFeature; pNewFeature.Shape = pPoint; pNewFeature.Shape.SpatialReference = sr; pNewFeature.Store(); pWorkspaceEdit.StopEditOperation(); pWorkspaceEdit.StopEditing(true); activeView.Refresh(); } }
أكثر...
أكثر...