private void UpdateModalGCodes(HashSet <float> gCodes) { if (gCodes.Count == 0) { return; } foreach (var group in GCodeExpression.MutuallyExclusiveCodes) { if (gCodes.Intersect(group).Any()) { var modalCodes = gCodes.Where(c => group.Contains(c)).ToHashSet(); ModalGCodes.ExceptWith(group); ModalGCodes.UnionWith(modalCodes); } } }
private void SetOldCoordinates(AxisCoordinates currentCoordinates) { if (ModalGCodes.Contains(91)) { if (currentCoordinates.A.HasValue) { OldCoordinates.A = currentCoordinates.A + OldCoordinates.A; } if (currentCoordinates.B.HasValue) { OldCoordinates.B = currentCoordinates.B + OldCoordinates.B; } if (currentCoordinates.C.HasValue) { OldCoordinates.C = currentCoordinates.C + OldCoordinates.C; } if (currentCoordinates.U.HasValue) { OldCoordinates.U = currentCoordinates.U + OldCoordinates.U; } if (currentCoordinates.V.HasValue) { OldCoordinates.V = currentCoordinates.V + OldCoordinates.V; } if (currentCoordinates.W.HasValue) { OldCoordinates.W = currentCoordinates.W + OldCoordinates.W; } if (currentCoordinates.X.HasValue) { OldCoordinates.X = currentCoordinates.X + OldCoordinates.X; } if (currentCoordinates.Y.HasValue) { OldCoordinates.Y = currentCoordinates.Y + OldCoordinates.Y; } if (currentCoordinates.Z.HasValue) { OldCoordinates.Z = currentCoordinates.Z + OldCoordinates.Z; } } else { if (currentCoordinates.A.HasValue) { OldCoordinates.A = currentCoordinates.A; } if (currentCoordinates.B.HasValue) { OldCoordinates.B = currentCoordinates.B; } if (currentCoordinates.C.HasValue) { OldCoordinates.C = currentCoordinates.C; } if (currentCoordinates.U.HasValue) { OldCoordinates.U = currentCoordinates.U; } if (currentCoordinates.V.HasValue) { OldCoordinates.V = currentCoordinates.V; } if (currentCoordinates.W.HasValue) { OldCoordinates.W = currentCoordinates.W; } if (currentCoordinates.X.HasValue) { OldCoordinates.X = currentCoordinates.X; } if (currentCoordinates.Y.HasValue) { OldCoordinates.Y = currentCoordinates.Y; } if (currentCoordinates.Z.HasValue) { OldCoordinates.Z = currentCoordinates.Z; } } }
public override string ToString() { var builder = new StringBuilder(); if (ModalGCodes != null && ModalGCodes.Count > 0) { if (ModalGCodes.Count > 1) { builder.Append(ModalGCodes.Select(c => $"G{c}").Aggregate((s1, s2) => $"{s1} {s2} ")); } else { builder.Append($"G{ModalGCodes.First().ToString(CultureInfo.InvariantCulture)} "); } } if (CurrentGCodes != null && CurrentGCodes.Count > 0) { if (CurrentGCodes.Count > 1) { builder.Append(CurrentGCodes.Select(c => $"G{c}").Aggregate((s1, s2) => $"{s1} {s2} ")); } else { builder.Append($"G{CurrentGCodes.First().ToString(CultureInfo.InvariantCulture)} "); } } builder.Append($"T{ToolNumber} "); builder.Append($"F{FeedRate} "); if (ModalMCodes != null && ModalMCodes.Count > 0) { if (ModalGCodes.Count > 1) { builder.Append(ModalMCodes.Select(c => $"M{c}").Aggregate((s1, s2) => $"{s1} {s2} ")); } else { builder.Append($"M{ModalMCodes.First().ToString(CultureInfo.InvariantCulture)} "); } } if (CurrentMCodes != null && CurrentMCodes.Count > 0) { if (CurrentMCodes.Count > 1) { builder.Append(CurrentMCodes.Select(c => $"M{c}").Aggregate((s1, s2) => $"{s1} {s2} ")); } else { builder.Append($"M{CurrentMCodes.First().ToString(CultureInfo.InvariantCulture)} "); } } var x = CurrentCoordinates.X.HasValue ? $"X{CurrentCoordinates.X.Value} " : string.Empty; var y = CurrentCoordinates.Y.HasValue ? $"Y{CurrentCoordinates.Y.Value} " : string.Empty; var i = CurrentFrame.IValue.HasValue ? $"I{CurrentFrame.IValue.Value} " : string.Empty; var j = CurrentFrame.JValue.HasValue ? $"J{CurrentFrame.JValue.Value} " : string.Empty; var r = CurrentFrame.RValue.HasValue ? $"R{CurrentFrame.RValue.Value} " : string.Empty; builder.Append($"{x}{y}{i}{j}{r}"); return(builder.ToString()); }
public override string ToString() { var modalGCodes = ModalGCodes.Count > 0 ? $"{ModalGCodes.Select(code => code.ToString(CultureInfo.InvariantCulture)).Aggregate((s1, s2) => string.IsNullOrEmpty(s2) ? $"G{s1} G{s2}" : $"G{s1}")} " : string.Empty;