Пример #1
0
 private void MoveJLBItem_Click(object sender, EventArgs e)
 {
     try
     {
         var isLock = DBEntityFinder.Instance.VerifyLTTID(detail_fid);
         if (!isLock)
         {
             PublicMethod.Instance.AlertDialog("详图没有被工单锁定,不能迁移计量表!");
             Show();
             return;
         }
         var movept = dddMap.screen2geo(mouseLocation.X, mouseLocation.Y);
         var detail =
             DBManager.Instance.GetEntities <Detailreference_n>(
                 o => o.G3E_FID == detail_fid && o.EntityState != EntityState.Delete).FirstOrDefault();
         if (detail != null)
         {
             if (detail.G3E_DETAILID == null)
             {
                 return;
             }
             var tt  = new JLBMove((long)detail.G3E_DETAILID, movept);
             var res = Application.ShowModalDialog(tt);
             if (res == DialogResult.OK)
             {
                 // 加一个计量表,刷新窗口
                 var pb = new JlbPB();
                 pb.Height   = picWheight;
                 pb.Width    = picWwidth;
                 pb.Location = new System.Drawing.Point((int)mouseLocation.X - picWwidth / 2,
                                                        (int)mouseLocation.Y - picWheight / 2);
                 if (tt.SBLX == "高供高计")
                 {
                     pb.Image = imageList1.Images[0];
                 }
                 else
                 {
                     pb.Image = imageList1.Images[1];
                 }
                 pb.Tag = tt.g3e_Fid;
                 pb.ContextMenuStrip  = contextMenuStrip2;
                 pb.JlbPBPosition     = new Point3d(movept[1], movept[0], 0);
                 pb.JlbPBFid          = tt.g3e_Fid;
                 pb.JlbSBLX           = tt.SBLX;
                 pb.SizeMode          = PictureBoxSizeMode.StretchImage;
                 pb.MouseDoubleClick += pb_MouseDoubleClick;
                 pb.MouseDown        += pb_MouseDown;
                 pb.MouseHover       += pb_MouseHover;
                 pb.MouseUp          += pb_MouseUp;
                 pb.MouseMove        += pb_MouseMove;
                 pbs.Add(pb);
                 Controls.Add(pb);
             }
         }
     }
     catch (Exception ex)
     {
         LogManager.Instance.Error(ex);
     }
 }
Пример #2
0
 private void AddJLBItem_Click(object sender, EventArgs e)
 {
     try
     {
         if (DBEntityFinder.Instance.VerifyLTTID(detail_fid) == false)
         {
             PublicMethod.Instance.AlertDialog("设备没有被工单锁定,不能新增计量表!");
             Show();
             return;
         }
         var mi = sender as ToolStripMenuItem;
         if (mi != null)
         {
             var tshbgeo = dddMap.screen2geo(mouseLocation.X, mouseLocation.Y);
             var isLock  = DBEntityFinder.Instance.VerifyLTTID(detail_fid);
             var tt      = new JLBEditer(formType.regionAdd, detail_fid, tshbgeo, isLock)
             {
                 Tag = mi.Text
             };
             if (DialogResult.OK == tt.ShowDialog())
             {
                 // 加一个计量表,刷新窗口
                 var pb = new JlbPB();
                 pb.Height   = picWheight;
                 pb.Width    = picWwidth;
                 pb.Location = new System.Drawing.Point((int)mouseLocation.X - picWwidth / 2,
                                                        (int)mouseLocation.Y - picWheight / 2);
                 if (tt.SBLX == "高供高计")
                 {
                     pb.Image = imageList1.Images[0];
                 }
                 else
                 {
                     pb.Image = imageList1.Images[1];
                 }
                 pb.Tag = tt.g_newFid;
                 pb.ContextMenuStrip  = contextMenuStrip2;
                 pb.JlbPBPosition     = new Point3d(tshbgeo[1], tshbgeo[0], 0);
                 pb.JlbPBFid          = tt.g_newFid;
                 pb.JlbSBLX           = tt.SBLX;
                 pb.SizeMode          = PictureBoxSizeMode.StretchImage;
                 pb.MouseDoubleClick += pb_MouseDoubleClick;
                 pb.MouseDown        += pb_MouseDown;
                 pb.MouseHover       += pb_MouseHover;
                 pb.MouseUp          += pb_MouseUp;
                 pb.MouseMove        += pb_MouseMove;
                 pbs.Add(pb);
                 Controls.Add(pb);
             }
         }
     }
     catch (Exception ex)
     {
         PublicMethod.Instance.AlertDialog(ex.Message);
     }
 }
