Esempio n. 1
0
        public Form1()
        {
            try
            {
                InitializeComponent();

                savePath     = Path.Combine(path, "data\\road.geojson");
                mapOperation = new MapOperation(axRenderControl1, i3dmPath);
                mapOperation.InitializationAxRenderControl();

                axRenderControl1.RcObjectEditing    += AxRenderControl1_RcObjectEditing;
                axRenderControl1.RcObjectEditFinish += AxRenderControl1_RcObjectEditFinish;
                axRenderControl1.RcMouseClickSelect += AxRenderControl1_RcMouseClickSelect;

                roadPoints = new RoadPoints
                {
                    features = new List <Feature>()
                };
                ReadGeoJson();

                symbol = new SimplePointSymbolClass()
                {
                    FillColor = 0xAA0000FF, Size = 10
                };
                offSetDis = Math.Sqrt(Math.Pow(xOffset, 2) + Math.Pow(yOffset, 2));
                comboBox.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Esempio n. 2
0
        public DrawTool()
        {
            this._3DControl = DF3DApplication.Application.Current3DMapControl;
            if (this._3DControl != null)
            {
                if (this._3DControl.Terrain.IsRegistered && this._3DControl.Terrain.VisibleMask != gviViewportMask.gviViewNone)
                {
                    this._heightStyle = gviHeightStyle.gviHeightOnTerrain;
                }
                else
                {
                    this._heightStyle = gviHeightStyle.gviHeightAbsolute;
                }

                this._objectManager                  = this._3DControl.ObjectManager;
                this._geoFactory                     = new GeometryFactory();
                this._curveSymbol                    = new CurveSymbol();
                this._curveSymbol.Width              = 0;
                this._curveSymbol.Color              = Convert.ToUInt32(SystemInfo.Instance.LineColor, 16);
                this._surfaceSymbol                  = new SurfaceSymbol();
                this._surfaceSymbol.Color            = Convert.ToUInt32(SystemInfo.Instance.FillColor, 16);
                this._surfaceSymbol.BoundarySymbol   = this._curveSymbol;
                this._simplePointSymbol              = new SimplePointSymbol();
                this._simplePointSymbol.FillColor    = Convert.ToUInt32(SystemInfo.Instance.LineColor, 16);
                this._simplePointSymbol.OutlineColor = Convert.ToUInt32(SystemInfo.Instance.LineColor, 16);
                this._simplePointSymbol.Size         = 10;
                this._simplePointSymbol.Style        = gviSimplePointStyle.gviSimplePointCircle;
                this._rootID = this._3DControl.ProjectTree.RootID;
            }
        }
Esempio n. 3
0
        public static ISimplePointSymbol NewPtSymbol(uint color)
        {
            ISimplePointSymbol symbol = (SimplePointSymbol)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("6669A2D9-BA75-4B24-BF75-D1120B790AE9")));

            symbol.FillColor = color;
            symbol.Alignment = gviPivotAlignment.gviPivotAlignCenterCenter;
            symbol.Style     = gviSimplePointStyle.gviSimplePointX;
            return(symbol);
        }
