public override void RcMouseClickSelect(object sender, Gvitech.CityMaker.Controls._IRenderControlEvents_RcMouseClickSelectEvent e) { if (e.eventSender == gviMouseSelectMode.gviMouseSelectClick) { this.MousePickup(e.pickResult, e.mask); } }
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); }
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(); } }
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); } }
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); } }
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); } }