/// <summary>
        /// Occurs when this command is clicked
        /// </summary>
        public override void OnClick()
        {
            // TODO: Add cmdSaveEdit.OnClick implementation
            ITin     pTin     = pTinLayer.Dataset;
            ITinEdit pTinEdit = pTin as ITinEdit;

            pTinEdit.Save();
        }
        /// <summary>
        /// Occurs when this command is clicked
        /// </summary>
        public override void OnClick()
        {
            // TODO: Add CmdStartEditTinLayer.OnClick implementation
            ITin     pTin     = pTinLayer.Dataset;
            ITinEdit pTinEdit = pTin as ITinEdit;

            pTinEdit.StartEditing();
        }
Beispiel #3
0
        //根据创建的点要素做tin
        public void CreatTINs()
        {
            Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory");
            IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);

            Workspace = workspaceFactory.OpenFromFile(workspacepath, 0);
            IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)Workspace;

            //new tin 的范围
            tin = new TinClass();
            tin.Init(tinpath);
            IEnvelope EnvO = tin.Extent;
            IEnvelope Env  = new EnvelopeClass();

            Env.XMax = EnvO.XMax + 10;
            Env.YMax = EnvO.YMax + 10;
            Env.ZMax = EnvO.ZMax + 100;
            Env.XMin = EnvO.XMin + 10;
            Env.YMin = EnvO.YMin + 10;
            Env.ZMin = EnvO.ZMin + 100;

            // Instantiate a new empty TIN.
            ITinEdit[] TinEdit   = new ITinEdit[SurfaceCount + 1];
            object     overwrite = true;

            for (int i = 0; i < SurfaceCount + 1; i++)
            {
                TinEdit[i] = new TinClass();
                TinEdit[i].InitNew(Env);
                TinEdit[i].SaveAs(OutTinPath + "_" + i, ref overwrite);
            }

            IFeatureClass[] ISOpointFeatureClass = new IFeatureClass[SurfaceCount + 1];
            for (int i = 0; i < SurfaceCount + 1; i++)
            {
                ISOpointFeatureClass[i] = featureWorkspace.OpenFeatureClass("Node_" + i);
                IGeometryCollection MultipointGeometryCollection = new MultipointClass();
                MakeZAware(MultipointGeometryCollection as IGeometry);
                for (int p = 0; p < NodeCount - 4; p++)
                {
                    IPoint onePoint = ISOpointFeatureClass[i].GetFeature(p + 1).Shape as IPoint;
                    MakeZAware(onePoint);
                    MultipointGeometryCollection.AddGeometry(onePoint);
                }
                (TinEdit[i] as ITinEdit2).SetToConstrainedDelaunay();
                TinEdit[i].AddShapeZ(MultipointGeometryCollection as IGeometry, esriTinSurfaceType.esriTinMassPoint, 0, _missing);
                TinEdit[i].Save();
            }
        }