Esempio n. 4
0
        public void RenderTrajectory(List <Trajectory> traceInfos, uint pointColor = 0xAA90EE90, uint lineColor = 0xAA0CE6E5)
        {
            try
            {
                symbol = new SimplePointSymbolClass()
                {
                    FillColor = pointColor,
                    Size      = 10
                };

                #region 创建线
                IPoint    point = _geoFactory.CreatePoint(i3dVertexAttribute.i3dVertexAttributeZ);
                IPolyline line  = (IPolyline)_geoFactory.CreateGeometry(i3dGeometryType.i3dGeometryPolyline, i3dVertexAttribute.i3dVertexAttributeZ);
                line.SpatialCRS = _spatialCRS;


                foreach (Trajectory trajectory in traceInfos)
                {
                    point.SetCoords(trajectory.LongitudeWgs84, trajectory.LatitudeWgs84, 1, 0, 0);
                    point.SpatialCRS = _spatialCRS;

                    line.AppendPoint(point);
                    var rPoint = _axRenderControl.ObjectManager.CreateRenderPoint(point, symbol);
                    rPoint.MaxVisibleDistance = 100000;
                    rPoint.ViewingDistance    = 500000;
                    AppendGuidToStringBuilder(rPoint.Guid);
                }
                //lineColor = 0xFF0CE6E5;
                tracePolyline = _axRenderControl.ObjectManager.CreateRenderPolyline(line, new CurveSymbol {
                    Color = lineColor, Width = -2
                });
                tracePolyline.VisibleMask        = i3dViewportMask.i3dViewAllNormalView;
                tracePolyline.MaxVisibleDistance = 100000;
                tracePolyline.HeightStyle        = i3dHeightStyle.i3dHeightAbsolute;

                AppendGuidToStringBuilder(tracePolyline.Guid);
                //_axRenderControl.Camera.FlyToObject(tracePolyline.Guid, i3dActionCode.i3dActionFollowAbove);
                #endregion
            }
            catch (Exception ex)
            {
                LoggerHelper.Logger.Error(ex, $"执行RenderTrajectory错误");
                throw ex;
            }
        }
        private void CreateRenderPoint(IPoint point)
        {
            if (gfactory == null)
            {
                gfactory = new GeometryFactory();
            }

            fde_point            = (IPoint)gfactory.CreateGeometry(i3dGeometryType.i3dGeometryPoint, i3dVertexAttribute.i3dVertexAttributeZ);
            fde_point.SpatialCRS = crs;
            fde_point.SetCoords(point.X, point.Y, point.Z, 0, 0);

            pointSymbol           = new SimplePointSymbolClass();
            pointSymbol.FillColor = 0xff0000ff;
            pointSymbol.Size      = 10;
            rpoint = _axRenderControl.ObjectManager.CreateRenderPoint(fde_point, pointSymbol);

            _axRenderControl.Camera.FlyToObject(rpoint.Guid, i3dActionCode.i3dActionFlyTo);
        }
Esempio n. 6
0
        /// <summary>
        /// 轨迹回放
        /// </summary>
        /// <param name="traceInfo">轨迹数据</param>
        /// <param name="speedTimes">回放倍数</param>
        /// <param name="traceChanged">轨迹是否改变</param>
        public void RenderVehicleTrajectory(IList <Trajectory> traceInfos, int speedTimes, bool traceChanged = true)
        {
            try
            {
                if (traceChanged)
                {
                    if (traceDynamicObj == null)
                    {
                        traceDynamicObj            = _axRenderControl.ObjectManager.CreateDynamicObject();
                        traceDynamicObj.AutoRepeat = false;
                        traceDynamicObj.CrsWKT     = WKT;
                        traceDynamicObj.TurnSpeed  = 300;
                        AppendGuidToStringBuilder(traceDynamicObj.Guid);

                        symbol = new SimplePointSymbolClass()
                        {
                            FillColor = 0xff0000ff,
                            Size      = 10
                        };

                        #region 创建线
                        IPoint    point = _geoFactory.CreatePoint(i3dVertexAttribute.i3dVertexAttributeZ);
                        IPolyline line  = (IPolyline)_geoFactory.CreateGeometry(i3dGeometryType.i3dGeometryPolyline, i3dVertexAttribute.i3dVertexAttributeZ);
                        line.SpatialCRS = _spatialCRS;


                        foreach (Trajectory trajectory in traceInfos)
                        {
                            IVector3 position = new Vector3();
                            position.Set(trajectory.LongitudeWgs84, trajectory.LatitudeWgs84, 1);
                            point.Position   = position;
                            point.SpatialCRS = _spatialCRS;

                            line.AppendPoint(point);
                            traceDynamicObj.AddWaypoint2(point, Convert.ToDouble(30 * speedTimes));

                            var rPoint = _axRenderControl.ObjectManager.CreateRenderPoint(point, symbol);
                            rPoint.MaxVisibleDistance = 12500;
                            rPoint.ViewingDistance    = 50;

                            AppendGuidToStringBuilder(rPoint.Guid);
                            //_axRenderControl.Camera.FlyToObject(rPoint.Guid, i3dActionCode.i3dActionFollowBehindAndAbove);
                        }
                        tracePolyline = _axRenderControl.ObjectManager.CreateRenderPolyline(line, new CurveSymbol {
                            Color = 0xFFFFFF00, Width = -2
                        });
                        tracePolyline.VisibleMask        = i3dViewportMask.i3dViewAllNormalView;
                        tracePolyline.MaxVisibleDistance = 12500;
                        tracePolyline.HeightStyle        = i3dHeightStyle.i3dHeightAbsolute;

                        AppendGuidToStringBuilder(tracePolyline.Guid);
                        #endregion
                    }
                }
                else
                {
                    if (traceDynamicObj == null)
                    {
                        return;
                    }

                    traceDynamicObj.Stop();
                    traceDynamicObj.TurnSpeed = 300 * speedTimes;
                    for (int i = 0; i < traceInfos.Count; i++)
                    {
                        traceDynamicObj.GetWaypoint2(i, out IPoint point, out double speed);
                        traceDynamicObj.ModifyWaypoint2(i, point, 30);
                    }
                }

                TraceObjectsPlay("111", traceDynamicObj, true);
            }
            catch (Exception ex)
            {
                LoggerHelper.Logger.Error(ex, $"执行RenderVehicleTrajectory错误");
                throw ex;
            }
        }
