/// <summary> /// Сохранение подключение устройств к устройствам ввода-вывода. /// </summary> /// <param name="prjName">Имя проекта</param> /// <param name="modulesCount">Количество модулей</param> /// <param name="modulesColor">Цвет</param> /// <param name="asInterfaceConnection">AS-интерфейс подключения</param> /// <returns></returns> public static object[,] SaveIOAsConnectionArray(string prjName, Dictionary <string, int> modulesCount, Dictionary <string, Color> modulesColor, Dictionary <string, object[, ]> asInterfaceConnection) { const int MAX_COL = 6; int MAX_ROW = ioManager.IONodes.Count; foreach (var ioNode in ioManager.IONodes) { MAX_ROW += ioNode.IOModules.Count; } MAX_ROW *= 16; var res = new object[MAX_ROW, MAX_COL]; int idx = 0; for (int i = 0; i < ioManager.IONodes.Count; i++) { IONode currentNode = ioManager.IONodes[i]; res[idx, 3] = prjName; idx++; res[idx, 3] = $"'{DateTime.Now.ToString(new CultureInfo("RU-ru"))}"; string nodeName = ""; if (currentNode.FullN != 1) { nodeName = "Узел №" + (currentNode.N - 1) + " Адрес: " + ioManager.IONodes[i].IP; } else { nodeName = "Контроллер. " + " Адрес: " + ioManager.IONodes[i].IP; } res[idx, 4] = "Вход, бит"; res[idx, 5] = "Выход, бит"; res[idx, 0] = nodeName; idx++; res[idx, 0] = 0; nodeName = currentNode.TypeStr.Replace("750-", ""); res[idx, 1] = nodeName; if (!modulesColor.ContainsKey(nodeName)) { modulesColor.Add(nodeName, Color.Gray); } idx++; currentNode.SaveAsConnectionArray(ref res, ref idx, modulesCount, modulesColor, currentNode.N - 1, asInterfaceConnection); } res = DeleteNullObjects(res); return(res); }
public void CreateNodes() { double mean = (double)docControl.Docs.Select(x => x.MostDeviationValue).Sum() / (double)docControl.Docs.Count(); nodes = new List <IONode>(); float isPlagiarised; List <float> Input; int numOfPredictedPlagiarised = 0; foreach (var item in docControl.Docs) { if (item.MostDeviationValue > PlagiarismThreshold) { isPlagiarised = 1.0f; numOfPredictedPlagiarised++; } else { isPlagiarised = 0.0f; } Input = new List <float>(); Input.AddRange(item.MeanAttributes.Select(x => x.Value)); Input.AddRange(item.ParagraphAttributesList.ElementAt(item.MostDeviatedParagraphNumber).Select(x => x.GetValue()).ToList()); IONode node = new IONode(Input, isPlagiarised); nodes.Add(node); } string domek = "% przewidzianych przez nas jako plagiaryzmy: " + (((float)numOfPredictedPlagiarised / (float)docControl.Docs.Count()) * 100) + "%"; }
public void Type_NewNode_CorrectGetAndSet(string typeStr, IONode.TYPES expectedType) { var testNode = new IONode(typeStr, IntStub, StrStub, StrStub); Assert.AreEqual(expectedType, testNode.Type); }
private void AddNode(bool input = false) { IONode NewNode = (IONode)Node.Instance(); NewNode.SetPosition(-(new Vector2(1550, 1080) / 2) * Global.Camera.Zoom + Global.Camera.Offset + MousePos * Global.Camera.Zoom); NewNode.Input = input; Global.Nodes.AddChild(NewNode); }
public override void _Input(InputEvent Event) { if (Event.IsActionPressed("Click")) { selecting = false; Hide(); bool OnNode = false; Vector2 MousePos = GetGlobalMousePosition(); for (int NodeIndex = 0; NodeIndex < Global.SelectedNodes.Count; NodeIndex++) { IONode node = Global.SelectedNodes[NodeIndex]; if (node.RectPosition.x < MousePos.x && (node.RectPosition.x + node.RectSize.x) > MousePos.x) { if (node.RectPosition.y < MousePos.y && (node.RectPosition.y + node.RectSize.y) > MousePos.y) { OnNode = true; } } } if (!OnNode) { Global.Deselect(); } if (!selecting && !Global.RightClickMenu.Visible) { (Material as ShaderMaterial).SetShaderParam("mousepos", new Vector2(0, 0)); SetPosition(GetGlobalMousePosition()); Show(); selecting = true; } } else if (Event.IsActionReleased("Click")) { if (selecting) { Hide(); selecting = false; Global.Select(MousePosition, RectPosition); } } else if (selecting && Event.GetType() == typeof(InputEventMouseMotion) && !Global.OnNodeClick) { (Material as ShaderMaterial).SetShaderParam("mousepos", GetLocalMousePosition()); } MousePosition = GetLocalMousePosition(); }
private void AutoSort() { Vector2 FirstPosition = new Vector2(100000, 100000); int Input = 0; int Output = 0; Vector2 IODistance = new Vector2(100, 60); for (int ChildIndex = 0; ChildIndex < Global.SelectedNodes.Count; ChildIndex++) { IONode Child = Global.SelectedNodes[ChildIndex]; if (FirstPosition == new Vector2(100000, 100000)) { FirstPosition = Child.GetPosition(); } Child.SetPosition(Child.Input ? new Vector2(FirstPosition.x, FirstPosition.y + IODistance.y * Input) : new Vector2(FirstPosition.x + IODistance.x, FirstPosition.y + IODistance.y * Output)); Input += Convert.ToInt16(Child.Input); Output += Convert.ToInt16(!Child.Input); } }
public void TestSetGetType(string typeStr, IONode.TYPES expectedType) { var testNode = new IONode(typeStr, IntStub, StrStub, StrStub); Assert.AreEqual(expectedType, testNode.Type); }