Beispiel #4
0
        /// <summary>
        /// Occurs when this command is clicked
        /// </summary>
        public override void OnClick()
        {
            // TODO: Add CmdStopEditTinLayer.OnClick implementation
            ITin     pTin     = pTinLayer.Dataset;
            ITinEdit pTinEdit = pTin as ITinEdit;

            if (MessageBox.Show("ÊÇ·ñ±£´æ?", "Ìáʾ", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                pTinEdit.StopEditing(true);
            }
            else
            {
                pTinEdit.StopEditing(false);
            }
        }
        public override void OnMouseDown(int Button, int Shift, int X, int Y)
        {
            // TODO:  Add ToolModefyTINNode.OnMouseDown implementation
            ITin     pTin     = pTinLayer.Dataset;
            ITinEdit pTinEdit = pTin as ITinEdit;

            frmModifyNode.m_pTinEdit = pTinEdit;
            frmModifyNode.m_pTinNode = pNode;
            frmModifyNode.setDoubleInputValue(pNode.Z);
            frmModifyNode.setBttonEnable(true);
            IMapControl2 pMapCtr = (((IToolbarControl)m_hookHelper.Hook).Buddy) as IMapControl2;

            frmModifyNode.m_pMapCtr = pMapCtr;
            pMovePtFeedBack.Stop();
            //IPoint pt = new PointClass();
            //pMovePtFeedBack.Start(pt, pt);
        }
Beispiel #6
0
        public override void OnDblClick()
        {
            base.OnDblClick();
            ITin     pTin     = pTinLayer.Dataset;
            ITinEdit pTinEdit = pTin as ITinEdit;

            frmAddTINPlane.pTinEdit = pTinEdit;
            if (mNewPolygonFeedback != null)
            {
                IPolygon polygon = mNewPolygonFeedback.Stop();
                frmAddTINPlane.pGeometry = polygon;
                frmAddTINPlane.setButtonOkEnable(true);
                frmAddTINPlane.CalPlaneHeight();
                IMapControl2 pMapCtr = (((IToolbarControl)m_hookHelper.Hook).Buddy) as IMapControl2;
                frmAddTINPlane.pMapCtr = pMapCtr;
                mNewPolygonFeedback    = null;
            }
        }
        public override void OnMouseDown(int Button, int Shift, int X, int Y)
        {
            // TODO:  Add ToolDeleteTINNode.OnMouseDown implementation
            ITin     pTin     = pTinLayer.Dataset;
            ITinEdit pTinEdit = pTin as ITinEdit;

            pTinEdit.DeleteNode(pNode.Index);
            IMapControl2 pMapCtr = (((IToolbarControl)m_hookHelper.Hook).Buddy) as IMapControl2;

            if (pMapCtr != null)
            {
                pMapCtr.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
            }
            pMovePtFeedBack.Stop();
            IPoint pt = new PointClass();

            pMovePtFeedBack.Start(pt, pt);
        }
Beispiel #8
0
        public override void OnMouseDown(int Button, int Shift, int X, int Y)
        {
            // TODO:  Add toolAddTinNode.OnMouseDown implementation
            ITin     pTin     = pTinLayer.Dataset;
            ITinEdit pTinEdit = pTin as ITinEdit;

            pTinEdit.AddPointZ(pAddedPoint, 0);
            IMapControl2 pMapCtr = (((IToolbarControl)m_hookHelper.Hook).Buddy) as IMapControl2;

            if (pMapCtr != null)
            {
                pMapCtr.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
            }
            IPageLayoutControl pLayoutCtr = (((IToolbarControl)m_hookHelper.Hook).Buddy) as IPageLayoutControl;

            if (pLayoutCtr != null)
            {
                pLayoutCtr.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
            }
        }
Beispiel #9
0
        public override void OnDblClick()
        {
            ITin     pTin     = pTinLayer.Dataset;
            ITinEdit pTinEdit = pTin as ITinEdit;

            if (mNewPolygonFeedback != null)
            {
                IPolygon      polygon      = mNewPolygonFeedback.Stop();
                ITinSelection tinselection = pTinEdit as ITinSelection;
                tinselection.SelectByArea(esriTinElementType.esriTinNode, polygon, true, true, esriTinSelectionType.esriTinSelectionAdd);
                pTinEdit.DeleteSelectedNodes();
                mNewPolygonFeedback = null;
                IMapControl2 pMapCtr = (((IToolbarControl)m_hookHelper.Hook).Buddy) as IMapControl2;
                if (pMapCtr != null)
                {
                    pMapCtr.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
                }
            }
            base.OnDblClick();
        }
        public override void OnMouseMove(int Button, int Shift, int X, int Y)
        {
            // TODO:  Add ToolModefyTINNode.OnMouseMove implementation
            ITin         pTin         = pTinLayer.Dataset;
            ITinEdit     pTinEdit     = pTin as ITinEdit;
            ITinAdvanced pTinAdvanced = (ITinAdvanced)pTin;
            IMapControl2 pMapCtr      = (((IToolbarControl)m_hookHelper.Hook).Buddy) as IMapControl2;

            if (pMapCtr != null)
            {
                IPoint   mapPoint = pMapCtr.ToMapPoint(X, Y);
                ITinNode pTINNode = new TinNodeClass();
                double   distance = 0;
                pTinAdvanced.QueryNearestNode(mapPoint, pTINNode, ref distance);
                pNode = pTINNode;
                IPoint pt = new PointClass();
                pt.PutCoords(pNode.X, pNode.Y);
                pMovePtFeedBack.MoveTo(pt);
            }
        }
Beispiel #11
0
        /// <summary>
        /// Occurs when this command is clicked
        /// </summary>
        public override void OnClick()
        {
            // TODO: Add CmdTinSaveAs.OnClick implementation
            SaveFileDialog dlg = new SaveFileDialog();

            dlg.Filter = "";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                ITin     pTin     = pTinLayer.Dataset;
                ITinEdit pTinEdit = pTin as ITinEdit;
                try
                {
                    object ob = true;
                    pTin.SaveAs(dlg.FileName, ref ob);
                    MessageBox.Show("±£´æ" + dlg.FileName + "³É¹¦£¡");
                }
                catch (SystemException ee)
                {
                    MessageBox.Show(ee.Message);
                }
            }
        }
Beispiel #12
0
        public override void OnMouseMove(int Button, int Shift, int X, int Y)
        {
            ITin         pTin     = pTinLayer.Dataset;
            ITinEdit     pTinEdit = pTin as ITinEdit;
            ISurface     pSurface = ((ITinAdvanced)pTin).Surface;
            IMapControl2 pMapCtr  = (((IToolbarControl)m_hookHelper.Hook).Buddy) as IMapControl2;

            //在mapctr操作
            if (pMapCtr != null)
            {
                IPoint  mapPoint = pMapCtr.ToMapPoint(X, Y);
                IZAware za       = mapPoint as IZAware;
                za.ZAware = true;
                double zVal;
                if (frmAddTINNode.bFromSurface == true)
                {
                    zVal = pSurface.GetElevation(mapPoint);
                    if (double.IsNaN(zVal))
                    {
                        zVal = 0;
                    }
                    frmAddTINNode.SetdoubleInputHeightValue(zVal);
                }
                else
                {
                    zVal = frmAddTINNode.dHeight;
                    if (double.IsNaN(zVal))
                    {
                        zVal = 0;
                    }
                }
                mapPoint.Z  = zVal;
                pAddedPoint = mapPoint;
            }
            //在layout控件操作取不到z值
            else
            {
                IPageLayoutControl pLayoutCtr = (((IToolbarControl)m_hookHelper.Hook).Buddy) as IPageLayoutControl;
                //if (pLayoutCtr.ActiveView.FocusMap.Equals(pMap))

                IPoint  mapPoint = pLayoutCtr.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y);
                IZAware za       = mapPoint as IZAware;
                za.ZAware = true;
                double zVal;
                if (frmAddTINNode.bFromSurface == true)
                {
                    zVal = pSurface.GetElevation(mapPoint);
                    if (double.IsNaN(zVal))
                    {
                        zVal = 0;
                    }
                    frmAddTINNode.SetdoubleInputHeightValue(zVal);
                }
                else
                {
                    zVal = frmAddTINNode.dHeight;
                    if (double.IsNaN(zVal))
                    {
                        zVal = 0;
                    }
                }
                mapPoint.Z  = zVal;
                pAddedPoint = mapPoint;
            }
        }