Exemple #1
0
        CreateLine(PointPin point0, PointPin point1)     //Два соединение элемент-линия-линия-элемент и элемент-элемент
        {
            var CheckCreateLine = (point0.IdParent != point1.IdParent) & (point0.Type != point1.Type);

            if (CheckCreateLine)
            {
                var pin0 = FindElementId(point0.IdParent).GetPinIndex(point0.Id);
                var pin1 = FindElementId(point1.IdParent).GetPinIndex(point1.Id);
                //BaseElement.Connect(pin0, pin1);
                //BaseElement.Connect(pin1, pin0);
                var line = new ViewModelComponentLine(point0, point1, _surface);
                _elements.Add(line);
                line.OnElementDelete += Delete;
                if (pin0.Type == ETypePin.TypeOut)
                {
                    //FindElementId(point1.IdParent).GroupID = FindElementId(point0.IdParent).GroupID;
                    pin1 = line.GetElementModel().GetPinId(0);
                    BaseElement.Connect(pin0, pin1);
                    pin0 = FindElementId(point1.IdParent).GetPinIndex(point1.Id);
                    pin1 = line.GetElementModel().GetPinId(1);
                }
                else
                {
                    //FindElementId(point0.IdParent).GroupID = FindElementId(point1.IdParent).GroupID;
                    pin1 = line.GetElementModel().GetPinId(1);
                    BaseElement.Connect(pin0, pin1);
                    pin0 = FindElementId(point1.IdParent).GetPinIndex(point1.Id);
                    pin1 = line.GetElementModel().GetPinId(0);
                }

                BaseElement.Connect(pin0, pin1);
                //BaseElement.Connect(pin1, pin0);
            }
        }
Exemple #2
0
        private bool CheckIsConnection(PointPin pin0, PointPin pin1)
        {
            var IsAllowConnection = true;

            foreach (var line in FindAllLines())
            {
                if ((line.FirstPin.Id == pin0.Id) & (line.FirstPin.IdParent == pin0.IdParent) &
                    (line.LastPin.IdParent == pin1.IdParent) & (line.LastPin.Id == pin1.Id))
                {
                    IsAllowConnection = false;
                }
                if ((line.FirstPin.Id == pin1.Id) & (line.FirstPin.IdParent == pin1.IdParent) &
                    (line.LastPin.IdParent == pin0.IdParent) & (line.LastPin.Id == pin0.Id))
                {
                    IsAllowConnection = false;
                }
            }

            return(IsAllowConnection);
        }
        public ViewModelComponentLine(PointPin point0, PointPin point1, Canvas _surface, int id = -1)
        {
            BaseComponentUI componentUi;

            if (id == -1)
            {
                componentUi = new ComponentUIConnectionLine(BaseElement.IdCounter);
                element     = new ConnectionLine(BaseElement.IdCounter);
            }
            else
            {
                componentUi = new ComponentUIConnectionLine(id);
                element     = new ConnectionLine(id);
            }

            Panel.SetZIndex(componentUi, -1000000);
            ((ConnectionLine)element).OnPropertyChangedModel += PropertyChanged;
            componentUi.DataContext = this;
            FirstPin = point0;
            LastPin  = point1;
            BuildLine(point0, point1);
            componentUi.OnDeleteElement += OnDelete;
            _surface.Children.Add(componentUi);
        }