Пример #3
0
        private void JLBMap_Load(object sender, EventArgs e)
        {
            bMove = false;
            double min_x = 0;
            double min_y = 0;
            double max_x = 0;
            double max_y = 0;

            #region 计算出它的外围矩形。

            var jlbs = GetJLB_NS();
            if (jlbs != null)
            {
                pdjlbs = jlbs.ToList();
                List <double> allx = new List <double>();
                List <double> ally = new List <double>();


                foreach (var jlb in jlbs)
                {
                    var jlb1   = jlb;
                    var shbsdo =
                        DBManager.Instance.GetEntities <Gg_jx_jlb_pt_sdogeom>(
                            o => jlb1 != null && (o.G3E_FID == jlb1.G3E_FID && o.EntityState != EntityState.Delete))
                        .FirstOrDefault();
                    if (shbsdo == null)
                    {
                        PublicMethod.Instance.ShowMessage("没有设备 " + jlb1.G3E_FID + " 对应的坐标数据,请联系数据管理人员。\n");
                        continue;
                    }
                    var multipoint = shbsdo.G3E_GEOMETRY as Multipoint;
                    if (multipoint == null)
                    {
                        continue;
                    }
                    var pt = new Point3d(multipoint.Points[0].X,
                                         multipoint.Points[0].Y, 0);
                    allx.Add(pt.X);
                    ally.Add(pt.Y);
                }
                if (allx.Count > 0)
                {
                    min_x = allx.Min();
                    max_x = allx.Max();
                }
                if (ally.Count > 0)
                {
                    min_y = ally.Min();
                    max_y = ally.Max();
                }
            }

            //2 当没有没有设备时候,以沿布图坐标为中心点,上下加减250米
            Multipoint vcbxpoint;
            if (detail_fno == 148)
            {
                var vcbx = DBManager.Instance.GetEntities <Gg_pd_zfbyq_pt_sdogeom>(o => o.G3E_FID == detail_fid).First();
                vcbxpoint = vcbx.G3E_GEOMETRY as Multipoint;
            }
            else
            {
                var vcbx = DBManager.Instance.GetEntities <Gg_pd_cjlg_pt_sdogeom>(o => o.G3E_FID == detail_fid).First();
                vcbxpoint = vcbx.G3E_GEOMETRY as Multipoint;
            }
            double dx = 5 / DMap.DD;
            double dy = dx;
            if (min_x == 0 || max_x == 0 || min_y == 0 || max_x == 0)
            {
                //vcbxpoint = vcbx.G3E_GEOMETRY as Multipoint;
                if (vcbxpoint != null)
                {
                    min_y = vcbxpoint.Points[0].Y - dy;
                    min_x = vcbxpoint.Points[0].X - dy;
                    max_y = vcbxpoint.Points[0].Y + dy;
                    max_x = vcbxpoint.Points[0].X + dy;
                }
            }

            if ((max_x - min_x) / (max_y - min_y) > 3)
            {
                min_y = max_y - (max_x - min_x);
            }
            else if ((max_y - min_y) / (max_x - min_x) > 3)
            {
                max_x = min_x + (max_y - min_y);
            }


            if (min_x == max_x) // 当设备只有一个,或者成一直线时
            {
                min_x -= dx;
                max_x += dx;
            }
            else // 放大
            {
                var t = (max_x - min_x) / 4;
                min_x -= t;
                max_x += t;
            }
            if (min_y == max_y)
            {
                min_y -= dy;
                max_y += dy;
            }
            else
            {
                var t = (max_y - min_y) / 4;
                min_y -= t;
                max_y += t;
            }

            #endregion

            wWidth  = this.ClientSize.Width;
            wHeight = this.ClientSize.Height;

            dddMap.createDmap(min_x, max_x, min_y, max_y, wWidth, wHeight);

            if (jlbs != null)
            {
                pdjlbs = jlbs.ToList();
            }
            List <int> xindex = new List <int>();
            List <int> yindex = new List <int>();
            foreach (var shb in pdjlbs)
            {
                var      pt = GetPtFromGg_jx_jlb_pt_sdogeom(shb.G3E_FID);
                double[] xy = dddMap.geo2screen(pt.Y, pt.X);

                xindex.Add((int)xy[0]);
                yindex.Add((int)xy[0]);
            }
            int xcount = 0, ycount = 0;
            int i = 0;
            for (i = 0; i < xindex.Count - 1; i++)
            {
                if (Math.Floor((double)(xindex[i] - xindex[i + 1])) < 8)
                {
                    xcount++;
                }
            }
            if (xindex.Count >= 2)
            {
                if (Math.Floor((double)(xindex[i - 1] - xindex[i])) < 8)
                {
                    xcount++;
                }
            }
            for (i = 0; i < yindex.Count - 1; i++)
            {
                if (Math.Floor((double)(yindex[i] - yindex[i + 1])) < 10)
                {
                    ycount++;
                }
            }
            if (yindex.Count >= 2)
            {
                if (Math.Floor((double)(yindex[i - 1] - yindex[i])) < 10)
                {
                    ycount++;
                }
            }

            if (xcount > wWidth / 16)
            {
                xcount = (int)(wWidth * 0.75 / xcount);
            }
            else
            {
                xcount = 16;
            }
            if (ycount > wHeight / 16)
            {
                ycount = (int)(wHeight * 0.75 / ycount);
            }
            else
            {
                ycount = 16;
            }

            picMapWidth  = ((double)xcount / wWidth) * (dddMap.ScreenMapMaxX - dddMap.ScreenMapMinX);
            picMapHeight = (double)ycount / wHeight * (dddMap.ScreenMapMaxY - dddMap.ScreenMapMinY_In);

            picWwidth  = (int)(picMapWidth / (dddMap.ScreenMapMaxX - dddMap.ScreenMapMinX) * wWidth);
            picWheight = (int)(picMapHeight / (dddMap.ScreenMapMaxY - dddMap.ScreenMapMinY_In) * wHeight);

            #region 初始化低压户表

            foreach (var jlb in pdjlbs)
            {
                var      pt = GetPtFromGg_jx_jlb_pt_sdogeom(jlb.G3E_FID);
                double[] xy = dddMap.geo2screen(pt.Y, pt.X);

                var pb = new JlbPB();
                pb.Height   = picWheight;
                pb.Width    = picWwidth;
                pb.Location = new System.Drawing.Point((int)xy[0] - xcount / 2, (int)xy[1] - ycount / 2);
                pb.Image    = imageList1.Images[0];
                if (jlb.CD_SBLX == "高供高计")
                {
                    pb.Image = imageList1.Images[0];
                    if (search_fid == jlb.G3E_FID)
                    {
                        pb.Image = imageList1.Images[2];
                    }
                }
                else
                {
                    pb.Image = imageList1.Images[1];
                    if (search_fid == jlb.G3E_FID)
                    {
                        pb.Image = imageList1.Images[3];
                    }
                }

                pb.Tag = jlb.G3E_FID;
                pb.ContextMenuStrip  = contextMenuStrip2;
                pb.JlbPBPosition     = pt;
                pb.JlbPBFid          = jlb.G3E_FID;
                pb.JlbSBLX           = jlb.CD_SBLX;
                pb.SizeMode          = PictureBoxSizeMode.StretchImage;
                pb.MouseDoubleClick += pb_MouseDoubleClick;
                pb.MouseDown        += pb_MouseDown;
                pb.MouseHover       += pb_MouseHover;
                pb.MouseUp          += pb_MouseUp;
                pb.MouseMove        += pb_MouseMove;
                pbs.Add(pb);
                Controls.Add(pb);
            }

            #endregion

            drawBackImg();
        }