コード例 #1
0
ファイル: ToolQuerySlope.cs プロジェクト: radtek/geosufan
 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;
     }
 }
コード例 #2
0
ファイル: frmQuerySlope.cs プロジェクト: radtek/geosufan
 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();
 }
コード例 #3
0
ファイル: frm3DSection.cs プロジェクト: radtek/geosufan
 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();
 }
コード例 #4
0
ファイル: frm3DSection.cs プロジェクト: radtek/geosufan
        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;
        }
コード例 #5
0
ファイル: frmQuerySlope.cs プロジェクト: radtek/geosufan
        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);
            }
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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;
            }
        }