Esempio n. 7
0
        public PointRenderForm(IGeometryRender geoRender, object[] fieldNamesItems, bool isSimplePoint)
        {
            InitializeComponent();
            IsSimplePoint = isSimplePoint;

            {
                this.comboBox1.Items.AddRange(fieldNamesItems);
                this.comboBox1.Text = "";

                if (geoRender != null)
                {
                    int index = Utils.getIndexFromItems(fieldNamesItems, geoRender.RenderGroupField);
                    this.comboBox1.SelectedIndex = index;
                }
            }

            ISimpleGeometryRender render = geoRender as ISimpleGeometryRender;

            if (render == null)
            {
                if (isSimplePoint)
                {
                    this.dataGridView1.Enabled      = true;
                    this.checkBox1.Enabled          = false;
                    this.textBoxPictureName.Enabled = false;
                    this.textBoxPicturePath.Enabled = false;

                    ISimplePointSymbol tmpSymbol = new SimplePointSymbol();
                    string[]           row1      = new string[] { "Alignment", tmpSymbol.Alignment.ToString() };
                    string[]           row2      = new string[] { "Size", tmpSymbol.Size.ToString() };
                    object[]           rows      = new object[] { row1, row2 };
                    foreach (string[] rowArray in rows)
                    {
                        this.dataGridView2.Rows.Add(rowArray);
                    }

                    string[] row11 = new string[] { "FillColor", tmpSymbol.FillColor.ToString() };
                    string[] row12 = new string[] { "Style", tmpSymbol.Style.ToString() };
                    object[] rows2 = new object[] { row11, row12 };
                    foreach (string[] rowArray in rows2)
                    {
                        this.dataGridView1.Rows.Add(rowArray);
                    }
                    return;
                }
                else
                {
                    this.dataGridView1.Enabled      = false;
                    this.checkBox1.Enabled          = true;
                    this.textBoxPictureName.Enabled = true;

                    IImagePointSymbol tmpSymbol = new ImagePointSymbol();
                    string[]          row1      = new string[] { "Alignment", tmpSymbol.Alignment.ToString() };
                    string[]          row2      = new string[] { "Size", tmpSymbol.Size.ToString() };
                    object[]          rows      = new object[] { row1, row2 };
                    foreach (string[] rowArray in rows)
                    {
                        this.dataGridView2.Rows.Add(rowArray);
                    }

                    this.textBoxPictureName.Text = "";
                    return;
                }
            }

            if (render.Symbol == null)
            {
                return;
            }

            if (isSimplePoint)
            {
                this.dataGridView1.Enabled      = true;
                this.checkBox1.Enabled          = false;
                this.textBoxPictureName.Enabled = false;
                this.textBoxPicturePath.Enabled = false;

                ISimplePointSymbol symbol = render.Symbol as ISimplePointSymbol;
                if (symbol != null)
                {
                    string[] row1 = new string[] { "Alignment", symbol.Alignment.ToString() };
                    string[] row2 = new string[] { "Size", symbol.Size.ToString() };
                    object[] rows = new object[] { row1, row2 };
                    foreach (string[] rowArray in rows)
                    {
                        this.dataGridView2.Rows.Add(rowArray);
                    }

                    string[] row11 = new string[] { "FillColor", symbol.FillColor.ToString() };
                    string[] row12 = new string[] { "Style", symbol.Style.ToString() };
                    object[] rows2 = new object[] { row11, row12 };
                    foreach (string[] rowArray in rows2)
                    {
                        this.dataGridView1.Rows.Add(rowArray);
                    }
                }
                else
                {
                    ISimplePointSymbol tmpSymbol = new SimplePointSymbol();
                    string[]           row1      = new string[] { "Alignment", tmpSymbol.Alignment.ToString() };
                    string[]           row2      = new string[] { "Size", tmpSymbol.Size.ToString() };
                    object[]           rows      = new object[] { row1, row2 };
                    foreach (string[] rowArray in rows)
                    {
                        this.dataGridView2.Rows.Add(rowArray);
                    }

                    string[] row11 = new string[] { "FillColor", tmpSymbol.FillColor.ToString() };
                    string[] row12 = new string[] { "Style", tmpSymbol.Style.ToString() };
                    object[] rows2 = new object[] { row11, row12 };
                    foreach (string[] rowArray in rows2)
                    {
                        this.dataGridView1.Rows.Add(rowArray);
                    }
                }
            }
            else
            {
                this.dataGridView1.Enabled      = false;
                this.checkBox1.Enabled          = true;
                this.textBoxPictureName.Enabled = true;

                IImagePointSymbol symbol = render.Symbol as IImagePointSymbol;
                if (symbol != null)
                {
                    string[] row1 = new string[] { "Alignment", symbol.Alignment.ToString() };
                    string[] row2 = new string[] { "Size", symbol.Size.ToString() };
                    object[] rows = new object[] { row1, row2 };
                    foreach (string[] rowArray in rows)
                    {
                        this.dataGridView2.Rows.Add(rowArray);
                    }

                    this.textBoxPicturePath.Text = symbol.ImageName;
                    this.textBoxPictureName.Text = symbol.ImageName;
                }
                else
                {
                    IImagePointSymbol tmpSymbol = new ImagePointSymbol();
                    string[]          row1      = new string[] { "Alignment", tmpSymbol.Alignment.ToString() };
                    string[]          row2      = new string[] { "Size", tmpSymbol.Size.ToString() };
                    object[]          rows      = new object[] { row1, row2 };
                    foreach (string[] rowArray in rows)
                    {
                        this.dataGridView2.Rows.Add(rowArray);
                    }

                    this.textBoxPictureName.Text = "";
                }
            }
        }
