示例#1
0
 public override void RcMouseClickSelect(object sender, Gvitech.CityMaker.Controls._IRenderControlEvents_RcMouseClickSelectEvent e)
 {
     if (e.eventSender == gviMouseSelectMode.gviMouseSelectClick)
     {
         this.MousePickup(e.pickResult, e.mask);
     }
 }
示例#2
0
 public override void RcMouseClickSelect(object sender, Gvitech.CityMaker.Controls._IRenderControlEvents_RcMouseClickSelectEvent e)
 {
     if (e.intersectPoint == null || e.pickResult == null || e.pickResult.Type != Gvitech.CityMaker.RenderControl.gviObjectType.gviObjectFeatureLayer)
     {
         return;
     }
     ShowFlowDirect(e.pickResult as IFeatureLayerPickResult);
 }
示例#3
0
 private void _3DControl_RcMouseClickSelect(object sender, Gvitech.CityMaker.Controls._IRenderControlEvents_RcMouseClickSelectEvent e)
 {
     if (e.intersectPoint != null && e.pickResult != null && e.pickResult.Type == gviObjectType.gviObjectFeatureLayer)
     {
         this._onStartDraw();
         if (this._curSelectedFL != null)
         {
             this._curSelectedFL.UnhighlightFeature(this._curSelectedID);
         }
         if (this._hoverFL != null)
         {
             this._hoverFL.UnhighlightFeature(this._hoverID);
         }
         IFeatureLayerPickResult pr = e.pickResult as IFeatureLayerPickResult;
         int featureID = pr.FeatureId;
         pr.FeatureLayer.HighlightFeature(featureID, this._hightlightColor);
         this._curSelectedFL = pr.FeatureLayer;
         this._curSelectedID = pr.FeatureId;
         this._selectFeatureLayerPickResult = pr;
         this._selectPoint = e.intersectPoint;
         this._onFinishedDraw();
     }
 }
