public static Location.TModel.Location.AreaAndDev.PhysicalTopology ToTModel(
            this DbModel.Location.AreaAndDev.Area item1)
        {
            if (item1 == null)
            {
                return(null);
            }
            var item2 = new Location.TModel.Location.AreaAndDev.PhysicalTopology();

            item2.Id       = item1.Id;
            item2.Name     = item1.Name;
            item2.ParentId = item1.ParentId;
            //item2.Parent = item1.Parent;
            item2.Number   = item1.Number;
            item2.Type     = item1.Type;
            item2.Describe = item1.Describe;
            //item2.Tag = item1.Tag;
            item2.Children  = item1.Children.ToTModel();
            item2.LeafNodes = item1.LeafNodes.ToTModel();
            item2.KKS       = item1.KKS;

            item2.TransfromId = item1.Id;
            item2.Transfrom   = item1.GetTransformM().ToTModel();

            item2.InitBoundId = item1.InitBoundId;
            item2.InitBound   = item1.InitBound.ToTModel();
            item2.EditBoundId = item1.EditBoundId;
            //item2.EditBound = item1.EditBound.ToTModel();//这个没用 不用传递

            item2.IsRelative         = item1.IsRelative;
            item2.IsCreateAreaByData = item1.IsCreateAreaByData;
            item2.IsOnAlarmArea      = item1.IsOnAlarmArea;
            item2.IsOnLocationArea   = item1.IsOnLocationArea;
            return(item2);
        }
Example #2
0
 private void Win_AreaModified(TEntity area)
 {
     ShowInfo(area);
     if (AreaModified != null)
     {
         AreaModified(area);
     }
 }
