private void initPrjPier(CRailwayProject rp) { mls1.Images.Clear(); listView1.Items.Clear(); if (rp is CContBeam) { int i = 0; CContBeam cb = rp as CContBeam; foreach (CRailwayPier p in cb.mPierList) { mls1.Images.Add(CGeneralHelpers.generate2DCode(@"http://jqmis.cn/S/" + p.mSerialNo)); ListViewItem lvi = new ListViewItem(); lvi.Text = p.DWName + "#墩"; lvi.Font = defaultFont; lvi.ImageIndex = i++; listView1.Items.Add(lvi); } listView1.View = View.LargeIcon; listView1.LargeImageList = mls1; } listView1.Size = new Size(175 * listView1.Items.Count, 200); listView1.Location = new Point((panel1.Width - listView1.Width) / 2, listView1.Location.Y); }
private void polylineMiddleLine(CRailwayProject rw, IColor66 lineColor, SGWorld66 sgworld, string branch) { ITerrainPolyline66 polyline; //double[] x, y, z, dir; double[] mArray; int count = rw.getSubLine(out mArray); //mSceneData.mMiddleLines.getSubLineByDKCode(rw.Mileage_Start_Discription, rw.Mileage_End_Discription, 10, out x, out y, out z, out dir); //double[] mArray = new double[count * 3]; //for (int i = 0; i < count; i++) //{ // mArray[3 * i] = x[i]; // mArray[3 * i + 1] = y[i]; // mArray[3 * i + 2] = z[i] + 1; //} if (count > 1) { polyline = sgworld.Creator.CreatePolylineFromArray(mArray, lineColor, AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE, branch, rw.ProjectName); polyline.Spline = true; polyline.Visibility.MaxVisibilityDistance = 10000000; polyline.Visibility.MinVisibilityDistance = 1000; polyline.LineStyle.Width = -5.0; polyline.Visibility.Show = true; } }
public bool initPrjDetail(CRailwayProject rp) { if (rp == null) { return(false); } if (rp == this.propertyGridEx1.Tag) { return(false); } propertyGridEx1.Tag = rp; propertyGridEx1.SelectedObject = rp; if (rp.FXProgress.Count >= 3) { showOneFX(propertyGridEx2, rp.FXProgress[rp.selectedFXid[0]], 0); showOneFX(propertyGridEx3, rp.FXProgress[rp.selectedFXid[1]], 1); showOneFX(propertyGridEx4, rp.FXProgress[rp.selectedFXid[2]], 2); } initPrjPier(rp); mImageUrl = rp.mPhotoUrl; //initPrjPhoto(rp); return(true); }
private void dgvRoad_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) { CRailwayProject p = null; string sname = (sender as DevComponents.DotNetBar.Controls.DataGridViewX).Name; switch (sname) { case "dgvRoad": p = dgvRoad.Rows[e.RowIndex].Tag as CRailwayProject; break; case "dgvBridge": p = dgvBridge.Rows[e.RowIndex].Tag as CRailwayProject; break; case "dgvTunnel": p = dgvTunnel.Rows[e.RowIndex].Tag as CRailwayProject; break; case "dgvStation": p = dgvStation.Rows[e.RowIndex].Tag as CRailwayProject; break; case "dgvOther": p = dgvOther.Rows[e.RowIndex].Tag as CRailwayProject; break; default: return; } sgworld.Navigate.FlyTo(sgworld.Creator.CreatePosition(p.mLongitude_Mid, p.mLatitude_Mid, 0, AltitudeTypeCode.ATC_TERRAIN_RELATIVE, 0, -65.0, 0, 1500)); }
private void draw_RoadFX(Graphics myGraphics, CRailwayProject road, float winHeight, float winWidth, Matrix pm, float scaleX, float unitM = 100) { //float sy = prjStartY + 25; //float unitPixelLength = unitM * scaleX; //Pen p = defaultPen; draw_PrjFX(myGraphics, road, "路", winHeight, winWidth, pm, scaleX, true, unitM); }
public CTEObject showTEObject(CHotSpot hs1, CHotSpot hs2, bool isStopping = false) { CTEObject obj = null; switch (hs1.ObjectType) { case "Project": CRailwayProject rp = (CRailwayProject)(hs1.ObjectRef); //string s = "当前位置: " + rp.ToString() + "\t\t"; //labelRoll2.Text = s; //labelRoll2.Refresh(); obj = showTEProject(rp, isStopping); break; case "Firm": CRailwayFirm rf = (CRailwayFirm)(hs1.ObjectRef); obj = showTEFirms(rf, isStopping); break; case "Cons": ConsLocation cl = (ConsLocation)(hs1.ObjectRef); obj = showTECons(cl, isStopping); break; } return(obj); }
public void setProject(CRailwayProject rp) { if (rp == null || rp == this.propertyGridEx1.Tag || !(rp is CRailwayProject)) { return; } mProject = rp; this.Text = rp.ProjectName; if (!string.IsNullOrEmpty(rp.mPhotoUrl)) { mImageUrl = @"http://" + CGisDataSettings.gCurrentProject.projectUrl + rp.mPhotoUrl; webBrowser1.Navigate(mImageUrl); } else { mImageUrl = null; } propertyGridEx1.Tag = rp; propertyGridEx1.SelectedObject = rp; if (rp.FXProgress.Count >= 3) { showOneFX(propertyGridEx2, rp.FXProgress[rp.selectedFXid[0]], 0); showOneFX(propertyGridEx3, rp.FXProgress[rp.selectedFXid[1]], 1); showOneFX(propertyGridEx4, rp.FXProgress[rp.selectedFXid[2]], 2); } initPrjPier(rp); }
public static CRailwayProject findProjectByCoor(double x, double y) { CRailwayProject p = null; double meters; meters = mMiddleLine.findMeterbyCoor(x, y); p = findProjectByMeter(meters); return(p); }
private void dgvRoad_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) { CRailwayProject p = null; if (e.RowIndex < 0) { return; } string sname = (sender as DevComponents.DotNetBar.Controls.DataGridViewX).Name; switch (sname) { case "dgvRoad": p = dgvRoad.Rows[e.RowIndex].Tag as CRailwayProject; break; case "dgvBridge": p = dgvBridge.Rows[e.RowIndex].Tag as CRailwayProject; break; case "dgvTunnel": p = dgvTunnel.Rows[e.RowIndex].Tag as CRailwayProject; break; case "dgvConsBeam": p = dgvConsBeam.Rows[e.RowIndex].Tag as CRailwayProject; break; case "dgvOther": p = dgvOther.Rows[e.RowIndex].Tag as CRailwayProject; break; default: return; } // http://railmis.imwork.net/jqmis/webservice/ProjectService.asmx sgworld.Navigate.FlyTo(sgworld.Creator.CreatePosition(p.CenterLongitude, p.CenterLatitude, 0, AltitudeTypeCode.ATC_TERRAIN_RELATIVE, 0, -35.0, 0, 800)); string urlstr = "http://" + CGisDataSettings.gCurrentProject.projectUrl + "/APP/ProjectMng.aspx?f=detail&shownav=1&sn=" + p.mSerialNo + "&uacc=" + CGisDataSettings.gCurrentProject.userName + "&upwd=" + CGisDataSettings.gCurrentProject.userPSD;//&showtab=1 //ProjectService.ProjectServiceSoapClient ws = new ProjectService.ProjectServiceSoapClient(); //Console.WriteLine(p.mProjectName + ws.ws_Get_ProjectProgressRate(p.mSerialNo)); //DataTable dt; //dt = ws.ws_Bind_ProjectProgress_HistoryRate_DataTable(p.mSerialNo); //foreach (DataRow dr in dt.Rows) //{ // Console.WriteLine((string)dr["Date"] + "\t" + (double)dr["Rate"]); //} advPropertyGrid1.SelectedObject = p; pnlTrain.Expanded = true; //mainContainer.Panel2Collapsed = false; //webBrowser1.Navigate(urlstr); }
private void panel1_MouseClick(object sender, MouseEventArgs e) { if (PanelSelectClicked != null) { //int fxid; CRailwayProject p = null; CRailwayDWProj dwp = null; getGlobalPos(panel1.Size.Width, mileageCenter, mileageViewRadius, e.X, e.Y, out p, out dwp); PanelSelectClicked(p, dwp); } }
private void addItem(string s1, string s2, int s3, CRailwayProject p, DataGridView dgv) { DataGridViewRow dr = new DataGridViewRow(); foreach (DataGridViewColumn c in dgv.Columns) { dr.Cells.Add(c.CellTemplate.Clone() as DataGridViewCell); } dr.Cells[0].Value = s1; dr.Cells[1].Value = s2; dr.Cells[2].Value = s3; //dr.Cells[3].Value = s4; dr.Tag = p; dgv.Rows.Add(dr); }
private void dgvRoad_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) { CRailwayProject p = null; if (e.RowIndex < 0) { return; } string sname = (sender as DevComponents.DotNetBar.Controls.DataGridViewX).Name; switch (sname) { case "dgvRoad": p = dgvRoad.Rows[e.RowIndex].Tag as CRailwayProject; break; case "dgvBridge": p = dgvBridge.Rows[e.RowIndex].Tag as CRailwayProject; break; case "dgvTunnel": p = dgvTunnel.Rows[e.RowIndex].Tag as CRailwayProject; break; case "dgvConsBeam": p = dgvConsBeam.Rows[e.RowIndex].Tag as CRailwayProject; break; case "dgvOther": //p = dgvOther.Rows[e.RowIndex].Tag as CRailwayProject; break; default: return; } //if (GlobalVar.gCurrentPro != null && GlobalVar.gCurrentPro.mPolyline != null) //{ // GlobalVar.gCurrentPro.mPolyline.Visibility.Show = false; //} ////if (p.mPolyline != null) //// p.mPolyline.Visibility.Show = true; //GlobalVar.gCurrentPro = p; //sgworld.Navigate.FlyTo(sgworld.Creator.CreatePosition(p.mLongitude_Mid, p.mLatitude_Mid, 0, AltitudeTypeCode.ATC_TERRAIN_RELATIVE, p.mDirection + 90, -35.0, 0, 800)); sgworld.Navigate.FlyTo(sgworld.Creator.CreatePosition(p.CenterLongitude, p.CenterLatitude, 0, AltitudeTypeCode.ATC_TERRAIN_RELATIVE, 0, -35.0, 0, 800)); advPropertyGrid1.SelectedObject = p; }
private void showProjectProgress(CRailwayProject item) { if (item.mMileage_End - item.mMileage_Start > 15) { double[] x; double[] y; double[] z; int pointNum = CRailwayScene.mMiddleLine.getSubLine(item.mMileage_Start, item.mMileage_End, 1, out x, out y, out z); if (pointNum > 1) { double[] cVerticesArray = new double[pointNum * 3]; int i; for (i = 0; i < pointNum; i++) { cVerticesArray[3 * i] = x[i]; cVerticesArray[3 * i + 1] = y[i]; cVerticesArray[3 * i + 2] = 20; } try { var sgworld = new SGWorld66(); var branch = sgworld.ProjectTree.FindItem("MiddleLine"); int r, g, b; HslToRgb(10, 1 - item.mAvgProgress, 1, out r, out g, out b); item.mPolyline = sgworld.Creator.CreatePolylineFromArray(cVerticesArray, sgworld.Creator.CreateColor(r, g, b, 255), AltitudeTypeCode.ATC_TERRAIN_RELATIVE, branch, "Middle Line" + item.mProjectName); item.mPolyline.Visibility.MinVisibilityDistance = 1250; item.mPolyline.Spline = true; item.mPolyline.LineStyle.Width = -5; //item.mPolyline. } catch (Exception ex) { Console.WriteLine("Creation Failed" + item.mProjectName); } } } }
private CTEObject showTEProject(CRailwayProject rp, bool isStopping = false) { CTEProject tp = mTEProjList.Find( delegate(CTEProject tpp) { return(tpp.proj == rp); }); //findTEProject(rp); if (tp != null) { //double x, y, z, d; //tp.proj.getSpecialPoint(1, out x, out y, out z, out d); //CTEPointNav.showPoint(sgworld, x, y, z, d); if (isStopping) // && prjInfoForm.ws == WorkingStatus.Working { prjInfoForm.interruptShow(); } else { prjInfoForm.setProject(rp); prjInfoForm.preShow(); } } return(tp); }
public static CRailwayProject findProjectByMeter(double meter) { meter /= 1000.0; CRailwayProject p2 = null; foreach (CRailwayProject p in mProjectList) { if (meter >= p.mMileage_Start & meter <= p.mMileage_End) { if (p2 == null) { p2 = p; } else { p2 = Math.Abs(p2.mMileage_Mid - meter) > Math.Abs(p.mMileage_Mid - meter) ? p : p2; } //break; } } return(p2); }
private void dgvRoad_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) { CRailwayProject p = null; string sname = (sender as DevComponents.DotNetBar.Controls.DataGridViewX).Name; switch (sname) { case "dgvRoad": p = dgvRoad.Rows[e.RowIndex].Tag as CRailwayProject; break; case "dgvBridge": p = dgvBridge.Rows[e.RowIndex].Tag as CRailwayProject; break; case "dgvTunnel": p = dgvTunnel.Rows[e.RowIndex].Tag as CRailwayProject; break; case "dgvStation": p = dgvStation.Rows[e.RowIndex].Tag as CRailwayProject; break; case "dgvOther": p = dgvOther.Rows[e.RowIndex].Tag as CRailwayProject; break; default: return; } sgworld.Navigate.FlyTo(sgworld.Creator.CreatePosition(p.mLongitude_Mid, p.mLatitude_Mid, 0, AltitudeTypeCode.ATC_TERRAIN_RELATIVE, 0, -65.0, 0, 1500)); string urlstr = "http://" + GlobalVar.gUserIP + "/MNMIS/APP/ProjectMng.aspx?f=detail&sn=" + p.mSerialNo + "&uacc=" + GlobalVar.gUserName + "&upwd=" + GlobalVar.gUserPWD; mainContainer.Panel2Collapsed = false; webBrowser1.Navigate(urlstr); }
private void draw_ContBeam(Graphics myGraphics, CRailwayProject bridge, float winHeight, float winWidth, Matrix pm, float scaleX, float unitM = 8) { if (bridge.mPierList.Count < 2) {// FIXME xu //Console.WriteLine("连续梁无桥墩错误" + bridge.ProjectName); return; } float sy = prjStartY + 25; float unitPixelLength = unitM * scaleX; Pen p = defaultPen; if (draw_PrjFX(myGraphics, bridge, "连", winHeight, winWidth, pm, scaleX, false, unitM)) { try { PointF[] pls = new PointF[bridge.mPierList.Count]; CRailwayDWProj[] dwls = new CRailwayDWProj[bridge.mPierList.Count]; int ii = 0; foreach (CRailwayDWProj dwp in bridge.mPierList) { if (dwp.mIsValid) { pls[ii] = new PointF((float)dwp.mMainMileage, 0); dwls[ii] = dwp; ii++; } } pm.TransformPoints(pls); //List<int> tls = new List<int> { 4, 2, 4 }; for (int j = 0; j < ii; j++) { if (pls[j].X <0 || pls[j].X> winWidth) { continue; } drawOnePier(myGraphics, pls[j].X, sy + 10, unitPixelLength, (CRailwayPier)dwls[j]); // 绘制连续墩的梁 int beamCount; if (j + 1 < ii && ((CRailwayPier)dwls[j + 1]).mBeamDone.Count > 0)// 0号墩台和最后一个墩台不会向两边架梁,n+1个墩,n个梁 { beamCount = ((CRailwayPier)dwls[j + 1]).mBeamDone.Count; float w = pls[j + 1].X - pls[j].X; float uw = w / beamCount; float ssx = pls[j].X; for (int i = 0; i < beamCount; i++) { if (((CRailwayPier)dwls[j + 1]).mBeamDone[i]) { p = redPen; } else { p = defaultPen; } myGraphics.DrawRectangle(p, ssx, sy, uw, 10); ssx += uw; } } myGraphics.DrawString(dwls[j].DWName, defaultFont, Brushes.Black, pls[j].X - unitPixelLength, sy + 70); } } catch (Exception e) { Console.WriteLine(bridge.ProjectName + "绘制异常,连续梁"); } //myGraphics.DrawRectangle(Pens.Black, pls[j].X, sy, pls[j + 1].X - pls[j].X - 1, 10); } }
private void getGlobalPos(float panelwidth, double centerMileage, double radiusMileage, int mx, int my, out CRailwayProject prj, out CRailwayDWProj dwp) { //float titleHeight = 30; //float scaleX; float height = 60; prj = null; dwp = null; Pen p = new Pen(Color.Black, 2); p.StartCap = LineCap.RoundAnchor; p.EndCap = LineCap.RoundAnchor; //Matrix m = getTransM((float)centerMileage, (float)radiusMileage, width, out scaleX, 50); Matrix im = getInvTransM((float)centerMileage, (float)radiusMileage, panelwidth, 50); PointF[] sd = { new PointF(0, 0) }; // 窗口 sd[0].X = mx; sd[0].Y = my; im.TransformPoints(sd); int FXindex = (int)(sd[0].Y / height * 3); //Console.WriteLine("Click x=" + mx + " y= " + my + "\t global mileage = " + sd[0].X + " FXindex =" + FXindex); if (FXindex >= 2) { dwp = mRWScene.GetPierByMileage(sd[0].X); //if (rp == null) // return; //skinAnimator1.WaitAllAnimations(); //skinAnimator1.Hide(advPropertyGrid1); //pictureBox2.Image = generate2DCode(@"http://jqmis.cn/S/" + rp.mSerialNo); //advPropertyGrid1.SelectedObject = rp; //showProjectDetail(rp); //skinAnimator1.WaitAllAnimations(); //skinAnimator1.Show(advPropertyGrid1); } if (dwp == null) { prj = mRWScene.GetProjectByMileage(sd[0].X); //if (rp == null) //skinAnimator1.WaitAllAnimations(); //skinAnimator1.Hide(advPropertyGrid1); //pictureBox2.Image = generate2DCode(@"http://jqmis.cn/S/" + rp.mSerialNo); //advPropertyGrid1.SelectedObject = rp; //skinAnimator1.WaitAllAnimations(); //skinAnimator1.Show(advPropertyGrid1); } //gRWScene.GetAllNavPathbyMileage //return sd[0].X; }
private void draw_BridgeFX(Graphics myGraphics, CRailwayProject bridge, float winHeight, float winWidth, Matrix pm, float scaleX, float unitM = 8) { float sy = prjStartY + 25; float unitPixelLength = unitM * scaleX; Pen p = defaultPen; if (draw_PrjFX(myGraphics, bridge, "桥", winHeight, winWidth, pm, scaleX, false, unitM)) { try { // 绘制桥墩 if (bridge.mPierList != null && bridge.mPierList.Count > 0) { PointF[] pls = new PointF[bridge.mPierList.Count]; CRailwayDWProj[] dwls = new CRailwayDWProj[bridge.mPierList.Count]; int ii = 0; foreach (CRailwayDWProj dwp in bridge.mPierList) // 遍历里程合法的桥墩 { if (dwp.mIsValid) { pls[ii] = new PointF((float)dwp.mMainMileage, 0); dwls[ii] = dwp; ii++; } } pm.TransformPoints(pls); List <int> tls = new List <int> { 4, 4 }; for (int j = 0; j < ii; j++) { if (pls[j].X <0 || pls[j].X> winWidth) { continue; } drawOnePier(myGraphics, pls[j].X, sy + 10, unitPixelLength, (CRailwayPier)dwls[j]); myGraphics.DrawString(dwls[j].DWName, defaultFont, Brushes.Black, pls[j].X - unitPixelLength, sy + 70); } } //绘制梁 if (bridge.mBeamList != null && bridge.mBeamList.Count > 0) { PointF[] pls = new PointF[bridge.mBeamList.Count]; PointF[] ple = new PointF[bridge.mBeamList.Count]; CRailwayDWProj[] dwls = new CRailwayDWProj[bridge.mBeamList.Count]; int ii = 0; foreach (CRailwayDWProj dwp in bridge.mBeamList) // 遍历里程合法的梁 { if (dwp.mIsValid) { pls[ii] = new PointF((float)dwp.mMainMileage, 0); ple[ii] = new PointF((float)(dwp.mMainMileage + dwp.mLength), 0); dwls[ii] = dwp; ii++; } } pm.TransformPoints(pls); pm.TransformPoints(ple); for (int j = 0; j < ii; j++) { if (pls[j].X <0 || pls[j].X> winWidth) { continue; } if (dwls[j].mIsDone) { p = redPen; } else { p = defaultPen; } if (j + 1 < ii) { myGraphics.DrawRectangle(p, pls[j].X, sy, Math.Abs(pls[j + 1].X - pls[j].X), 10); } else { myGraphics.DrawRectangle(p, pls[j].X, sy, Math.Abs(ple[j].X - pls[j].X), 10); } //myGraphics.DrawString(dwls[j].DWName, defaultFont, Brushes.Black, pls[j].X - unitPixelLength, sy + 70); } } } catch (Exception e) { Console.WriteLine(bridge.ProjectName + "绘制异常,桥梁"); } } //myGraphics.DrawRectangle(Pens.Black, pls[j].X, sy, pls[j + 1].X - pls[j].X - 1, 10); }
private void loadProjectsFromDB() { #region init Items OleDbConnection conn = null; OleDbDataAdapter myCommand = null; DataSet ds = null; string ProjectSQL; string projectName, professionalName; string projectCatCode; //double meters = 0; CRailwayProject sItem = null; GlobalVar.useLocalDB = true; try { if (!GlobalVar.useLocalDB) { ProjectSQL = @"SELECT SerialNo,ShorName,ProfessionalName, " + @"ProjectName,ProjectName_en_us ,ProfessionalCategoryCode, Mileage_Start, Mileage_End," + @"UpdateTime, avgProgress, direction FROM vw_ProjectInfo WHERE ProfessionalCategoryCode like '-1-42-%'" + @"OR ProfessionalCategoryCode like '-1-43-%' OR ProfessionalCategoryCode like '-1-87-%';"; conn = new OleDbConnection(GlobalVar.gConnectStr); conn.Open(); myCommand = new OleDbDataAdapter(ProjectSQL, conn); ds = new DataSet(); myCommand.Fill(ds, "table1"); } }catch (Exception ex) { Console.WriteLine(ex.Message.ToString()); MessageBox.Show("Can't Connect Server, use local database instead. "); GlobalVar.useLocalDB = true; } try { if (GlobalVar.useLocalDB) { ProjectSQL = @"SELECT SerialNo,ShorName,ProfessionalName, " + @"ProjectName,ProjectName_en_us ,ProfessionalCategoryCode, Mileage_Start, Mileage_End," + @"UpdateTime, avgProgress, direction FROM vw_ProjectInfo WHERE ProfessionalCategoryCode like '-1-42-%'" + @"OR ProfessionalCategoryCode like '-1-43-%' OR ProfessionalCategoryCode like '-1-87-%';"; string fileName = GlobalVar.gDataPath + @"mn\vw_ProjectInfo.xlsx"; string strConn; if (System.IO.Path.GetExtension(fileName) == ".xls") { strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\""; } else { strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\""; } conn = new OleDbConnection(strConn); conn.Open(); myCommand = new OleDbDataAdapter(ProjectSQL, conn); ds = new DataSet(); myCommand.Fill(ds, "table1"); } int count = ds.Tables["table1"].Rows.Count; mProjectList = new List <CRailwayProject>(count); mStationList = new List <CRailwayProject>(); mBridgeList = new List <CRailwayProject>(); mRoadList = new List <CRailwayProject>(); mTunnelList = new List <CRailwayProject>(); mOtherList = new List <CRailwayProject>(); foreach (DataRow dataReader in ds.Tables["table1"].Rows) { try { projectCatCode = (string)dataReader["ProfessionalCategoryCode"]; projectName = (string)dataReader["ProjectName_en_us"]; if (projectName == null || projectName == "") { projectName = (string)dataReader["ProjectName"]; } professionalName = (string)dataReader["ProfessionalName"]; // 统一以米为单位 if (!GlobalVar.useLocalDB) { sItem = new CRailwayProject((string)dataReader["SerialNo"], professionalName, projectName, (string)dataReader["ShorName"], Decimal.ToDouble((decimal)dataReader["Mileage_Start"]) * 1000, Decimal.ToDouble((decimal)dataReader["Mileage_End"]) * 1000, (DateTime)dataReader["UpdateTime"], Decimal.ToDouble((decimal)dataReader["avgProgress"]), Decimal.ToDouble((decimal)dataReader["direction"])); } else { sItem = new CRailwayProject((string)dataReader["SerialNo"], professionalName, projectName, (string)dataReader["ShorName"], (double)dataReader["Mileage_Start"] * 1000, (double)dataReader["Mileage_End"] * 1000, (DateTime)dataReader["UpdateTime"], (double)dataReader["avgProgress"], (double)dataReader["direction"]); } mProjectList.Add(sItem); if (projectCatCode.StartsWith("-1-42-26-")) { mBridgeList.Add(sItem); } else if (projectCatCode.StartsWith("-1-42-28-")) { mRoadList.Add(sItem); } else if (projectCatCode.StartsWith("-1-42-74-")) { mTunnelList.Add(sItem); } else if (projectCatCode.StartsWith("-1-43-33-")) { mStationList.Add(sItem); } else { mOtherList.Add(sItem); } }//(string)dataReader["UpdateTime"], catch (System.Exception ex) { Console.WriteLine((string)dataReader["ProjectName"] + " invalid"); } } //System.Console.WriteLine("readok"); } catch (Exception ex) { Console.WriteLine(ex.Message.ToString()); } finally { //dataReader.Close(); conn.Close(); } #endregion }
/// <summary> /// 绘制分项工程进度 /// </summary> /// <param name="myGraphics"></param> /// <param name="tunnel"></param> /// <param name="winHeight"> 隧道绘制宽度(像素),一般60</param> /// <param name="winWidth">窗口panel的宽度(像素),包围盒,用于判断是否该图形越界</param> /// <param name="pm">变换矩阵</param> /// <param name="scaleX">x方向上 里程长度 * scaleX = 像素长度</param> /// <param name="unitM">单位里程(米)</param> private bool draw_PrjFX(Graphics myGraphics, CRailwayProject prj, string prjType, float winHeight, float winWidth, Matrix pm, float scaleX, bool fxOnly = true, float unitM = 8) { bool needDrawDetails = false; float prjLength = (float)prj.Length; float prjPixelLength = prjLength * scaleX; float done; bool isReverse = prj.mMileage_End < prj.mMileage_Start; float sx, ex; if (isReverse) { sx = (float)prj.mMainMileageE; ex = (float)prj.mMainMileageS; } else { sx = (float)prj.mMainMileageS; ex = (float)prj.mMainMileageE; } PointF[] sd = { new PointF(0, 100), new PointF(0, 100) }; // 窗口 sd[0].X = (float)sx; sd[1].X = (float)ex; pm.TransformPoints(sd); if (sd[1].X <0 || sd[0].X> winWidth) // 如果桥梁不在绘制区域,返回false,也不需要绘制细节 { return(needDrawDetails); } float unitPixelLength = unitM * scaleX; float startPixelX = sd[0].X; float endPixelX = sd[1].X; float actualPixelS = Math.Max(startPixelX, 0); float actualPixelE = Math.Min(endPixelX, winWidth); // 屏幕内的起始终止位置 float unitHeight = (winHeight / 3); Pen p = defaultPen; RectangleF areaf; float sy = prjStartY + 25; // 1、绘制左右边界,上方线,以及工程名 areaf = new RectangleF(actualPixelS, prjStartY, actualPixelE - actualPixelS, 20); if (prj.mAvgProgress > 0) { myGraphics.DrawLine(p, endPixelX, prjStartY, endPixelX, prjEndY); myGraphics.DrawLine(p, startPixelX, 47, endPixelX, 47); myGraphics.DrawLine(p, startPixelX, prjStartY, startPixelX, prjEndY); if (areaf.Width > 200) { if (isReverse) { myGraphics.DrawString("<<< " + prj.ProjectName, defaultFont, Brushes.Black, areaf, centerFormat); } else { myGraphics.DrawString(prj.ProjectName + ">>>", defaultFont, Brushes.Black, areaf, centerFormat); } } else if (areaf.Width > 20) { myGraphics.DrawString(prjType, defaultFont, Brushes.Black, areaf, centerFormat); } } // 如果8米对应3个像素以内,逐条绘制分项工程 if (fxOnly || unitPixelLength < 4) { if (!(prj.FXProgress == null || prj.FXProgress.Count == 0)) { for (int i = 0; i < 3; i++) //road.FXProgress.Count, FIXME 选3项绘制 { int sIndex = prj.selectedFXid[i]; if (sIndex < 0) { continue; } CFXProj proj = prj.FXProgress[sIndex]; int lastIndex = proj.doneAmount.Count - 1; done = (float)(proj.doneAmount[lastIndex] / proj.TotalAmount); //areaf = new RectangleF(sx, sy, tunnelLength, unitHeight); myGraphics.DrawRectangle(Pens.Black, startPixelX, sy, prjPixelLength, unitHeight); if (isReverse) { myGraphics.FillRectangle(notDoneB, startPixelX, sy + 1, prjPixelLength * (1 - done), unitHeight - 2); myGraphics.FillRectangle(backBrush[i], startPixelX + prjPixelLength * (1 - done) + 1, sy + 1, prjPixelLength * done, unitHeight - 2); } else { myGraphics.FillRectangle(backBrush[i], startPixelX, sy + 1, prjPixelLength * done, unitHeight - 2); myGraphics.FillRectangle(notDoneB, startPixelX + prjPixelLength * done + 1, sy + 1, prjPixelLength * (1 - done), unitHeight - 2); } areaf = new RectangleF(actualPixelS, sy, actualPixelE - actualPixelS, unitHeight); if (areaf.Width > 100) { myGraphics.DrawString(Math.Round(done, 3) * 100 + "%", defaultFont, Brushes.Black, areaf, centerFormat); } sy += unitHeight; } } return(false); } needDrawDetails = true; return(needDrawDetails); }
public CTEProject(CRailwayProject p, CRailwayScene s, CTEScene ss) : base(s, ss) { proj = p; if (!proj.mIsValid) { return; } double lat, lon, z, dir; //double cx, cy; sgworld = new SGWorld66(); double[] cVerticesArray = null; //double[] cVA2 = null; int count; proj.getSpecialPoint(1, out lon, out lat, out z, out dir); //double[] xx,yy,zz,ddir; //CoordinateConverter.LatLonOffest(lat, lon, dir, 90, 20, out cy, out cx); var cPos2 = sgworld.Creator.CreatePosition(lon, lat, 0, AltitudeTypeCode.ATC_TERRAIN_RELATIVE, 0, -75, 0, 2000); //sgworld.Creator.CreateCircle(cPos2, 140, sgworld.Creator.CreateColor(127, 127, 127, 127), sgworld.Creator.CreateColor(127, 127, 127, 127), mGroupIDStatic); labelSign = sgworld.Creator.CreateTextLabel(cPos2, proj.ProjectName, CRWTEStandard.mLabelStyleL3, mGroupIDDynamic, "Prj|" + proj.ProjectName); //ilabel.Message = sgworld.Creator.CreateMessage(); labelSign.ImageFileName = CGisDataSettings.gDataPath + @"Common\progress\Pie" + proj.AvgProgress + ".png"; labelSign.Visibility.MaxVisibilityDistance = 20000; labelSign.Style.LineToGround = true; //labelSign.Message.MessageID = sgworld.Creator.CreateMessage(MsgTargetPosition.MTP_POPUP, proj.ToString(), MsgType.TYPE_TEXT, true).ID; if (proj.mAvgProgress < 0.01) { return; } //count = proj.getSubLine(out cVerticesArray); double[] xx, yy, zz; count = proj.getMiddleLine(out xx, out yy, out zz); cVerticesArray = getVerArray(xx, yy, zz); //proj.getMiddleLine(out cVA2); if (count > 1) { polylineDone = sgworld.Creator.CreatePolylineFromArray(cVerticesArray, sgworld.Creator.CreateColor((int)(255 * proj.mAvgProgress), (int)(255 - 255 * proj.mAvgProgress), 0, 255), AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE, mGroupIDDynamic, "Done" + proj.ProjectName); //sgworld.Creator.CreatePolylineFromArray(cVA2, sgworld.Creator.CreateColor((int)(255 ), (int)(255 ), 255, 255), // AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE, mGroupIDDynamic, "Middle" + proj.ProjectName); polylineDone.Spline = true; polylineDone.Visibility.MaxVisibilityDistance = 10000000; polylineDone.Visibility.MinVisibilityDistance = 100000; if (proj is CContBeam) { polylineDone.LineStyle.Width = -5; } else { polylineDone.LineStyle.Width = -2; } } //count = proj.getSubLine(out cVerticesArray); //polylineTodo = sgworld.Creator.CreatePolylineFromArray(cVerticesArray, sgworld.Creator.CreateColor(255, 255, 0, 255), // AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE, mGroupIDDynamic, "ToDo" + proj.ProjectName); //polylineTodo.Spline = true; //polylineTodo.Visibility.MaxVisibilityDistance = 10000000; //polylineTodo.Visibility.MinVisibilityDistance = 10; //polylineTodo.LineStyle.Width = -2; }
private void polylineMiddleLine(CRailwayProject rw, SGWorld66 sgworld, string branch, Dictionary <string, double> m) { ITerrainPolyline66 polyline1; ITerrainPolyline66 polyline2; ITerrainPolyline66 polyline3; ITerrainPolyline66 polyline4; IColor66 lineColor1 = sgworld.Creator.CreateColor(242, 174, 17, 255); IColor66 lineColor2 = sgworld.Creator.CreateColor(32, 183, 81, 255); IColor66 lineColor3 = sgworld.Creator.CreateColor(183, 9, 9, 255); IColor66 lineColor4 = sgworld.Creator.CreateColor(50, 50, 50, 255); double[] x, y, z, dir; int count = mSceneData.mMiddleLines.getSubLineByDKCode(rw.Mileage_Start_Discription, rw.Mileage_End_Discription, 10, out x, out y, out z, out dir); double[] mArray1 = new double[count * 3]; double[] mArray2 = new double[count * 3]; double[] mArray3 = new double[count * 3]; double[] mArray4 = new double[count * 3]; for (int i = 0; i < count; i++) { mArray1[3 * i] = x[i]; mArray1[3 * i + 1] = y[i]; mArray1[3 * i + 2] = z[i] + 10; mArray2[3 * i] = x[i]; mArray2[3 * i + 1] = y[i]; mArray2[3 * i + 2] = z[i] + 20; mArray3[3 * i] = x[i]; mArray3[3 * i + 1] = y[i]; mArray3[3 * i + 2] = z[i] + 30; mArray4[3 * i] = x[i]; mArray4[3 * i + 1] = y[i]; mArray4[3 * i + 2] = z[i] + 40; } if (m.Count >= 4) { KeyValuePair <string, double> kvp = m.ElementAt(0); polyline1 = sgworld.Creator.CreatePolylineFromArray(mArray1, lineColor1, AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE, branch, rw.ProjectName + "-" + kvp.Key); polyline1.Spline = true; polyline1.Visibility.MaxVisibilityDistance = 10000000; polyline1.Visibility.MinVisibilityDistance = 150; polyline1.LineStyle.Width = 50.0; polyline1.Visibility.Show = true; polyline1.LineStyle.Color.SetAlpha(kvp.Value); kvp = m.ElementAt(1); polyline2 = sgworld.Creator.CreatePolylineFromArray(mArray2, lineColor2, AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE, branch, rw.ProjectName + "-" + kvp.Key); polyline2.Spline = true; polyline2.Visibility.MaxVisibilityDistance = 10000000; polyline2.Visibility.MinVisibilityDistance = 150; polyline2.LineStyle.Width = 30.0; polyline2.Visibility.Show = true; polyline2.LineStyle.Color.SetAlpha(kvp.Value); kvp = m.ElementAt(2); polyline3 = sgworld.Creator.CreatePolylineFromArray(mArray3, lineColor3, AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE, branch, rw.ProjectName + "-" + kvp.Key); polyline3.Spline = true; polyline3.Visibility.MaxVisibilityDistance = 10000000; polyline3.Visibility.MinVisibilityDistance = 150; polyline3.LineStyle.Width = 15.0; polyline3.Visibility.Show = true; polyline3.LineStyle.Color.SetAlpha(kvp.Value); kvp = m.ElementAt(3); polyline4 = sgworld.Creator.CreatePolylineFromArray(mArray4, lineColor4, AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE, branch, rw.ProjectName + "-" + kvp.Key); polyline4.Spline = true; polyline4.Visibility.MaxVisibilityDistance = 10000000; polyline4.Visibility.MinVisibilityDistance = 150; polyline4.LineStyle.Width = 5; polyline4.Visibility.Show = true; polyline4.LineStyle.Color.SetAlpha(kvp.Value); } }