//Marks a Workplan or Selective with attributes: ["name" (if available), "base_time", "opt_time" (if available), "distance", "children"] static void Mark_plan(long wp_id, STEPNCLib.Finder Find, STEPNCLib.AptStepMaker APT, StringBuilder builder, int depth, bool last, ref long count) { long size = Find.GetNestedExecutableCount(wp_id); if (Find.IsWorkplan(wp_id)) { if (count != 0) { builder.Append(",\n"); count = 0; } for (int i = 0; i < depth; i++) builder.Append("\t"); builder.Append("{\"workplan\": {"); string name = Find.GetExecutableName(wp_id); double base_time = Find.GetExecutableBaseTime(wp_id); double opt_time = Find.GetExecutableOptimizedTime(wp_id); double distance = Find.GetExecutableDistance(wp_id); if (name != "") { builder.Append("\"name\": \""); builder.Append(name); builder.Append("\", "); } builder.Append("\"base_time\": "); builder.Append(base_time); builder.Append(", "); if (opt_time != base_time) { builder.Append("\"opt_time\": "); builder.Append(opt_time); builder.Append(", "); } builder.Append("\"distance\": "); builder.Append(distance); builder.Append(", "); builder.Append("\"children\" : [\n"); } else if (Find.IsSelective(wp_id)) { if (count != 0) { builder.Append(",\n"); count = 0; } for (int i = 0; i < depth; i++) builder.Append("\t"); builder.Append("{\"selective\": {"); string name = Find.GetExecutableName(wp_id); double base_time = Find.GetExecutableBaseTime(wp_id); double opt_time = Find.GetExecutableOptimizedTime(wp_id); double distance = Find.GetExecutableDistance(wp_id); if (name != "") { builder.Append("\"name\": \""); builder.Append(name); builder.Append("\", "); } builder.Append("\"base_time\": "); builder.Append(base_time); builder.Append(", "); if (opt_time != base_time) { builder.Append("\"opt_time\": "); builder.Append(opt_time); builder.Append(", "); } builder.Append("\"distance\": "); builder.Append(distance); builder.Append(", "); builder.Append("\"children\" : [\n"); } else { Console.WriteLine("ERROR IN STEPNC FILE"); } for (int I = 0; I < size; I++) { long exe_id = Find.GetNestedExecutableNext(wp_id, I); String uu = APT.SetUUID_if_not_set(exe_id); String type = Find.GetExecutableType(exe_id); //System.Console.WriteLine("Item at " + I + " is a " + type + " has UUID: " + uu); if (I == (size - 1)) last = true; else last = false; if (Find.IsWorkplan(exe_id) || Find.IsSelective(exe_id)) Mark_plan(exe_id, Find, APT, builder, depth + 1, last, ref count); else if (Find.IsWorkingstep(exe_id)) Mark_step(exe_id, Find, APT, builder, depth + 1, last, ref count); } for (int i = 0; i < depth; i++) builder.Append("\t"); builder.Append("]}}"); }