public override void OnMouseDown(int Button, int Shift, int X, int Y) { // TODO: Add ToolCreateParallel.OnMouseDown implementation if (Button == 1 && (m_pMapCtl = ClsGlobal.GetMapControl(m_hookHelper)) != null) { IMap pMap = m_pMapCtl.Map; IPoint po = m_pMapCtl.ToMapPoint(X, Y); ISelectionEnvironment pSelectionEnv = new SelectionEnvironmentClass(); IGeometry geometry = new PolygonClass(); geometry = m_pMapCtl.TrackRectangle(); pMap.SelectByShape(geometry, pSelectionEnv, true); m_pMapCtl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); IEnumFeatureSetup pSelectionsetup = pMap.FeatureSelection as IEnumFeatureSetup; pSelectionsetup.AllFields = true;//这里是关键 IEnumFeature pFeatureCollection = pSelectionsetup as IEnumFeature; IFeature pF = pFeatureCollection.Next(); if (pF != null && pF.Shape is IPolyline) { FrmParallelLineOffset frm = new FrmParallelLineOffset(); if (frm.ShowDialog() == DialogResult.OK) { IPolyline pPolyline = ConstructOffset(pF.Shape as IPolyline, frm.offset); IFeature pFeature = m_FLayer.FeatureClass.CreateFeature(); pFeature.Shape = pPolyline; pFeature.Store(); m_pMapCtl.Refresh(); } } } }
/// <summary> /// Occurs when this command is clicked /// </summary> public override void OnClick() { // TODO: Add CmdCreateParrallel.OnClick implementation IEngineEditor pEngineEdit = new EngineEditorClass(); IEngineEditLayers pEEditLayers = pEngineEdit as IEngineEditLayers; IFeatureLayer targetLayer = pEEditLayers.TargetLayer; IFeatureSelection featureSelection = targetLayer as IFeatureSelection; ISelectionSet selectionSet = featureSelection.SelectionSet; if (selectionSet.Count > 0) { ICursor cursor; selectionSet.Search(null, true, out cursor); IFeatureCursor featureCursor = cursor as IFeatureCursor; IFeature feature = null; FrmParallelLineOffset frm = new FrmParallelLineOffset(); if (frm.ShowDialog() == DialogResult.OK) { while ((feature = featureCursor.NextFeature()) != null) { IPolyline pPolyline = ConstructOffset(feature.Shape as IPolyline, frm.offset); IFeature pFeature = targetLayer.FeatureClass.CreateFeature(); pFeature.Shape = pPolyline; pFeature.Store(); m_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); } } } }