private void SetRedoCamera() { if (base.RedoCamera != null && base.RedoCamera.IsCameraChanged) { RenderControlServices.Instance().SetCamera(base.RedoCamera.X, base.RedoCamera.Y, base.RedoCamera.Z, base.RedoCamera.Heading, base.RedoCamera.Tilt, base.RedoCamera.Roll); } }
public override void Run(object sender, EventArgs e) { //获取axRenderControl AxRenderControl axRenderControl = RenderControlServices.Instance().AxRenderControl; axRenderControl.Camera.FlyToObject(Guid.Empty, gviActionCode.gviActionFlyTo); }
public void Clear() { if (this._drawTool != null) { this._drawTool.Close(); } foreach (ITerrainLabel65 label in _listLabel) { RenderControlServices.Instance().SGWorld.Creator.DeleteObject(label.ID); System.Runtime.InteropServices.Marshal.ReleaseComObject(label); } _listLabel.Clear(); }
public override void Run(object sender, System.EventArgs e) { MainFrmService.EscEvent += new EscHandler(RestoreEnv); CommandManager.Push(this); RenderControlServices.Instance().Clear(); _listLabel = new List <ITerrainLabel65>(); this._drawTool = DrawToolServices.Instance().CreateDrawTool(DrawType.Line); if (this._drawTool != null) { this._drawTool.OnStartDraw += new OnStartDraw(this.OnStartDraw); this._drawTool.OnFinishedDraw += new OnFinishedDraw(this.OnFinishedDraw); this._drawTool.Start(); } }
public InterPointInfo() { color = RenderControlServices.Instance().SGWorld.Creator.CreateColor(); }
private void HorizontalSectionAnalysis() { ILineString line = this._drawTool.GetGeo2D() as ILineString; if (line.Length > _maxLength) { XtraMessageBox.Show(string.Format("断面长度不超过{0}米!", _maxLength), "提示"); return; } ICoord2D startCoord = null; if (line.Points.Count == 2) { IPoint startPt = line.StartPoint; startCoord = RenderControlServices.Instance().CovertCoord(startPt.X, startPt.Y); } else { return; } WaitForm.Start("正在进行横断面分析...", "请稍后", false); List <InterPointInfo> listInter = new List <InterPointInfo>(); foreach (Layer l in WorkSpaceServices.Instance().PipeLineLayers) { if (!l.Show && l.ShpLayer == null) { continue; } l.ShowShp = true; Field fDiameter = WorkSpaceServices.Instance().GetFieldBySysField(l, SystemField.PIPELINE_DIAMETER[1]); Field fClassify = WorkSpaceServices.Instance().GetFieldBySysField(l, SystemField.CLASSIFY[1]); Field fMaterial = WorkSpaceServices.Instance().GetFieldBySysField(l, SystemField.MATERIAL[1]); Field fHlb = WorkSpaceServices.Instance().GetFieldBySysField(l, SystemField.HLB[1]); if (fDiameter == null || fMaterial == null || fHlb == null) { continue; } IFeatures65 fs = l.ShpLayer.ExecuteSpatialQuery(line, IntersectionType.IT_INTERSECT); for (int i = 0; i < fs.Count; i++) { IFeature65 f = fs[i] as IFeature65; IGeometry geo = f.Geometry; IGeometry inter = line.SpatialOperator.Intersection(geo);// 平面相交 if (inter.GeometryType == SGGeometryTypeId.SG_POINT) { IPoint pt = inter as IPoint; ICoord2D coordInter = RenderControlServices.Instance().CovertCoord(pt.X, pt.Y); double height = 0.0; if (geo.GeometryType == SGGeometryTypeId.SG_LINESTRING) { ILineString geoLine = geo as ILineString; if (geoLine.Points.Count == 2) { double startPtH = geoLine.StartPoint.Z; double endPtH = geoLine.EndPoint.Z; ICoord2D sc = RenderControlServices.Instance().CovertCoord(geoLine.StartPoint.X, geoLine.StartPoint.Y); ICoord2D ec = RenderControlServices.Instance().CovertCoord(geoLine.EndPoint.X, geoLine.EndPoint.Y); height = GetInterectPointHeight(sc, startPtH, ec, endPtH, coordInter); } else { continue; } } IWorldPointInfo65 wpi = RenderControlServices.Instance().SGWorld.Terrain.GetGroundHeightInfo(pt.X, pt.Y, AccuracyLevel.ACCURACY_NORMAL, false); InterPointInfo interPtInfo = new InterPointInfo(); interPtInfo.pt = pt; interPtInfo.terrainHeight = wpi.Position.Altitude; interPtInfo.height = height; interPtInfo.coordInter = coordInter; interPtInfo.distance = Math.Sqrt((coordInter.X - startCoord.X) * (coordInter.X - startCoord.X) + (coordInter.Y - startCoord.Y) * (coordInter.Y - startCoord.Y)); interPtInfo.color.abgrColor = Convert.ToUInt32(l.ShpLayer.FeatureGroups.Polyline.GetProperty("Line Color").ToString()); interPtInfo.layerName = l.Name; interPtInfo.diameter = f.FeatureAttributes.GetFeatureAttribute(fDiameter.Name).Value; interPtInfo.classify = f.FeatureAttributes.GetFeatureAttribute(fClassify.Name).Value; interPtInfo.material = f.FeatureAttributes.GetFeatureAttribute(fMaterial.Name).Value; interPtInfo.hlb = f.FeatureAttributes.GetFeatureAttribute(fHlb.Name).Value; listInter.Add(interPtInfo); } } l.ShowShp = false; } WaitForm.Stop(); if (listInter.Count > 0) { listInter.Sort(new ComparerInterPointInfo()); for (int i = 0; i < listInter.Count; i++) { InterPointInfo info = listInter[i]; info.no = (i + 1); if (info.no > 1) { info.interHDist = info.distance - listInter[i - 1].distance; } IPosition65 pos = RenderControlServices.Instance().SGWorld.Creator.CreatePosition(info.pt.X, info.pt.Y); ILabelStyle65 lStyle = RenderControlServices.Instance().SGWorld.Creator.CreateLabelStyle(); lStyle.TextColor = info.color; lStyle.FontSize = 10; lStyle.MaxViewingHeight = 1000; ITerrainLabel65 label = RenderControlServices.Instance().SGWorld.Creator.CreateTextLabel(pos, info.no.ToString(), lStyle); label.Visibility.MaxVisibilityDistance = 1000; this._listLabel.Add(label); } DrawHorizontalSection(listInter); } }