Example #3
0
        public void ShowArea(AreaEntity area, List <bus_anchor_switch_area> switchAreas = null)
        {
            try
            {
                _switchAreas             = switchAreas;
                CurrentArea              = area;
                CbView.SelectionChanged -= CbView_OnSelectionChanged;
                CbView.SelectionChanged += CbView_OnSelectionChanged;
                if (area == null)
                {
                    return;
                }
                if (area.IsPark()) //电厂
                {
                    SelectedArea = area;
                    int scale = 3;
                    DevSize = 3;

                    Clear();

                    DrawPark(area, scale, DevSize);

                    InitCbScale(scale);
                    InitCbDevSize(new double[] { 0.5, 1, 2, 3, 4, 5 }, DevSize);
                    //ShowPersons(area.Persons);

                    ShowSwitchArea(area, switchAreas, scale);
                }
                else if (area.Type == AreaTypes.楼层)
                {
                    //GetSettingFunc = null;
                    SelectedArea = area;
                    int scale = 20;
                    DevSize = 0.4;
                    DrawFloor(area, scale, DevSize);
                    InitCbScale(scale);
                    InitCbDevSize(new double[] { 0.1, 0.2, 0.3, 0.4, 0.5, 0.6 }, DevSize);
                    //ShowPersons(area.Persons);
                }
                else if (area.Type == AreaTypes.分组)
                {
                    SelectAreas(area.Children);
                }
                else
                {
                    SelectArea(area);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
Example #4
0
        public void ShowInfo(TEntity item)
        {
            _item = item;
            PropertyGrid1.SelectedObject = null;
            PropertyGrid1.SelectedObject = _item;

            if (item.Parent != null)
            {
                this.Title = item.Parent.Name + "->" + item.Name;
            }
            else
            {
                this.Title = item.Name;
            }
        }
Example #5
0
        public static DbModel.Location.AreaAndDev.Area ToDbModel(
            this Location.TModel.Location.AreaAndDev.PhysicalTopology item1)
        {
            if (item1 == null)
            {
                return(null);
            }
            var item2 = new DbModel.Location.AreaAndDev.Area();

            item2.Id = item1.Id;
            //item2.Abutment_Id = item1.Abutment_Id;
            item2.Name     = item1.Name;
            item2.KKS      = item1.KKS;
            item2.ParentId = item1.ParentId;
            //item2.Abutment_ParentId = item1.Abutment_ParentId;
            //item2.X = item1.X;
            //item2.Y = item1.Y;
            //item2.Z = item1.Z;
            //item2.RX = item1.RX;
            //item2.RY = item1.RY;
            //item2.RZ = item1.RZ;
            //item2.SX = item1.SX;
            //item2.SY = item1.SY;
            //item2.SZ = item1.SZ;
            //item2.IsRelative = item1.IsRelative;
            //item2.IsOnNormalArea = item1.IsOnNormalArea;
            //item2.IsOnAlarmArea = item1.IsOnAlarmArea;
            //item2.IsOnLocationArea = item1.IsOnLocationArea;
            item2.SetTransform(item1.Transfrom.ToDbModel());
            item2.Number      = item1.Number;
            item2.Type        = item1.Type;
            item2.Describe    = item1.Describe;
            item2.Children    = item1.Children.ToDbModel();
            item2.LeafNodes   = item1.LeafNodes.ToDbModel();
            item2.InitBoundId = item1.InitBoundId;
            item2.InitBound   = item1.InitBound.ToDbModel();
            item2.EditBoundId = item1.EditBoundId;
            item2.EditBound   = item1.EditBound.ToDbModel();

            item2.IsRelative         = item1.IsRelative;
            item2.IsCreateAreaByData = item1.IsCreateAreaByData;
            item2.IsOnAlarmArea      = item1.IsOnAlarmArea;
            item2.IsOnLocationArea   = item1.IsOnLocationArea;
            item2.IsDynamicArea      = item1.IsDynamicArea;
            item2.ModelName          = item1.ModelName;
            return(item2);
        }
Example #6
0
 private void ShowAreaName(AreaEntity area, double mX, double mY)
 {
     if (IsShowAreaName && area.Type != AreaTypes.CAD && !string.IsNullOrEmpty(area.Name))
     {
         Label lb = new Label();
         lb.Content = area.Name;
         var ft = MeasureText(area.Name, lb.FontSize, lb.FontFamily.ToString());
         var w  = ft.WidthIncludingTrailingWhitespace;
         var h  = ft.Height;
         Canvas.SetLeft(lb, mX - w / 2);
         Canvas.SetTop(lb, mY - h / 2);
         Canvas1.Children.Add(lb);
         lb.Foreground      = Brushes.Gray;
         lb.LayoutTransform = ScaleTransform1;
         lb.Focusable       = false;
     }
 }
Example #7
0
        private void SetAreaStyle(AreaEntity area, Shape shape)
        {
            if (area.Type == AreaTypes.CAD)
            {
                if (area.Name == "Block" || area.Name == "Polyline")
                {
                    var brush = new SolidColorBrush(Color.FromArgb(128, 80, 80, 80));
                    shape.Fill   = brush;
                    shape.Stroke = Brushes.Gray;
                }
                else if (area.Name == "Line")
                {
                    shape.Fill   = Brushes.Transparent;
                    shape.Stroke = Brushes.Gray;
                }
                else
                {
                    shape.Fill   = Brushes.Transparent;
                    shape.Stroke = Brushes.Gray;
                }
            }
            else if (area.Type == AreaTypes.SwitchArea)
            {
                shape.Fill   = Brushes.Transparent;
                shape.Stroke = Brushes.Green;
            }
            else if (area.Type == AreaTypes.大楼)
            {
                shape.Fill   = Brushes.AliceBlue;
                shape.Stroke = Brushes.Blue;
            }
            else if (area.Type == AreaTypes.范围)
            {
                shape.Fill = Brushes.Transparent;
                //SetShapeStrokeDash(polygon);
                shape.Stroke = Brushes.Orange;
            }
            else
            {
                shape.Fill   = Brushes.Transparent;
                shape.Stroke = Brushes.Black;
            }

            shape.StrokeThickness = 1;
        }
Example #8
0
        private void ShowSwitchArea(AreaEntity area, List <bus_anchor_switch_area> switchAreas, int scale)
        {
            if (IsShowSwitchArea == false)
            {
                return;
            }
            if (switchAreas != null)
            {
                var subSwitchAreas = switchAreas;
                if (ShowFloor == 1)//1层
                {
                    subSwitchAreas = switchAreas.FindAll(i => i.min_z == 0 || i.min_z == 150);
                }
                else if (ShowFloor == 2)//2层
                {
                    subSwitchAreas = switchAreas.FindAll(i => i.min_z == 450 || i.min_z == 600);
                }
                else if (ShowFloor == 3)//3层
                {
                    subSwitchAreas = switchAreas.FindAll(i => i.min_z == 880);
                }
                else if (ShowFloor == 4)//4层
                {
                    subSwitchAreas = switchAreas.FindAll(i => i.min_z > 880);
                }
                else
                {
                }
                foreach (var item in subSwitchAreas)
                {
                    AreaEntity switchArea = new AreaEntity();
                    float      x1         = item.start_x / 100.0f + 2059;
                    float      x2         = item.end_x / 100.0f + 2059;
                    float      y1         = item.start_y / 100.0f + 1565;
                    float      y2         = item.end_y / 100.0f + 1565;
                    switchArea.InitBound = new Location.TModel.Location.AreaAndDev.Bound(x1, y1, x2, y2, item.min_z, item.max_z, false);
                    switchArea.Parent    = area;
                    switchArea.Name      = item.area_id;
                    switchArea.Type      = AreaTypes.SwitchArea;

                    AddAreaRect(switchArea, null, scale);
                }
            }
        }
Example #9
0
        private void DrawFloor(AreaEntity area, double scale, double devSize)
        {
            Clear();
            var bound = area.InitBound;

            if (bound == null)
            {
                return;
            }
            if (bound.MaxX == 0)
            {
                bound.SetMinMaxXY();
            }
            Scale          = scale;
            CanvasMargin   = 10;
            OffsetX        = -CanvasMargin / 2;
            OffsetY        = -CanvasMargin / 2;
            Canvas1.Width  = (bound.MaxX + CanvasMargin) * scale;
            Canvas1.Height = (bound.MaxY + CanvasMargin) * scale;
            DrawMode       = 2;
            AddAreaRect(area, null, scale);
            if (area.Children != null)
            {
                area.Children.Sort();
                foreach (var level1Item in area.Children) //机房
                {
                    level1Item.Parent = area;
                    AddAreaRect(level1Item, area, scale, true);

                    ShowDevs(level1Item.GetLeafNodes(), scale, devSize);//机房内设备
                }
            }

            ShowDevs(area.GetLeafNodes(), scale, devSize);//楼层内设备

            AddZeroPoint(scale, new Vector(0, 0));
        }
Example #10
0
 private void SetAreaRoomOffset(AreaEntity area, AreaEntity parent, ref double roomOffX, ref double roomOffY)
 {
     if (DrawMode == 1)                                                              //大图模式
     {
         if (parent != null && parent.Type == AreaTypes.楼层 && parent.Parent != null) //当前是机房
         {
             roomOffX = parent.InitBound.MinX + parent.Parent.InitBound.MinX;
             roomOffY = parent.InitBound.MinY + parent.Parent.InitBound.MinY;
         }
         if (area.Type == AreaTypes.楼层 && parent != null && parent.InitBound != null)//当前是楼层
         {
             roomOffX = /*area.InitBound.MinX + */ parent.InitBound.MinX;
             roomOffY = /*area.InitBound.MinY +*/ parent.InitBound.MinY;
         }
     }
     else//小图模式
     {
         if (parent != null && parent.Type == AreaTypes.楼层)//当前是机房
         {
             roomOffX = parent.InitBound.MinX;
             roomOffY = parent.InitBound.MinY;
         }
     }
 }
Example #11
0
        private void AddAreaRect(AreaEntity area, AreaEntity parent, double scale = 1, bool isTransparent = false)
        {
            if (area == null)
            {
                return;
            }
            var bound = area.InitBound;

            if (bound == null)
            {
                return;
            }
            {
                if (parent == null)
                {
                    parent = area.Parent;
                }

                double roomOffX = 0;
                double roomOffY = 0;
                SetAreaRoomOffset(area, parent, ref roomOffX, ref roomOffY);
                List <Point> points = GetPoints(scale, bound, roomOffX, roomOffY);

                Shape areaShape = null;
                if (bound.Shape == 2)//圆形
                {
                    Ellipse ellipse = new Ellipse();
                    ellipse.Width  = bound.GetSizeX() * scale;
                    ellipse.Height = bound.GetSizeY() * scale;

                    double left = (bound.GetCenterX() - OffsetX - roomOffX - bound.GetSizeX() / 2) * scale;
                    double top  = (bound.GetCenterY() - OffsetY - roomOffY - bound.GetSizeY() / 2) * scale;

                    Canvas.SetLeft(ellipse, left);
                    Canvas.SetTop(ellipse, top);

                    areaShape = ellipse;
                }
                else
                {
                    Polygon polygon = new Polygon();
                    foreach (var item in points)
                    {
                        polygon.Points.Add(item);
                    }
                    areaShape = polygon;
                }

                AreaDict[area.Id] = areaShape;

                Canvas1.Children.Add(areaShape);
                SetAreaStyle(area, areaShape);
                areaShape.Tag         = area;
                areaShape.ToolTip     = area.Name;
                areaShape.ContextMenu = AreaContextMenu;

                areaShape.MouseUp    += Area_MouseDown;
                areaShape.MouseEnter += Area_MouseEnter;
                areaShape.MouseLeave += Area_MouseLeave;

                double mX = 0;
                double mY = 0;
                int    c  = 0;
                foreach (var item in points)
                {
                    mX += item.X;
                    mY += item.Y;
                    c++;
                }
                mX /= c;
                mY /= c;
                ShowAreaName(area, mX, mY);
            }
        }
Example #12
0
        private Rectangle AddDevRect(DevEntity dev, double scale, double size, bool showDevName)
        {
            if (DevDict.ContainsKey(dev.Id))
            {
                DevDict[dev.Id].Remove();
            }

            AreaEntity parent = dev.Parent;

            double roomOffX = 0;
            double roomOffY = 0;

            if (DrawMode == 1)//大图模式
            {
                if (parent != null)
                {
                    if (parent.Type == AreaTypes.楼层 && parent.Parent != null)
                    {
                        roomOffX = parent.InitBound.MinX + parent.Parent.InitBound.MinX;
                        roomOffY = parent.InitBound.MinY + parent.Parent.InitBound.MinY;
                    }
                    else if (parent.Type == AreaTypes.机房 && parent.Parent != null)
                    {
                        roomOffX = parent.Parent.Parent.InitBound.MinX + parent.Parent.InitBound.MinX;
                        roomOffY = parent.Parent.Parent.InitBound.MinY + parent.Parent.InitBound.MinY;
                    }
                }
            }
            else //小图模式
            {
                if (parent != null)
                {
                    if (parent.Type == AreaTypes.楼层)
                    {
                        roomOffX = parent.InitBound.MinX;
                        roomOffY = parent.InitBound.MinY;
                    }
                    else if (parent.Type == AreaTypes.机房)
                    {
                        roomOffX = parent.Parent.InitBound.MinX;
                        roomOffY = parent.Parent.InitBound.MinY;
                    }
                }
            }

            double ax = dev.Pos.PosX + roomOffX;
            double ay = dev.Pos.PosZ + roomOffY;

            if (DrawMode == 1 && GetSettingFunc != null)//大图模式
            {
                ArchorSetting setting = GetSettingFunc(dev);
                if (setting != null)
                {
                    setting.CalAbsolute();//检测配置的数据是否正确
                    ax = setting.AbsoluteX.ToDouble();
                    ay = setting.AbsoluteY.ToDouble();
                }
            }


            double x = (ax - OffsetX) * scale - size * scale / 2;
            double y = (ay - OffsetY) * scale - size * scale / 2;

            DevShape devShape = new DevShape(Canvas1);

            if (showDevName)
            {
                if (udpArchorList == null)
                {
                    string path = AppDomain.CurrentDomain.BaseDirectory + "\\Data\\基站信息\\UDPArchorList.xml";
                    udpArchorList = XmlSerializeHelper.LoadFromFile <UDPArchorList>(path);
                }
                Label lb = new Label();
                lb.Content = GetDevName(dev);
                Canvas.SetLeft(lb, x + size * scale);
                Canvas.SetTop(lb, y);
                Canvas1.Children.Add(lb);
                lb.LayoutTransform = ScaleTransform1;

                var udpArchor = udpArchorList.Find(i => i.Id == GetArchorCode(dev));
                if (udpArchor != null)
                {
                    lb.Foreground = Brushes.Blue;
                }

                devShape.Label = lb;
            }


            //if (ViewMode == 0)
            //    y = Canvas1.Height - size * scale - y; //上下颠倒一下,不然就不是CAD上的上北下南的状况了
            Rectangle devRect = new Rectangle()
            {
                //Margin = new Thickness(x, y, 0, 0),
                Width           = size * scale,
                Height          = size * scale,
                Fill            = GetDevRectFillColor(dev),
                Stroke          = Brushes.Black,
                StrokeThickness = 1,
                Tag             = dev,
                ToolTip         = GetDevNameEx(dev)
            };

            devShape.Rect = devRect;
            devShape.Id   = dev.Id;

            devRect.ContextMenu = DevContextMenu;

            Canvas.SetLeft(devRect, x);
            Canvas.SetTop(devRect, y);

            DevDict[dev.Id]     = devShape;
            devRect.MouseDown  += DevRect_MouseDown;
            devRect.MouseEnter += DevRect_MouseEnter;
            devRect.MouseLeave += DevRect_MouseLeave;
            Canvas1.Children.Add(devRect);

            return(devRect);
        }
Example #13
0
        private void DrawPark(AreaEntity area, int scale, double devSize)
        {
            var bound = area.InitBound;

            //if (bound == null)
            //{
            //    bound=area.CreateBoundByChildren();
            //}
            if (bound == null)
            {
                return;
            }
            //bound=area.SetBoundByDevs();
            Scale          = scale;
            CanvasMargin   = 20;
            OffsetX        = bound.MinX - CanvasMargin;
            OffsetY        = bound.MinY - CanvasMargin;
            Canvas1.Width  = (bound.MaxX - OffsetX + CanvasMargin) * scale;
            Canvas1.Height = (bound.MaxY - OffsetY + CanvasMargin) * scale;

            DrawMode = 1;

            AddAreaRect(area, null, scale);

            if (area.Children != null)
            {
                foreach (var level1Item in area.Children) //建筑群
                {
                    level1Item.Parent = area;
                    AddAreaRect(level1Item, area, scale);
                    if (level1Item.Children != null)
                    {
                        foreach (var level2Item in level1Item.Children) //建筑
                        {
                            level2Item.Parent = level1Item;
                            AddAreaRect(level2Item, level1Item, scale);

                            if (ShowFloor > 0)
                            {
                                var floor = level2Item.GetChild(ShowFloor - 1);//楼层

                                if (floor != null)
                                {
                                    if (level2Item.InitBound != null)
                                    {
                                        AddAreaRect(floor, level2Item, scale);//楼层画出来
                                    }
                                    if (floor.Children != null)
                                    {
                                        foreach (var room in floor.Children)//机房
                                        {
                                            if (room == null)
                                            {
                                                continue;
                                            }
                                            room.Parent = floor;
                                            AddAreaRect(room, floor, scale);
                                            ShowDevs(room.GetLeafNodes(), scale, devSize / 5);//机房内设备
                                        }
                                    }

                                    ShowDevs(floor.GetLeafNodes(), scale, devSize / 5);//楼层内设备
                                }
                            }
                        }
                    }
                }
            }
            ShowDevs(area.GetLeafNodes(), scale, devSize);
            AddZeroPoint(scale, new Vector(bound.MinX, bound.MinY));
        }