public override void OnMouseDown(int Button, int Shift, int X, int Y) { try { ClsMarkDraw.DeleteAllElementsWithName(m_hookHelper.FocusMap, sPolyOutlineName); ESRI.ArcGIS.Geometry.IPoint pMapPoint = new ESRI.ArcGIS.Geometry.PointClass(); m_hookHelper.FocusMap.SpatialReference = m_psurface.Domain.SpatialReference; pMapPoint = m_hookHelper.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y); if (pMapPoint == null) { return; } pMapPoint.Project(m_psurface.Domain.SpatialReference); pMapPoint.Z = m_psurface.GetElevation(pMapPoint); IGroupElement pGroup = null; ClsMarkDraw.AddSimpleGraphic(pMapPoint, ClsMarkDraw.getRGB(71, 61, 255), 3, sPolyOutlineName, m_hookHelper.FocusMap, pGroup); m_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null); m_Geometry = pMapPoint; EndDtrawd(true); } catch { return; } }
private void frmQuerySlope_FormClosing(object sender, FormClosingEventArgs e) { ClsMarkDraw.DeleteAllElementsWithName(m_pMapControlDefault.Map, sPolyOutlineName);//清除绘制的要素 if (m_SpatialReference != null) { m_pMapControlDefault.SpatialReference = m_SpatialReference; } m_pMapControlDefault.Refresh(esriViewDrawPhase.esriViewBackground, null, null); m_SurFace = null; m_pMapControlDefault.CurrentTool = null; this.Dispose(); }
private void btnCancel_Click(object sender, EventArgs e) { ClsMarkDraw.DeleteAllElementsWithName(m_pMapControlDefault.Map, sPolyOutlineName);//清除绘制的要素 if (m_SpatialReference != null) { m_pMapControlDefault.Map.SpatialReference = m_SpatialReference; } m_pMapControlDefault.Refresh(esriViewDrawPhase.esriViewBackground, null, null); m_SurFace = null; m_pMapControlDefault.CurrentTool = null; this.DialogResult = DialogResult.Cancel; this.Close(); }
private void DrawGeo_Click(object sender, EventArgs e) { //新建三维绘制工具 ClsMarkDraw.DeleteAllElementsWithName(m_pMapControlDefault.Map, sPolyOutlineName); m_pMapControlDefault.Refresh(esriViewDrawPhase.esriViewBackground, null, null); pToolDrawGeo.EndDtrawd += new myEventHandler(pToolDrawGeo_EndDtrawd); pToolDrawGeo.GeometryType = ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryLine; pToolDrawGeo.pSurface = m_SurFace; ICommand pCommad = pToolDrawGeo; pCommad.OnCreate(m_pMapControlDefault.Object); m_pMapControlDefault.CurrentTool = pCommad as ITool; }
private void DrawGeo_Click(object sender, EventArgs e) { //新建三维绘制工具 ClsMarkDraw.DeleteAllElementsWithName(m_pMapControlDefault.Map, sPolyOutlineName); m_pMapControlDefault.Refresh(esriViewDrawPhase.esriViewBackground, null, null); pToolQuerySlope.EndDtrawd += new myEventHandlerSlope(pToolQuerySlope_EndDtrawd); pToolQuerySlope.pSurface = m_SurFace; ICommand pCommad = pToolQuerySlope; pCommad.OnCreate(m_pMapControlDefault.Object); m_pMapControlDefault.CurrentTool = pCommad as ITool; if (this.WriteLog) { Plugin.LogTable.Writelog(this.Text); } }
public override void OnDblClick() { ITopologicalOperator pTopoOp; if (m_pPointColl != null) { switch (m_DrawType.ToString()) { case "esriGeometryLine": IPointCollection pPolyLine = new PolylineClass(); pPolyLine.AddPointCollection(m_pPointColl); pTopoOp = pPolyLine as ITopologicalOperator; pTopoOp.Simplify(); m_Geometry = pPolyLine as IGeometry; //ZQ 20110809 m_Geometry.SpatialReference = m_psurface.Domain.SpatialReference; //m_Geometry.SpatialReference = m_hookHelper.FocusMap.SpatialReference; ClsMarkDraw.DeleteAllElementsWithName(m_hookHelper.FocusMap, sPolyOutlineName); EndDtrawd(true); //触发结束事件 break; case "esriGeometryPolygon": if (m_pPointColl.PointCount < 3) { return; } IPointCollection pPolygon = new PolygonClass(); pPolygon.AddPointCollection(m_pPointColl); pTopoOp = pPolygon as ITopologicalOperator; pTopoOp.Simplify(); m_Geometry = pPolygon as IGeometry; //ZQ 20110809 m_Geometry.SpatialReference = m_psurface.Domain.SpatialReference; //m_Geometry.SpatialReference = m_hookHelper.FocusMap.SpatialReference; ClsMarkDraw.DeleteAllElementsWithName(m_hookHelper.FocusMap, sPolyOutlineName); EndDtrawd(true); //触发结束事件 break; } m_pPointColl = null; } //Cls3DMarkDraw.DeleteAllElementsWithName(m_sceneHookHelper.Scene, sPolyOutlineName); m_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null); }
public override void OnMouseDown(int Button, int Shift, int X, int Y) { try { ESRI.ArcGIS.Geometry.IPoint pMapPoint = new ESRI.ArcGIS.Geometry.PointClass();; object before = Type.Missing; object after = Type.Missing; object StepSize = Type.Missing; m_hookHelper.FocusMap.SpatialReference = m_psurface.Domain.SpatialReference; pMapPoint = m_hookHelper.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y); if (pMapPoint == null) { return; } pMapPoint.Project(m_psurface.Domain.SpatialReference); pMapPoint.Z = m_psurface.GetElevation(pMapPoint); //pMapPoint.SpatialReference = m_hookHelper.FocusMap.SpatialReference; //pDisplay = m_sceneHookHelper.SceneGraph as IDisplay3D; //pDisplay.FlashLocation(pMapPoint);//闪烁显示被点击的位置 IGeometry pGeom = null; ClsMarkDraw.DeleteAllElementsWithName(m_hookHelper.FocusMap, sPolyOutlineName); //根据绘制对象类型的不同定义不同的类型 switch (m_DrawType.ToString()) { case "esriGeometryPoint": m_Geometry = pMapPoint; break; case "esriGeometryLine": if (m_pPointColl == null) { m_pPointColl = new PolylineClass(); pGeom = new PolylineClass(); } m_pPointColl.AddPoint(pMapPoint, ref before, ref after); break; case "esriGeometryPolygon": if (m_pPointColl == null) { m_pPointColl = new PolygonClass(); pGeom = new PolygonClass(); } m_pPointColl.AddPoint(pMapPoint, ref before, ref after); break; } //BeginDrawed(true); IGroupElement pGroup = null; if (m_pPointColl.PointCount == 1) { //当为一个点时绘制点 ClsMarkDraw.AddSimpleGraphic(pMapPoint, ClsMarkDraw.getRGB(71, 61, 255), 3, sPolyOutlineName, m_hookHelper.FocusMap, pGroup); } else if (m_DrawType.ToString() == "esriGeometryLine") { pGeom = m_pPointColl as IGeometry; pGeom.SpatialReference = pMapPoint.SpatialReference; m_psurface.InterpolateShape(pGeom, out pGeom, ref StepSize); ClsMarkDraw.AddSimpleGraphic(pGeom, ClsMarkDraw.getRGB(71, 61, 255), 2, sPolyOutlineName, m_hookHelper.FocusMap, pGroup); m_pPointColl = pGeom as IPointCollection; } else { ITopologicalOperator pTopo = m_pPointColl as ITopologicalOperator; pGeom = pTopo.Boundary; pGeom.SpatialReference = pMapPoint.SpatialReference; m_psurface.InterpolateShape(pGeom, out pGeom, ref StepSize); ClsMarkDraw.AddSimpleGraphic(pGeom, ClsMarkDraw.getRGB(71, 61, 255), 2, sPolyOutlineName, m_hookHelper.FocusMap, pGroup); } m_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null); } catch { return; } }