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); } }
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); }