Esempio n. 8
0
        void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            if (PickResult.Type == gviObjectType.gviObjectLabel)
            {
                ILabelPickResult tlpr = PickResult as ILabelPickResult;
                gviObjectType    type = tlpr.Type;
                ILabel           fl   = tlpr.Label;
                MessageBox.Show("拾取到" + type + "类型,内容为" + fl.Text);
            }
            else if (PickResult.Type == gviObjectType.gviObjectRenderModelPoint)
            {
                IRenderModelPointPickResult tlpr = PickResult as IRenderModelPointPickResult;
                gviObjectType     type           = tlpr.Type;
                IRenderModelPoint fl             = tlpr.ModelPoint;
                MessageBox.Show("拾取到" + type + "类型,模型名称为" + fl.ModelName);
            }
            else if (PickResult.Type == gviObjectType.gviObjectRenderPoint)
            {
                IRenderPointPickResult tlpr = PickResult as IRenderPointPickResult;
                gviObjectType          type = tlpr.Type;
                IRenderPoint           fl   = tlpr.Point;
                MessageBox.Show("拾取到" + type + "类型,大小为" + fl.Symbol.Size);
            }
            else if (PickResult.Type == gviObjectType.gviObjectRenderPolyline)
            {
                IRenderPolylinePickResult tlpr = PickResult as IRenderPolylinePickResult;
                gviObjectType             type = tlpr.Type;
                IRenderPolyline           fl   = tlpr.Polyline;
                MessageBox.Show("拾取到" + type + "类型,GUID为" + fl.Guid);
            }
            else if (PickResult.Type == gviObjectType.gviObjectRenderPolygon)
            {
                IRenderPolygonPickResult tlpr = PickResult as IRenderPolygonPickResult;
                gviObjectType            type = tlpr.Type;
                IRenderPolygon           fl   = tlpr.Polygon;
                MessageBox.Show("拾取到" + type + "类型,GUID为" + fl.Guid);
            }
            else if (PickResult.Type == gviObjectType.gviObjectRenderPOI)
            {
                IRenderPOIPickResult tlpr = PickResult as IRenderPOIPickResult;
                gviObjectType        type = tlpr.Type;
                IRenderPOI           fl   = tlpr.POI;
                MessageBox.Show("拾取到" + type + "类型,名称为" + ((IPOI)fl.GetFdeGeometry()).Name);
            }
            else if (PickResult.Type == gviObjectType.gviObjectTerrainRegularPolygon)
            {
                ITerrainRegularPolygonPickResult regPolygonPick = PickResult as ITerrainRegularPolygonPickResult;
                gviObjectType          type       = regPolygonPick.Type;
                ITerrainRegularPolygon regPolygon = regPolygonPick.TerrainRegularPolygon;
                MessageBox.Show("拾取到" + type + "类型,geometryCount为" + regPolygon.GetFdeGeometry().GeometryType);
            }
            else if (PickResult.Type == gviObjectType.gviObjectTerrainArrow)
            {
                ITerrainArrowPickResult arrowPickResult = PickResult as ITerrainArrowPickResult;
                gviObjectType           type            = arrowPickResult.Type;
                ITerrainArrow           arrow           = arrowPickResult.TerrainArrow;
                MessageBox.Show("拾取到" + type + "类型,geometryType" + arrow.GetFdeGeometry().GeometryType);
            }
            else if (PickResult.Type == gviObjectType.gviObjectReferencePlane)
            {
                switch (this.toolStripComboBoxObjectManager.Text)
                {
                case "CreateLabel":
                {
                    label                     = this.axRenderControl1.ObjectManager.CreateLabel(rootId);
                    label.Text                = "我是testlabel";
                    label.Position            = IntersectPoint;
                    textSymbol                = new TextSymbol();
                    textAttribute             = new TextAttribute();
                    textAttribute.TextColor   = System.Drawing.Color.Yellow;
                    textAttribute.TextSize    = 20;
                    textAttribute.Underline   = true;
                    textAttribute.Font        = "楷体";
                    textSymbol.TextAttribute  = textAttribute;
                    textSymbol.VerticalOffset = 10;
                    textSymbol.DrawLine       = true;
                    textSymbol.MarginColor    = System.Drawing.Color.Yellow;
                    label.TextSymbol          = textSymbol;
                    this.axRenderControl1.Camera.FlyToObject(label.Guid, gviActionCode.gviActionFlyTo);
                }
                break;

                case "CreateRenderModelPoint":
                {
                    if (gfactory == null)
                    {
                        gfactory = new GeometryFactory();
                    }

                    string tmpOSGPath = (strMediaPath + @"\osg\Buildings\Apartment\Apartment.osg");
                    fde_modelpoint = gfactory.CreateGeometry(gviGeometryType.gviGeometryModelPoint,
                                                             gviVertexAttribute.gviVertexAttributeZ) as IModelPoint;
                    fde_modelpoint.SetCoords(IntersectPoint.X, IntersectPoint.Y, IntersectPoint.Z, 0, 0);
                    fde_modelpoint.ModelName = tmpOSGPath;
                    rmodelpoint = this.axRenderControl1.ObjectManager.CreateRenderModelPoint(fde_modelpoint, null, rootId);
                    rmodelpoint.MaxVisibleDistance = double.MaxValue;
                    rmodelpoint.MinVisiblePixels   = 0;
                    rmodelpoint.ShowOutline        = checkShowOutline.Checked;
                    IEulerAngle angle = new EulerAngle();
                    angle.Set(0, -20, 0);
                    this.axRenderControl1.Camera.LookAt(IntersectPoint.Position, 100, angle);
                }
                break;

                case "CreateRenderPoint":
                {
                    if (gfactory == null)
                    {
                        gfactory = new GeometryFactory();
                    }

                    fde_point = (IPoint)gfactory.CreateGeometry(gviGeometryType.gviGeometryPoint,
                                                                gviVertexAttribute.gviVertexAttributeZ);
                    fde_point.SetCoords(IntersectPoint.X, IntersectPoint.Y, IntersectPoint.Z, 0, 0);

                    pointSymbol           = new SimplePointSymbol();
                    pointSymbol.FillColor = System.Drawing.Color.Red;
                    pointSymbol.Size      = 10;
                    rpoint             = this.axRenderControl1.ObjectManager.CreateRenderPoint(fde_point, pointSymbol, rootId);
                    rpoint.ShowOutline = checkShowOutline.Checked;
                    this.axRenderControl1.Camera.FlyToObject(rpoint.Guid, gviActionCode.gviActionFlyTo);
                }
                break;

                case "CreateRenderPolyline":
                {
                    if (gfactory == null)
                    {
                        gfactory = new GeometryFactory();
                    }

                    fde_polyline = (IPolyline)gfactory.CreateGeometry(gviGeometryType.gviGeometryPolyline,
                                                                      gviVertexAttribute.gviVertexAttributeZ);
                    fde_point = (IPoint)gfactory.CreateGeometry(gviGeometryType.gviGeometryPoint,
                                                                gviVertexAttribute.gviVertexAttributeZ);
                    fde_point.SetCoords(IntersectPoint.X, IntersectPoint.Y, IntersectPoint.Z, 0, 0);
                    fde_polyline.AppendPoint(fde_point);
                    fde_point.SetCoords(IntersectPoint.X + 20, IntersectPoint.Y, IntersectPoint.Z, 0, 0);
                    fde_polyline.AppendPoint(fde_point);
                    fde_point.SetCoords(IntersectPoint.X + 20, IntersectPoint.Y + 20, IntersectPoint.Z, 0, 0);
                    fde_polyline.AppendPoint(fde_point);
                    fde_point.SetCoords(IntersectPoint.X + 20, IntersectPoint.Y + 20, IntersectPoint.Z + 20, 0, 0);
                    fde_polyline.AppendPoint(fde_point);

                    lineSymbol            = new CurveSymbol();
                    lineSymbol.Color      = System.Drawing.Color.Red;     // 紫红色
                    rpolyline             = this.axRenderControl1.ObjectManager.CreateRenderPolyline(fde_polyline, lineSymbol, rootId);
                    rpolyline.ShowOutline = checkShowOutline.Checked;
                    this.axRenderControl1.Camera.FlyToObject(rpolyline.Guid, gviActionCode.gviActionFlyTo);
                }
                break;

                case "CreateRenderPolygon":
                {
                    if (gfactory == null)
                    {
                        gfactory = new GeometryFactory();
                    }

                    fde_polygon = (IPolygon)gfactory.CreateGeometry(gviGeometryType.gviGeometryPolygon,
                                                                    gviVertexAttribute.gviVertexAttributeZ);

                    fde_point = (IPoint)gfactory.CreateGeometry(gviGeometryType.gviGeometryPoint,
                                                                gviVertexAttribute.gviVertexAttributeZ);
                    fde_point.SetCoords(IntersectPoint.X, IntersectPoint.Y, IntersectPoint.Z, 0, 0);
                    fde_polygon.ExteriorRing.AppendPoint(fde_point);
                    fde_point.SetCoords(IntersectPoint.X + 10, IntersectPoint.Y, IntersectPoint.Z, 0, 0);
                    fde_polygon.ExteriorRing.AppendPoint(fde_point);
                    fde_point.SetCoords(IntersectPoint.X + 10, IntersectPoint.Y + 10, IntersectPoint.Z, 0, 0);
                    fde_polygon.ExteriorRing.AppendPoint(fde_point);
                    fde_point.SetCoords(IntersectPoint.X, IntersectPoint.Y + 10, IntersectPoint.Z, 0, 0);
                    fde_polygon.ExteriorRing.AppendPoint(fde_point);

                    surfaceSymbol        = new SurfaceSymbol();
                    surfaceSymbol.Color  = System.Drawing.Color.Blue;         // 蓝色
                    rpolygon             = this.axRenderControl1.ObjectManager.CreateRenderPolygon(fde_polygon, surfaceSymbol, rootId);
                    rpolygon.ShowOutline = checkShowOutline.Checked;
                    this.axRenderControl1.Camera.FlyToObject(rpolygon.Guid, gviActionCode.gviActionFlyTo);
                }
                break;

                case "CreateRenderPOI":
                {
                    if (gfactory == null)
                    {
                        gfactory = new GeometryFactory();
                    }

                    fde_poi = (IPOI)gfactory.CreateGeometry(gviGeometryType.gviGeometryPOI, gviVertexAttribute.gviVertexAttributeZ);
                    fde_poi.SetCoords(IntersectPoint.X, IntersectPoint.Y, IntersectPoint.Z, 0, 0);
                    fde_poi.ImageName = "#(1)";
                    fde_poi.Name      = (++poiCount).ToString();
                    fde_poi.Size      = 50;
                    rpoi             = this.axRenderControl1.ObjectManager.CreateRenderPOI(fde_poi);
                    rpoi.ShowOutline = checkShowOutline.Checked;
                    this.axRenderControl1.Camera.FlyToObject(rpoi.Guid, gviActionCode.gviActionFlyTo);
                }
                break;

                case "CreateFixedBillboard":
                {
                    TextAttribute ta = new TextAttribute();
                    ta.TextSize  = 10;
                    ta.TextColor = System.Drawing.Color.Yellow;
                    IImage image     = null;
                    IModel model     = null;
                    string imageName = "";
                    this.axRenderControl1.Utility.CreateFixedBillboard("I'm fixed billboard!", ta, 50, 100, true, out model, out image, out imageName);
                    this.axRenderControl1.ObjectManager.AddModel("fixedModel", model);
                    this.axRenderControl1.ObjectManager.AddImage(imageName, image);

                    if (gfactory == null)
                    {
                        gfactory = new GeometryFactory();
                    }
                    fde_modelpoint = gfactory.CreateGeometry(gviGeometryType.gviGeometryModelPoint,
                                                             gviVertexAttribute.gviVertexAttributeZ) as IModelPoint;
                    fde_modelpoint.SetCoords(IntersectPoint.X, IntersectPoint.Y, IntersectPoint.Z, 0, 0);
                    fde_modelpoint.ModelName = "fixedModel";
                    rmodelpoint = this.axRenderControl1.ObjectManager.CreateRenderModelPoint(fde_modelpoint, null, rootId);
                    rmodelpoint.MaxVisibleDistance = double.MaxValue;
                    rmodelpoint.MinVisiblePixels   = 0;
                    rmodelpoint.ShowOutline        = checkShowOutline.Checked;
                    IEulerAngle angle = new EulerAngle();
                    angle.Set(0, -20, 0);
                    this.axRenderControl1.Camera.LookAt(IntersectPoint.Position, 100, angle);
                }
                break;

                case "CreateRegularPolygon":
                {
                    IPosition pos = new Position();
                    pos.X        = IntersectPoint.X;
                    pos.Y        = IntersectPoint.Y;
                    pos.Altitude = IntersectPoint.Z;
                    ITerrainRegularPolygon regPolygon = this.axRenderControl1.ObjectManager.CreateRegularPolygon(pos, 10, 10, System.Drawing.Color.Red, System.Drawing.Color.White, rootId);
                    this.axRenderControl1.Camera.FlyToObject(regPolygon.Guid, gviActionCode.gviActionFlyTo);
                }
                break;

                case "CreateArrow":
                {
                    IPosition pos = new Position();
                    pos.X        = IntersectPoint.X;
                    pos.Y        = IntersectPoint.Y;
                    pos.Altitude = IntersectPoint.Z;
                    ITerrainArrow regArrow = this.axRenderControl1.ObjectManager.CreateArrow(pos, 30, 4, System.Drawing.Color.Red, System.Drawing.Color.White, rootId);
                    this.axRenderControl1.Camera.FlyToObject(regArrow.Guid, gviActionCode.gviActionFlyTo);
                }
                break;
                }
            }
        }