/// <summary> /// /// </summary> /// <param name="side"></param> /// <param name="lcode">todo: describe lcode parameter on AddRobotRollQ</param> /// <returns></returns> private static RollPosition AddRobotRollQ(string lcode, string side) { var label = LableCode.QueryByLCode(lcode); if (label == null) { onlog?.Invoke($"!{side} {lcode}在数据库中查不到", LogType.ROLL_QUEUE); return(null); } if (label.Status >= (int)LableState.OnPanel) { onlog?.Invoke($"!{side} {label.LCode}已在板上,未加入机器人队列,交地{label.ToLocation}.", LogType.ROLL_QUEUE); return(null); } if (label.CoordinatesIsEmpty()) { onlog?.Invoke($"!{side} {label.LCode}未算位置,未加入机器人队列,交地{label.ToLocation}.", LogType.ROLL_QUEUE); return(null); } var pinfo = LableCode.GetPanel(label.PanelNo); var state = FrmMain.GetPanelState(label, pinfo); var x = label.Cx; var y = label.Cy; var z = label.Cz + RollPosition.Z_START; var rz = label.Crz; if (rz == 0) { y = RollPosition.GetToolOffSet(y); } else { x = RollPosition.GetToolOffSet(x); } if (x + y > 0) { if (rz == 0) { rz = -180; } } else { if (rz != 0) { rz = rz * -1; } } if (RollPosition.robotRSidePanel.Contains(label.RealLocation)) { rz = rz + 180; } var roll = new RollPosition(label, side, state, x, y, z, rz); onlog?.Invoke($"来源: {nameof(AddRobotRollQ)}, {side} {label.LCode} 名义交地: {label.ToLocation}, 真实交地: {label.RealLocation}, {Enum.GetName(typeof(PanelState), state)}", LogType.ROLL_QUEUE); return(roll); }