public SequenceData Operate(IList <ProcParam <SequenceProcEnv> > args, SequenceProcEnv env) { ICSLabelSequence labelSequence = env.SelectedSequence.GetLabelSequence(); if (labelSequence == null) { MessageBox.Show("ラベルが空でした", this.GetType().ToString()); return(null); } if (env.Controller.WholeEndTime > 0) { labelSequence.SetLabel(0, env.Controller.WholeEndTime, "", true); } TimeSeriesValues sequence = new TimeSeriesValues("value"); Dictionary <string, int> indexInfo = new Dictionary <string, int>(); var labelTexts = labelSequence.GetLabelTexts(true); int count = 0; foreach (var labelText in labelTexts) { indexInfo[labelText] = count; count++; } sequence.SetValue(0, new decimal?[1]); sequence.SetValue(labelSequence.Duration, new decimal?[1]); foreach (var label in labelSequence.EnumerateLabels()) { var value = new decimal?[1] { indexInfo[label.LabelText] }; sequence.SetValue(label.BeginTime, value); } SequenceData ret = new SequenceData(sequence, null, PathEx.GiveName("labelNum", env.SelectedSequence.Title)); ret.Type = SequenceType.Numeric; return(ret); }
public SequenceData Operate(IList <ProcParam <SequenceProcEnv> > args, SequenceProcEnv env) { var target = ((LabelSelectParameter)args[0]).Value; var length = ((NumberParameter)args[1]).Value; var action = ((SingleSelectParameter)args[2]).Value; var border = ((BooleanParameter)args[3]).Value; var glue = ((SingleSelectParameter)args[4]).Value; ICSLabelSequence ret = env.SelectedSequence.GetLabelSequence(); var names = ret.GetLabelTexts(); string tmpLabel = "tmpToRemove"; while (names.Contains(tmpLabel)) { tmpLabel += "-"; } foreach (var label in ret.EnumerateLabels().Where(l => target.Contains(l.LabelText)).ToList()) { if (action == 0) { if (label.Duration < length || (border && label.Duration == length)) { ret.SetLabel(label.BeginTime, label.EndTime, tmpLabel); } } else { if (label.Duration > length || (border && label.Duration == length)) { ret.SetLabel(label.BeginTime, label.EndTime, tmpLabel); } } } ret.RemoveBorderSameAsPrevious(); var labels = ret.EnumerateLabels().ToList(); for (int i = 0; i < labels.Count; i++) { if (labels[i].LabelText == tmpLabel) { string to = ""; switch (glue) { case 1: if (i > 0 && i < labels.Count - 1) { if (labels[i - 1].LabelText == labels[i + 1].LabelText) { to = labels[i - 1].LabelText; } } break; case 2: if (i > 0) { to = labels[i - 1].LabelText; } break; case 3: if (i < labels.Count - 1) { to = labels[i + 1].LabelText; } break; } ret.SetLabel(labels[i].BeginTime, labels[i].EndTime, to); } } ret.RemoveBorderSameAsPrevious(); return(SequenceData.FromLabelSequence(ret, PathEx.GiveName("Filtered", env.SelectedSequence.Title, (action == 0 ? "Lt" : "Gt") + length.ToString()))); }