public static void CreateDimensionFeature(IDimensionShape pDimensionShape, esriDimensionType pDimensionType, IActiveView pActiveView, IFeatureLayer pFeatureLayer) { if (pDimensionShape != null) { IWorkspaceEdit workspace = (IWorkspaceEdit)((IDataset)pFeatureLayer.FeatureClass).Workspace; workspace.StartEditOperation(); IFeature esriDimensionType0 = pFeatureLayer.FeatureClass.CreateFeature(); IRowSubtypes rowSubtype = (IRowSubtypes)esriDimensionType0; try { rowSubtype.InitDefaultValues(); } catch (Exception exception) { //Logger.Current.Error("",exception, ""); Logger.Current.Warn(exception.Message); } (esriDimensionType0 as IDimensionFeature).DimensionType = pDimensionType; (esriDimensionType0 as IDimensionFeature).DimensionShape = pDimensionShape; EditorEvent.NewRow(esriDimensionType0); esriDimensionType0.Store(); workspace.StopEditOperation(); EditorEvent.AfterNewRow(esriDimensionType0); pActiveView.FocusMap.ClearSelection(); pActiveView.FocusMap.SelectFeature(pFeatureLayer, esriDimensionType0); pActiveView.Refresh(); } }
public static string SketchMouseDown(IPoint ipoint_0, IActiveView iactiveView_0, IFeatureLayer ifeatureLayer_0) { INewPolylineFeedback feedback; string str; INewPolygonFeedbackEx newPolygonFeedbackEx; object value; INewPolylineFeedback newPolylineFeedback; double num; string[] strArrays; double num1; double length; if (SketchToolAssist.IsDrawTempLine == DrawTempGeometry.Line) { if (SketchToolAssist.Feedback != null) { feedback = (INewPolylineFeedback)SketchToolAssist.Feedback; feedback.AddPoint(SketchShareEx.m_pAnchorPoint); object obj = Missing.Value; object value1 = Missing.Value; SketchToolAssist.m_pPointColn.AddPoint(SketchShareEx.m_pAnchorPoint, ref obj, ref value1); } else { SketchShareEx.m_bInUse = true; SketchToolAssist.Feedback = new NewPolylineFeedback(); feedback = (INewPolylineFeedback)SketchToolAssist.Feedback; SketchToolAssist.Feedback.Display = iactiveView_0.ScreenDisplay; feedback.ChangeLineType((enumLineType)SketchToolAssist.LineType); feedback.Start(SketchShareEx.m_pAnchorPoint); SketchToolAssist.m_pPointColn = new Polyline(); object obj1 = Missing.Value; object value2 = Missing.Value; SketchToolAssist.m_pPointColn.AddPoint(SketchShareEx.m_pAnchorPoint, ref obj1, ref value2); } str = ""; } else if (SketchToolAssist.IsDrawTempLine == DrawTempGeometry.Fill) { if (SketchToolAssist.Feedback != null) { newPolygonFeedbackEx = (INewPolygonFeedbackEx)SketchToolAssist.Feedback; newPolygonFeedbackEx.AddPoint(SketchShareEx.m_pAnchorPoint); object obj2 = Missing.Value; object value3 = Missing.Value; SketchToolAssist.m_pPointColn.AddPoint(SketchShareEx.m_pAnchorPoint, ref obj2, ref value3); } else { SketchShareEx.m_bInUse = true; SketchToolAssist.Feedback = new NewPolygonFeedbackEx(); newPolygonFeedbackEx = (INewPolygonFeedbackEx)SketchToolAssist.Feedback; SketchToolAssist.Feedback.Display = iactiveView_0.ScreenDisplay; newPolygonFeedbackEx.ChangeLineType((enumLineType)SketchToolAssist.LineType); newPolygonFeedbackEx.Start(SketchShareEx.m_pAnchorPoint); SketchToolAssist.m_pPointColn = new Polygon(); object obj3 = Missing.Value; object value4 = Missing.Value; SketchToolAssist.m_pPointColn.AddPoint(SketchShareEx.m_pAnchorPoint, ref obj3, ref value4); } str = ""; } else if (SketchToolAssist.IsDrawTempLine == DrawTempGeometry.Point) { SketchToolAssist.TempLine = SketchShareEx.m_pAnchorPoint; str = ""; } else if (ifeatureLayer_0 == null) { str = ""; } else if (ifeatureLayer_0.FeatureClass != null) { string str1 = ""; string unit = ""; SketchShareEx.IsFixDirection = false; SketchShareEx.IsFixLength = false; if (SketchToolAssist.Feedback == null) { if (ifeatureLayer_0.FeatureClass.FeatureType == esriFeatureType.esriFTAnnotation) { try { Editor.EditWorkspace.StartEditOperation(); IFeature feature = ifeatureLayer_0.FeatureClass.CreateFeature(); int num2 = 0; object fieldValue = Editor.CurrentEditTemplate.GetFieldValue("SymbolID"); if (fieldValue != null) { num2 = Convert.ToInt32(fieldValue); } ITextElement textElement = CreateFeatureTool.MakeTextElement("文本", 0, ipoint_0, num2); IAnnotationFeature2 annotationFeature2 = feature as IAnnotationFeature2; annotationFeature2.LinkedFeatureID = -1; annotationFeature2.AnnotationClassID = 0; annotationFeature2.Annotation = textElement as IElement; EditorEvent.NewRow(feature); feature.Store(); Editor.EditWorkspace.StopEditOperation(); EditorEvent.AfterNewRow(feature); iactiveView_0.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); iactiveView_0.FocusMap.ClearSelection(); iactiveView_0.FocusMap.SelectFeature(ifeatureLayer_0, feature); iactiveView_0.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); } catch (Exception exception) { Logger.Current.Error("", exception, ""); } } else if (ifeatureLayer_0.FeatureClass.FeatureType != esriFeatureType.esriFTDimension) { value = Missing.Value; switch (ifeatureLayer_0.FeatureClass.ShapeType) { case esriGeometryType.esriGeometryPoint: { CreateFeatureTool.CreateFeature(ipoint_0, iactiveView_0, ifeatureLayer_0); break; } case esriGeometryType.esriGeometryMultipoint: { SketchShareEx.m_bInUse = true; SketchToolAssist.Feedback = new NewMultiPointFeedback(); INewMultiPointFeedback newMultiPointFeedback = (INewMultiPointFeedback)SketchToolAssist.Feedback; SketchToolAssist.Feedback.Display = iactiveView_0.ScreenDisplay; SketchShareEx.m_pPointCollection = new Multipoint(); newMultiPointFeedback.Start(SketchShareEx.m_pPointCollection, ipoint_0); break; } case esriGeometryType.esriGeometryPolyline: { SketchShareEx.m_bInUse = true; SketchToolAssist.Feedback = new NewPolylineFeedback(); newPolylineFeedback = (INewPolylineFeedback)SketchToolAssist.Feedback; SketchToolAssist.Feedback.Display = iactiveView_0.ScreenDisplay; newPolylineFeedback.Start(ipoint_0); SketchShareEx.PointCount = 1; SketchShareEx.StartPoint = ipoint_0; SketchToolAssist.m_pPointColn = new Polyline(); SketchToolAssist.m_pPointColn.AddPoint(ipoint_0, ref value, ref value); unit = CommonHelper.GetUnit(iactiveView_0.FocusMap.MapUnits); num = CommonHelper.measureLength(ipoint_0, 1, ref SketchShareEx.m_pLastPoint1, ref SketchShareEx.m_pEndPoint1, ref SketchShareEx.m_totalLength); strArrays = new string[] { "距离 = ", num.ToString("0.###"), unit, ", 总长度 = ", SketchShareEx.m_totalLength.ToString("0.###"), unit }; str1 = string.Concat(strArrays); break; } case esriGeometryType.esriGeometryPolygon: { SketchShareEx.m_bInUse = true; SketchToolAssist.Feedback = new NewPolygonFeedbackEx(); INewPolygonFeedbackEx feedback1 = (INewPolygonFeedbackEx)SketchToolAssist.Feedback; SketchToolAssist.Feedback.Display = iactiveView_0.ScreenDisplay; feedback1.Start(ipoint_0); SketchShareEx.PointCount = 0; SketchToolAssist.m_pPointColn = new Polygon(); SketchShareEx.StartPoint = ipoint_0; unit = CommonHelper.GetUnit(iactiveView_0.FocusMap.MapUnits); num1 = CommonHelper.measureArea(ipoint_0, 1, ref SketchToolAssist.m_pPointColn); length = (SketchToolAssist.m_pPointColn as IPolygon).Length; if (num1 <= 0) { break; } str1 = string.Format("周长 = {0:0.###} {1} ,总面积 = {2:0.###} 平方{1}", length, unit, num1); break; } } } else { SketchToolAssist.Feedback = new NewDimensionFeedback(); try { (SketchToolAssist.Feedback as INewDimensionFeedback).ReferenceScale = (iactiveView_0 as IMap).ReferenceScale; (SketchToolAssist.Feedback as INewDimensionFeedback).ReferenceScaleUnits = (iactiveView_0 as IMap).MapUnits; } catch { } SketchToolAssist.Feedback.Display = iactiveView_0.ScreenDisplay; (SketchToolAssist.Feedback as INewDimensionFeedback).Start(ipoint_0); SketchShareEx.PointCount = 1; } } else if (SketchToolAssist.Feedback is INewDimensionFeedback) { SketchShareEx.PointCount = SketchShareEx.PointCount + 1; (SketchToolAssist.Feedback as INewDimensionFeedback).AddPoint(ipoint_0); if (SketchShareEx.PointCount == 3) { IDimensionShape dimensionShape = (SketchToolAssist.Feedback as INewDimensionFeedback).Stop(); CreateFeatureTool.CreateDimensionFeature(dimensionShape, (SketchToolAssist.Feedback as INewDimensionFeedback).DimensionType, iactiveView_0, ifeatureLayer_0); } } else if (SketchToolAssist.Feedback is INewMultiPointFeedback) { value = Missing.Value; SketchShareEx.m_pPointCollection.AddPoint(ipoint_0, ref value, ref value); (SketchToolAssist.Feedback as INewMultiPointFeedback).Start(SketchShareEx.m_pPointCollection, ipoint_0); } else if (SketchToolAssist.Feedback is INewLineFeedback) { newPolylineFeedback = (INewPolylineFeedback)SketchToolAssist.Feedback; value = Missing.Value; newPolylineFeedback.AddPoint(ipoint_0); SketchToolAssist.m_pPointColn.AddPoint(ipoint_0, ref value, ref value); SketchShareEx.PointCount = SketchShareEx.PointCount + 1; unit = CommonHelper.GetUnit(iactiveView_0.FocusMap.MapUnits); num = CommonHelper.measureLength(ipoint_0, 1, ref SketchShareEx.m_pLastPoint1, ref SketchShareEx.m_pEndPoint1, ref SketchShareEx.m_totalLength); strArrays = new string[] { "距离 = ", num.ToString("0.###"), unit, ", 总长度 = ", SketchShareEx.m_totalLength.ToString("0.###"), unit }; str1 = string.Concat(strArrays); } else if (SketchToolAssist.Feedback is INewPolygonFeedback) { ((INewPolygonFeedbackEx)SketchToolAssist.Feedback).AddPoint(ipoint_0); SketchShareEx.PointCount = SketchShareEx.PointCount + 1; unit = CommonHelper.GetUnit(iactiveView_0.FocusMap.MapUnits); num1 = CommonHelper.measureArea(ipoint_0, 1, ref SketchToolAssist.m_pPointColn); length = (SketchToolAssist.m_pPointColn as IPolygon).Length; if (num1 > 0) { str1 = string.Format("周长 = {0:0.###} {1} ,总面积 = {2:0.###} 平方{1}", length, unit, num1); } } if (SketchShareEx.LastPoint == null) { SketchShareEx.LastPoint = new ESRI.ArcGIS.Geometry.Point(); } SketchShareEx.LastPoint.PutCoords(ipoint_0.X, ipoint_0.Y); str = str1; } else { str = ""; } return(str); }
public static string SketchMouseDown(IActiveView pActiveView, IFeatureLayer pFeatureLayer) { INewPolylineFeedback feedback; string str; INewPolygonFeedbackEx newPolygonFeedbackEx; object value; INewPolylineFeedback newPolylineFeedback; INewPolygonFeedbackEx feedback1; double num; double length; if (SketchToolAssist.IsDrawTempLine == DrawTempGeometry.Line) { if (SketchToolAssist.Feedback != null) { feedback = (INewPolylineFeedback)SketchToolAssist.Feedback; feedback.AddPoint(SketchToolAssist.m_pAnchorPoint); object obj = Missing.Value; object value1 = Missing.Value; SketchToolAssist.m_pPointColn.AddPoint(SketchToolAssist.m_pAnchorPoint, ref obj, ref value1); } else { SketchToolAssist.m_bInUse = true; SketchToolAssist.Feedback = new NewPolylineFeedback() as IDisplayFeedback2; feedback = (INewPolylineFeedback)SketchToolAssist.Feedback; SketchToolAssist.Feedback.Display = pActiveView.ScreenDisplay; feedback.ChangeLineType(SketchToolAssist.LineType); feedback.Start(SketchToolAssist.m_pAnchorPoint); SketchToolAssist.m_pPointColn = new Polyline(); object obj1 = Missing.Value; object value2 = Missing.Value; SketchToolAssist.m_pPointColn.AddPoint(SketchToolAssist.m_pAnchorPoint, ref obj1, ref value2); } str = ""; } else if (SketchToolAssist.IsDrawTempLine == DrawTempGeometry.Fill) { if (SketchToolAssist.Feedback != null) { newPolygonFeedbackEx = (INewPolygonFeedbackEx)SketchToolAssist.Feedback; newPolygonFeedbackEx.AddPoint(SketchToolAssist.m_pAnchorPoint); object obj2 = Missing.Value; object value3 = Missing.Value; SketchToolAssist.m_pPointColn.AddPoint(SketchToolAssist.m_pAnchorPoint, ref obj2, ref value3); } else { SketchToolAssist.m_bInUse = true; SketchToolAssist.Feedback = new NewPolygonFeedbackEx(); newPolygonFeedbackEx = (INewPolygonFeedbackEx)SketchToolAssist.Feedback; SketchToolAssist.Feedback.Display = pActiveView.ScreenDisplay; newPolygonFeedbackEx.ChangeLineType(SketchToolAssist.LineType); newPolygonFeedbackEx.Start(SketchToolAssist.m_pAnchorPoint); SketchToolAssist.m_pPointColn = new Polygon(); object obj3 = Missing.Value; object value4 = Missing.Value; SketchToolAssist.m_pPointColn.AddPoint(SketchToolAssist.m_pAnchorPoint, ref obj3, ref value4); } str = ""; } else if (SketchToolAssist.IsDrawTempLine == DrawTempGeometry.Point) { SketchToolAssist.TempLine = SketchToolAssist.m_pAnchorPoint; str = ""; } else if (pFeatureLayer == null) { str = ""; } else if (pFeatureLayer.FeatureClass != null) { string str1 = ""; string unit = ""; SketchToolAssist.IsFixDirection = false; SketchToolAssist.IsFixLength = false; if (SketchToolAssist.Feedback == null) { if (pFeatureLayer.FeatureClass.FeatureType == esriFeatureType.esriFTAnnotation) { try { Editor.EditWorkspace.StartEditOperation(); IFeature feature = pFeatureLayer.FeatureClass.CreateFeature(); ITextElement textElement = CreateFeatureTool.MakeTextElement("文本", 0, SketchToolAssist.m_pAnchorPoint); IAnnotationFeature2 annotationFeature2 = feature as IAnnotationFeature2; annotationFeature2.LinkedFeatureID = -1; annotationFeature2.AnnotationClassID = 0; annotationFeature2.Annotation = textElement as IElement; EditorEvent.NewRow(feature); feature.Store(); Editor.EditWorkspace.StopEditOperation(); EditorEvent.AfterNewRow(feature); pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); pActiveView.FocusMap.ClearSelection(); pActiveView.FocusMap.SelectFeature(pFeatureLayer, feature); pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); } catch (Exception exception) { Logger.Current.Error("", exception, ""); } } else if (pFeatureLayer.FeatureClass.FeatureType != esriFeatureType.esriFTDimension) { value = Missing.Value; switch (pFeatureLayer.FeatureClass.ShapeType) { case esriGeometryType.esriGeometryPoint: { CreateFeatureTool.CreateFeature(SketchToolAssist.m_pAnchorPoint, pActiveView, pFeatureLayer); break; } case esriGeometryType.esriGeometryMultipoint: { SketchToolAssist.m_bInUse = true; SketchToolAssist.Feedback = new NewMultiPointFeedback(); INewMultiPointFeedback newMultiPointFeedback = (INewMultiPointFeedback)SketchToolAssist.Feedback; SketchToolAssist.Feedback.Display = pActiveView.ScreenDisplay; SketchToolAssist.m_pPointCollection = new Multipoint(); newMultiPointFeedback.Start(SketchToolAssist.m_pPointCollection, SketchToolAssist.m_pAnchorPoint); break; } case esriGeometryType.esriGeometryPolyline: { SketchToolAssist.m_bInUse = true; SketchToolAssist.Feedback = new NewPolylineFeedback(); newPolylineFeedback = (INewPolylineFeedback)SketchToolAssist.Feedback; newPolylineFeedback.ChangeLineType(SketchToolAssist.LineType); SketchToolAssist.Feedback.Display = pActiveView.ScreenDisplay; newPolylineFeedback.Start(SketchToolAssist.m_pAnchorPoint); SketchToolAssist.m_PointCount = 1; SketchToolAssist.StartPoint = SketchToolAssist.m_pAnchorPoint; SketchToolAssist.m_pPointColn = new Polyline(); SketchToolAssist.m_pPointColn.AddPoint(SketchToolAssist.m_pAnchorPoint, ref value, ref value); unit = CommonHelper.GetUnit(pActiveView.FocusMap.MapUnits); break; } case esriGeometryType.esriGeometryPolygon: { SketchToolAssist.m_bInUse = true; SketchToolAssist.Feedback = new NewPolygonFeedbackEx(); feedback1 = (INewPolygonFeedbackEx)SketchToolAssist.Feedback; feedback1.ChangeLineType(SketchToolAssist.LineType); SketchToolAssist.Feedback.Display = pActiveView.ScreenDisplay; feedback1.Start(SketchToolAssist.m_pAnchorPoint); SketchToolAssist.m_PointCount = 0; SketchToolAssist.m_pPointColn = new Polygon(); SketchToolAssist.StartPoint = SketchToolAssist.m_pAnchorPoint; unit = CommonHelper.GetUnit(pActiveView.FocusMap.MapUnits); num = CommonHelper.measureArea(SketchToolAssist.m_pAnchorPoint, 1, ref SketchToolAssist.m_pPointColn); length = (SketchToolAssist.m_pPointColn as IPolygon).Length; if (num <= 0) { break; } str1 = string.Format("周长 = {0:0.###} {1} ,总面积 = {2:0.###} 平方{1}", length, unit, num); break; } } } else { SketchToolAssist.Feedback = new NewDimensionFeedback(); try { (SketchToolAssist.Feedback as INewDimensionFeedback).ReferenceScale = (pActiveView as IMap).ReferenceScale; (SketchToolAssist.Feedback as INewDimensionFeedback).ReferenceScaleUnits = (pActiveView as IMap).MapUnits; } catch { } SketchToolAssist.Feedback.Display = pActiveView.ScreenDisplay; (SketchToolAssist.Feedback as INewDimensionFeedback).Start(SketchToolAssist.m_pAnchorPoint); SketchToolAssist.m_PointCount = 1; } } else if (SketchToolAssist.Feedback is INewDimensionFeedback) { SketchToolAssist.m_PointCount = SketchToolAssist.m_PointCount + 1; (SketchToolAssist.Feedback as INewDimensionFeedback).AddPoint(SketchToolAssist.m_pAnchorPoint); if (SketchToolAssist.m_PointCount == 3) { IDimensionShape dimensionShape = (SketchToolAssist.Feedback as INewDimensionFeedback).Stop(); CreateFeatureTool.CreateDimensionFeature(dimensionShape, (SketchToolAssist.Feedback as INewDimensionFeedback).DimensionType, pActiveView, pFeatureLayer); } } else if (SketchToolAssist.Feedback is INewMultiPointFeedback) { value = Missing.Value; SketchToolAssist.m_pPointCollection.AddPoint(SketchToolAssist.m_pAnchorPoint, ref value, ref value); (SketchToolAssist.Feedback as INewMultiPointFeedback).Start(SketchToolAssist.m_pPointCollection, SketchToolAssist.m_pAnchorPoint); } else if (SketchToolAssist.Feedback is INewLineFeedback) { newPolylineFeedback = (INewPolylineFeedback)SketchToolAssist.Feedback; value = Missing.Value; newPolylineFeedback.AddPoint(SketchToolAssist.m_pAnchorPoint); SketchToolAssist.m_pPointColn.AddPoint(SketchToolAssist.m_pAnchorPoint, ref value, ref value); SketchToolAssist.m_PointCount = SketchToolAssist.m_PointCount + 1; unit = CommonHelper.GetUnit(pActiveView.FocusMap.MapUnits); } else if (SketchToolAssist.Feedback is INewPolygonFeedback) { feedback1 = (INewPolygonFeedbackEx)SketchToolAssist.Feedback; feedback1.AddPoint(SketchToolAssist.m_pAnchorPoint); SketchToolAssist.m_PointCount = SketchToolAssist.m_PointCount + 1; unit = CommonHelper.GetUnit(pActiveView.FocusMap.MapUnits); num = CommonHelper.measureArea(SketchToolAssist.m_pAnchorPoint, 1, ref SketchToolAssist.m_pPointColn); length = (SketchToolAssist.m_pPointColn as IPolygon).Length; if (num > 0) { str1 = string.Format("周长 = {0:0.###} {1} ,总面积 = {2:0.###} 平方{1}", length, unit, num); } object value5 = Missing.Value; object obj5 = Missing.Value; SketchToolAssist.m_pPointColn.AddPoint(SketchToolAssist.m_pAnchorPoint, ref value5, ref obj5); } if (SketchToolAssist.LastPoint == null) { SketchToolAssist.LastPoint = new ESRI.ArcGIS.Geometry.Point(); } SketchToolAssist.LastPoint.PutCoords(SketchToolAssist.m_pAnchorPoint.X, SketchToolAssist.m_pAnchorPoint.Y); str = str1; } else { str = ""; } return(str); }