示例#4
0
文件: MainForm.cs 项目: batuZ/Samples
        void axRenderControl1_RcMouseClickSelect(object sender, Gvitech.CityMaker.Controls._IRenderControlEvents_RcMouseClickSelectEvent e)
        {
            if (e.pickResult.Type == gviObjectType.gviObjectLabel)
            {
                ILabelPickResult tlpr = e.pickResult as ILabelPickResult;
                gviObjectType    type = tlpr.Type;
                ILabel           fl   = tlpr.Label;
                MessageBox.Show("拾取到" + type + "类型,内容为" + fl.Text);
            }
            else if (e.pickResult.Type == gviObjectType.gviObjectRenderModelPoint)
            {
                IRenderModelPointPickResult tlpr = e.pickResult as IRenderModelPointPickResult;
                gviObjectType     type           = tlpr.Type;
                IRenderModelPoint fl             = tlpr.ModelPoint;
                MessageBox.Show("拾取到" + type + "类型,模型名称为" + fl.ModelName);
            }
            else if (e.pickResult.Type == gviObjectType.gviObjectRenderPoint)
            {
                IRenderPointPickResult tlpr = e.pickResult as IRenderPointPickResult;
                gviObjectType          type = tlpr.Type;
                IRenderPoint           fl   = tlpr.Point;
                MessageBox.Show("拾取到" + type + "类型,大小为" + fl.Symbol.Size);
            }
            else if (e.pickResult.Type == gviObjectType.gviObjectRenderPolyline)
            {
                IRenderPolylinePickResult tlpr = e.pickResult as IRenderPolylinePickResult;
                gviObjectType             type = tlpr.Type;
                IRenderPolyline           fl   = tlpr.Polyline;
                MessageBox.Show("拾取到" + type + "类型,GUID为" + fl.Guid);
            }
            else if (e.pickResult.Type == gviObjectType.gviObjectRenderPolygon)
            {
                IRenderPolygonPickResult tlpr = e.pickResult as IRenderPolygonPickResult;
                gviObjectType            type = tlpr.Type;
                IRenderPolygon           fl   = tlpr.Polygon;
                MessageBox.Show("拾取到" + type + "类型,GUID为" + fl.Guid);
            }
            else if (e.pickResult.Type == gviObjectType.gviObjectRenderPOI)
            {
                IRenderPOIPickResult tlpr = e.pickResult as IRenderPOIPickResult;
                gviObjectType        type = tlpr.Type;
                IRenderPOI           fl   = tlpr.POI;
                MessageBox.Show("拾取到" + type + "类型,名称为" + ((IPOI)fl.GetFdeGeometry()).Name);
            }
            else if (e.pickResult.Type == gviObjectType.gviObjectReferencePlane)
            {
                //ta = new TextAttribute();
                ta.TextSize = Convert.ToInt32(this.toolstripFontSize.Text.ToString());
                //  ta.TextColor = olec;
                IImage image     = null;
                IModel model     = null;
                string imageName = "";
                this.axRenderControl1.Utility.CreateFixedBillboard(label.Text, 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 GeometryFactoryClass();
                }
                fde_modelpoint = gfactory.CreateGeometry(gviGeometryType.gviGeometryModelPoint,
                                                         gviVertexAttribute.gviVertexAttributeZ) as IModelPoint;
                fde_modelpoint.SetCoords(e.intersectPoint.X, e.intersectPoint.Y, e.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(e.intersectPoint.Position, 100, angle);
            }
        }
示例#5
0
        private void _3DControl_RcMouseClickSelect(object sender, Gvitech.CityMaker.Controls._IRenderControlEvents_RcMouseClickSelectEvent e)
        {
            try
            {
                if (e.intersectPoint != null)
                {
                    IPoint pt1 = this._geoFactory.CreateGeometry(gviGeometryType.gviGeometryPoint, gviVertexAttribute.gviVertexAttributeZ) as IPoint;
                    pt1.X = e.intersectPoint.X;
                    pt1.Y = e.intersectPoint.Y;
                    pt1.Z = e.intersectPoint.Z;
                    if (e.eventSender == gviMouseSelectMode.gviMouseSelectClick)
                    {
                        if (!this._isStarted)
                        {
                            this.Close();
                            if (this._onStartDraw != null)
                            {
                                this._onStartDraw();
                            }
                            if (_polyline != null)
                            {
                                _polyline = null;
                            }
                            startPoint = pt1;
                            double radius = 0.0000001;
                            this._geo             = (startPoint as ITopologicalOperator2D).Buffer2D(radius, gviBufferStyle.gviBufferCapround);
                            _rPolygon             = this._3DControl.ObjectManager.CreateRenderPolygon(this._geo as IPolygon, this._surfaceSymbol, this._rootID);
                            _rPolygon.HeightStyle = this._heightStyle;

                            this._3DControl.HighlightHelper.SetRegion(this._geo);
                            this._3DControl.HighlightHelper.VisibleMask = 1;

                            _polyline = this._geoFactory.CreateGeometry(gviGeometryType.gviGeometryPolyline, gviVertexAttribute.gviVertexAttributeZ) as IPolyline;
                            _polyline.AppendPoint(pt1);
                            IPoint pt2 = pt1.Clone() as IPoint;
                            pt2.X += 0.000001;
                            _polyline.AppendPoint(pt2);
                            _rPolyline      = this._3DControl.ObjectManager.CreateRenderPolyline(_polyline, this._curveSymbol, this._3DControl.ProjectTree.RootID);
                            _label          = this._3DControl.ObjectManager.CreateLabel(this._3DControl.ProjectTree.RootID);
                            _label.Position = _polyline.Midpoint;
                            _label.Text     = _polyline.Length.ToString("0.00") + " 米";
                            ITextSymbol   ts = new TextSymbolClass();
                            TextAttribute ta = new TextAttribute();
                            ta.TextColor      = Convert.ToUInt32(SystemInfo.Instance.TextColor, 16);
                            ta.TextSize       = SystemInfo.Instance.TextSize;
                            ts.TextAttribute  = ta;
                            _label.TextSymbol = ts;
                            this._isStarted   = true;
                            this._isFinished  = false;
                        }
                        else
                        {
                            //this.End();
                            this._isStarted  = false;
                            this._isFinished = true;

                            _polyline.UpdatePoint(1, pt1);
                            _rPolyline.SetFdeGeometry(_polyline);

                            _label.Position = _polyline.Midpoint;
                            _label.Text     = _polyline.Length.ToString("0.00") + " 米";


                            double radius = Math.Sqrt((startPoint.X - pt1.X) * (startPoint.X - pt1.X)
                                                      + (startPoint.Y - pt1.Y) * (startPoint.Y - pt1.Y) + (startPoint.Z - pt1.Z) * (startPoint.Z - pt1.Z));
                            this._geo = (startPoint as ITopologicalOperator2D).Buffer2D(radius, gviBufferStyle.gviBufferCapround);
                            _rPolygon.SetFdeGeometry(this._geo);
                            this._3DControl.HighlightHelper.SetRegion(this._geo);
                            this._geo = this._geo.Clone2(gviVertexAttribute.gviVertexAttributeNone);
                            if (this._onFinishedDraw != null)
                            {
                                this._onFinishedDraw();
                            }
                        }
                    }
                    else if (e.eventSender == gviMouseSelectMode.gviMouseSelectMove)
                    {
                        if (_rPoint != null)
                        {
                            this._objectManager.DeleteObject(_rPoint.Guid);
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(_rPoint);
                            _rPoint = null;
                        }
                        _rPoint = this._objectManager.CreateRenderPoint(pt1, this._simplePointSymbol, this._rootID);
                        if (this._isStarted)
                        {
                            _polyline.UpdatePoint(1, pt1);
                            _rPolyline.SetFdeGeometry(_polyline);

                            _label.Position = _polyline.Midpoint;
                            _label.Text     = _polyline.Length.ToString("0.00") + " 米";

                            double radius = Math.Sqrt((startPoint.X - pt1.X) * (startPoint.X - pt1.X)
                                                      + (startPoint.Y - pt1.Y) * (startPoint.Y - pt1.Y) + (startPoint.Z - pt1.Z) * (startPoint.Z - pt1.Z));
                            this._geo = (startPoint as ITopologicalOperator2D).Buffer2D(radius, gviBufferStyle.gviBufferCapround);
                            _rPolygon.SetFdeGeometry(this._geo);
                            this._3DControl.HighlightHelper.SetRegion(this._geo);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LoggingService.Error(ex.Message + "\r\n" + ex.StackTrace);
            }
        }
示例#6
0
        private void AxRenderControl3D_RcMouseClickSelect(object sender, Gvitech.CityMaker.Controls._IRenderControlEvents_RcMouseClickSelectEvent e)
        {
            IFdeCursor cursor = null;
            IRowBuffer row    = null;

            try
            {
                IPickResult pr = e.pickResult;
                if (pr.Type == gviObjectType.gviObjectFeatureLayer && pr is IFeatureLayerPickResult)
                {
                    IFeatureLayerPickResult flpr = pr as IFeatureLayerPickResult;
                    int           oid            = flpr.FeatureId;
                    IFeatureLayer fl             = flpr.FeatureLayer;
                    if (this._dictFeatureClass.ContainsKey(fl.FeatureClassId))
                    {
                        IFeatureClass fc = this._dictFeatureClass[fl.FeatureClassId];
                        if (fc == null)
                        {
                            return;
                        }
                        IQueryFilter filter = new QueryFilter();
                        filter.WhereClause = "oid = " + oid;
                        cursor             = fc.Search(filter, true);
                        IFieldInfoCollection        fiCol = fc.GetFields();
                        Dictionary <string, string> dict  = new Dictionary <string, string>();
                        if ((row = cursor.NextRow()) != null)
                        {
                            for (int i = 0; i < fiCol.Count; i++)
                            {
                                IFieldInfo fi  = fiCol.Get(i);
                                object     obj = row.GetValue(i);
                                if (obj == null)
                                {
                                    continue;
                                }
                                string str = "";
                                switch (fi.FieldType)
                                {
                                case gviFieldType.gviFieldBlob:
                                case gviFieldType.gviFieldUnknown:
                                case gviFieldType.gviFieldGeometry:
                                    break;

                                case gviFieldType.gviFieldFloat:
                                case gviFieldType.gviFieldDouble:
                                    double d;
                                    if (double.TryParse(obj.ToString(), out d))
                                    {
                                        str = d.ToString("0.00");
                                    }
                                    break;

                                default:
                                    str = obj.ToString();
                                    break;
                                }
                                if (!string.IsNullOrEmpty(str.Trim()))
                                {
                                    string temp = fi.Name + "(" + fi.Alias + ")";
                                    dict[temp] = str;
                                }
                            }
                        }
                        #region
                        ITableLabel tl = DrawTool.CreateTableLabel2(dict.Count);
                        tl.TitleText = "属性查询";
                        int num = 0;
                        foreach (KeyValuePair <string, string> kv in dict)
                        {
                            string k = kv.Key;
                            string v = kv.Value;
                            tl.SetRecord(num, 0, k);
                            tl.SetRecord(num, 1, v);
                            num++;
                        }
                        tl.Position = e.intersectPoint;
                        allTLGuid.Add(tl.Guid);
                        #endregion
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }
        private void _3DControl_RcMouseClickSelect(object sender, Gvitech.CityMaker.Controls._IRenderControlEvents_RcMouseClickSelectEvent e)
        {
            try
            {
                if (e.intersectPoint != null)
                {
                    IPoint pt1 = this._geoFactory.CreateGeometry(gviGeometryType.gviGeometryPoint, gviVertexAttribute.gviVertexAttributeZ) as IPoint;
                    pt1.X = e.intersectPoint.X;
                    pt1.Y = e.intersectPoint.Y;
                    pt1.Z = e.intersectPoint.Z;
                    if (e.eventSender == gviMouseSelectMode.gviMouseSelectClick)
                    {
                        if (!this._isStarted)
                        {
                            this.Close();
                            if (this._onStartDraw != null)
                            {
                                this._onStartDraw();
                            }
                            IPoint pt2 = pt1.Clone() as IPoint;
                            pt2.Y -= 0.0015;
                            IPoint pt3 = pt1.Clone() as IPoint;
                            pt3.X += 0.0015;
                            pt3.Y -= 0.0015;
                            IPoint pt4 = pt1.Clone() as IPoint;
                            pt4.X        += 0.0015;
                            this._polygon = this._geoFactory.CreateGeometry(gviGeometryType.gviGeometryPolygon, gviVertexAttribute.gviVertexAttributeZ) as IPolygon;
                            this._polygon.ExteriorRing.AppendPoint(pt1);
                            this._polygon.ExteriorRing.AppendPoint(pt2);
                            this._polygon.ExteriorRing.AppendPoint(pt3);
                            this._polygon.ExteriorRing.AppendPoint(pt4);
                            ISurfaceSymbol ss = new SurfaceSymbolClass();
                            ss.Color = Convert.ToUInt32(SystemInfo.Instance.FillColor, 16);
                            ICurveSymbol cs = new CurveSymbolClass();
                            cs.Color              = Convert.ToUInt32(SystemInfo.Instance.LineColor, 16);
                            ss.BoundarySymbol     = cs;
                            _rPolygon             = this._3DControl.ObjectManager.CreateRenderPolygon(this._polygon, ss, this._3DControl.ProjectTree.RootID);
                            _rPolygon.HeightStyle = this._heightStyle;

                            this._isStarted  = true;
                            this._isFinished = false;
                        }
                        else
                        {
                            //this.End();
                            this._isStarted  = false;
                            this._isFinished = true;
                            IPoint startPt = this._polygon.ExteriorRing.GetPoint(0);
                            IPoint pt2     = startPt.Clone() as IPoint;
                            //IEulerAngle ang = this._3DControl.Camera.GetAimingAngles2(startPt, pt2);
                            //this._3DControl.Camera.GetAimingPoint2()

                            pt2.Y = pt1.Y;
                            this._polygon.ExteriorRing.UpdatePoint(1, pt2);
                            this._polygon.ExteriorRing.UpdatePoint(2, pt1);
                            IPoint pt4 = startPt.Clone() as IPoint;
                            pt4.X = pt1.X;
                            this._polygon.ExteriorRing.UpdatePoint(3, pt4);
                            this._rPolygon.SetFdeGeometry(this._polygon);
                            this._geo = this._polygon;
                            if (this._onFinishedDraw != null)
                            {
                                this._onFinishedDraw();
                            }
                        }
                    }
                    else if (e.eventSender == gviMouseSelectMode.gviMouseSelectMove)
                    {
                        if (_rPoint != null)
                        {
                            this._objectManager.DeleteObject(_rPoint.Guid);
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(_rPoint);
                            _rPoint = null;
                        }
                        _rPoint = this._objectManager.CreateRenderPoint(pt1, this._simplePointSymbol, this._rootID);
                        if (this._isStarted)
                        {
                            IPoint startPt = this._polygon.ExteriorRing.GetPoint(0);
                            IPoint pt2     = startPt.Clone() as IPoint;
                            pt2.Y = pt1.Y;
                            this._polygon.ExteriorRing.UpdatePoint(1, pt2);
                            this._polygon.ExteriorRing.UpdatePoint(2, pt1);
                            IPoint pt4 = startPt.Clone() as IPoint;
                            pt4.X = pt1.X;
                            this._polygon.ExteriorRing.UpdatePoint(3, pt4);
                            this._rPolygon.SetFdeGeometry(this._polygon);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LoggingService.Error(ex.Message + "\r\n" + ex.StackTrace);
            }
        }