private void DrawCirle(Point3D mPoint3D)
 {
     try
     {
         GeoCircle3D m_circle3d = new GeoCircle3D(mPoint3D, mRemoveRadius);
         GeoModel3D  m_model    = m_circle3d.ConvertToGeoModel3D(true);
         mRec = m_model.Bounds;
         //设置数据集容量,避免空间查询出现过多对象
         mUseData.OutWaterNetWork.Tolerance.NodeSnap    = 0.0001;
         mUseData.SupplyWaterNetWork.Tolerance.NodeSnap = 0.0001;
         GeoStyle3D style = new GeoStyle3D();
         style.FillForeColor = Color.FromArgb(150, 153, 207, 25);
         style.AltitudeMode  = AltitudeMode.RelativeToGround;
         style.FillMode      = FillMode3D.Fill;
         m_model.Style3D     = style;
         mSceneControl.Scene.TrackingLayer.IsEditable = true;
         mSceneControl.Scene.TrackingLayer.IsVisible  = true;
         mSceneControl.Scene.TrackingLayer.Add(m_model, "圆");
         CloseMethod();
     }
     catch (System.Exception ex)
     {
         Trace.WriteLine(ex.Message);
     }
 }
Esempio n. 2
0
 public void DrawCirle(Point3D bd_point3D)
 {
     try
     {
         GeoCircle3D m_circle3d = new GeoCircle3D(bd_point3D, 20);
         GeoModel3D  m_model    = m_circle3d.ConvertToGeoModel3D(true);
         m_rec = m_model.Bounds;
         //设置数据集容量,避免空间查询出现过多对象
         mUseData.OutWaterNetWork.Tolerance.NodeSnap    = 0.0001;
         mUseData.SupplyWaterNetWork.Tolerance.NodeSnap = 0.0001;
         GeoStyle3D style = new GeoStyle3D();
         style.FillForeColor = Color.FromArgb(100, 255, 128, 64);
         style.AltitudeMode  = AltitudeMode.RelativeToGround;
         style.FillMode      = FillMode3D.Fill;
         m_model.Style3D     = style;
         TrackingLayer3D trackinglayer = mSceneControl.Scene.TrackingLayer;
         trackinglayer.IsEditable = true;
         trackinglayer.IsVisible  = true;
         trackinglayer.Add(m_model, "圆");
         CircleID = trackinglayer.IndexOf("圆");
     }
     catch (System.Exception ex)
     {
         Trace.WriteLine(ex.Message);
     }
 }
        /// <summary>
        /// 结束空间查询
        /// </summary>
        private void EndSpatialQuery()
        {
            string actionStr = SmObjectLocator.getInstance().GlobeObject.Action.ToString().ToLower();
            switch (actionStr)
            {
                case "createpoint":
                    if (this.TempPoints3Ds.Count == 1)
                    {
                        GeoPoint3D geoPoint3D = new GeoPoint3D(TempPoints3Ds[0]);
                        geoPoint3D.Style3D = GetGeoStyle3D();
                        SmObjectLocator.getInstance().GlobeObject.Scene.TrackingLayer.Add(geoPoint3D, spatialTag);
                    }
                    break;
                    //此时划线就是为了画圆
                case "createline":
                    int index = SmObjectLocator.getInstance().GlobeObject.Scene.TrackingLayer.IndexOf(spatialTempTag);
                    if (index >= 0)
                    {
                        SmObjectLocator.getInstance().GlobeObject.Scene.TrackingLayer.Remove(index);
                    }
                    if (this.TempPoints3Ds.Count == 2)
                    {
                        Point3D point3D = new Point3D(TempPoints3Ds[0].X, TempPoints3Ds[0].Y, TempPoints3Ds[0].Z);
                        double radius = GetLengthBy2Point(TempPoints3Ds[0], TempPoints3Ds[1]);
                        GeoCircle3D geoCircle3D = new GeoCircle3D(point3D, radius);
                        GeoModel geoModel = geoCircle3D.GetGeoModel(72, 72);
                        geoModel.Style3D = GetGeoStyle3D();
                        SmObjectLocator.getInstance().GlobeObject.Scene.TrackingLayer.Add(geoModel, spatialTag);
                    }
                    break;
                case "createpolygon":
                    if (this.TempPoints3Ds.Count > 2)
                    {
                        GeoRegion3D geoRegion3D = new GeoRegion3D(TempPoints3Ds);
                        geoRegion3D.Style3D = GetGeoStyle3D();
                        SmObjectLocator.getInstance().GlobeObject.Scene.TrackingLayer.Add(geoRegion3D, spatialTag);
                    }
                    else
                    {
                        int index1 = SmObjectLocator.getInstance().GlobeObject.Scene.TrackingLayer.IndexOf(spatialTempTag);
                        if (index1 >= 0)
                        {
                            SmObjectLocator.getInstance().GlobeObject.Scene.TrackingLayer.Remove(index1);
                        }
                    }
                    break;
                default:
                    break;
            }
            Point3Ds queryPoints = TempPoints3Ds.Clone();
            TempPoints3Ds.Clear();
            removeListener();
            if (ms != null)
            {
				ms.ExecuteQuery(spatialTag, queryPoints, actionStr);
            }

			//恢复场景光标形状
			SmObjectLocator.getInstance().GlobeObject.IsCursorCustomized = false;
        }