Пример #1
0
        public void GetObjectToDrawOnEplanPage_NewAction_ReturnsDrawInfoList(
            int expectedCount, DrawInfo.Style drawStyle, List <int> devIds)
        {
            var deviceManagerMock = new Mock <Device.IDeviceManager>();

            deviceManagerMock.Setup(x => x.GetDeviceByIndex(It.IsAny <int>()))
            .Returns(new Mock <Device.IDevice>().Object);
            var action = new Action(string.Empty, null, string.Empty, null,
                                    null, null, deviceManagerMock.Object);

            action.DrawStyle = drawStyle;
            action.DeviceIndex.AddRange(devIds);

            List <DrawInfo> drawObjs = action.GetObjectToDrawOnEplanPage();

            Assert.Multiple(() =>
            {
                foreach (var drawObj in drawObjs)
                {
                    Assert.AreEqual(action.DrawStyle, drawObj.DrawingStyle);
                }

                Assert.AreEqual(expectedCount, drawObjs.Count);
            });
        }
Пример #2
0
        public void DrawStyle_NewAction_GetSetNewDrawStyle(DrawInfo.Style style)
        {
            var action = new Action(string.Empty, null);

            action.DrawStyle = style;

            Assert.AreEqual(style, action.DrawStyle);
        }
Пример #3
0
        public void SetHighLighting(List <DrawInfo> objectsToDraw)
        {
            if (objectsToDraw == null)
            {
                return;
            }
            foreach (DrawInfo drawObj in objectsToDraw)
            {
                DrawInfo.Style howToDraw = drawObj.style;

                if (howToDraw == DrawInfo.Style.NO_DRAW)
                {
                    continue;
                }

                Eplan.EplApi.DataModel.Function oF =
                    (drawObj.dev as IODevice).EplanObjectFunction;
                if (oF == null)
                {
                    continue;
                }

                Eplan.EplApi.Base.PointD[] points = oF.GetBoundingBox();
                int number = 0;

                Eplan.EplApi.DataModel.Graphics.Rectangle rc =
                    new Eplan.EplApi.DataModel.Graphics.Rectangle();
                rc.Create(oF.Page);
                rc.IsSurfaceFilled = true;
                rc.DrawingOrder    = -1;

                short colour = 0;
                switch (howToDraw)
                {
                case DrawInfo.Style.GREEN_BOX:
                    colour = 3;     //Green.

                    //Для сигналов подсвечиваем полностью всю линию.
                    if (oF.Name.Contains("DI") || oF.Name.Contains("DO"))
                    {
                        if (oF.Connections.Length > 0)
                        {
                            points[1].X =
                                oF.Connections[0].StartPin.ParentFunction.GetBoundingBox()[1].X;
                        }
                    }
                    break;

                case DrawInfo.Style.RED_BOX:
                    colour = 252;     //Red.
                    break;

                case DrawInfo.Style.GREEN_UPPER_BOX:
                    points[0].Y += (points[1].Y - points[0].Y) / 2;
                    colour       = 3; //Green.
                    break;

                case DrawInfo.Style.GREEN_LOWER_BOX:
                    points[1].Y -= (points[1].Y - points[0].Y) / 2;
                    colour       = 3; //Green.
                    break;

                case DrawInfo.Style.GREEN_RED_BOX:
                    Eplan.EplApi.DataModel.Graphics.Rectangle rc2 =
                        new Eplan.EplApi.DataModel.Graphics.Rectangle();
                    rc2.Create(oF.Page);
                    rc2.IsSurfaceFilled = true;
                    rc2.DrawingOrder    = 1;
                    rc2.SetArea(
                        new Eplan.EplApi.Base.PointD(
                            points[0].X, points[0].Y + (points[1].Y - points[0].Y) / 2),
                        points[1]);

                    rc2.Pen = new Eplan.EplApi.DataModel.Graphics.Pen(
                        252 /*Red*/, -16002, -16002, -16002, 0);

                    rc2.Properties.set_PROPUSER_TEST(1, oF.ToStringIdentifier());
                    highlightedObjects.Add(rc2);

                    points[1].Y -= (points[1].Y - points[0].Y) / 2;
                    colour       = 3; //Green.
                    break;
                }

                rc.SetArea(points[0], points[1]);
                rc.Pen = new Eplan.EplApi.DataModel.Graphics.Pen(
                    colour, -16002, -16002, -16002, 0);

                if (number != 0)
                {
                    Eplan.EplApi.DataModel.Graphics.Text txt =
                        new Eplan.EplApi.DataModel.Graphics.Text();
                    txt.Create(oF.Page, number.ToString(), 3);
                    txt.Location = new Eplan.EplApi.Base.PointD(
                        points[1].X, points[1].Y);
                    txt.Justification =
                        Eplan.EplApi.DataModel.Graphics.TextBase.JustificationType.BottomRight;
                    txt.TextColorId = 0;

                    highlightedObjects.Add(txt);
                }

                rc.Properties.set_PROPUSER_TEST(1, oF.ToStringIdentifier());
                highlightedObjects.Add(rc);
            }
        }