//Marks a Workingstep with attributes: ["name" (if available), "base_time", "opt_time" (if available), "distance"] static void Mark_step(long ws_id, STEPNCLib.Finder Find, STEPNCLib.AptStepMaker APT, StringBuilder builder, int depth, bool last, ref long count) { string name = Find.GetWorkingstepName2(ws_id); double base_time = Find.GetExecutableBaseTime(ws_id); double opt_time = Find.GetExecutableOptimizedTime(ws_id); double distance = Find.GetExecutableDistance(ws_id); for (int i = 0; i < depth; i++) builder.Append("\t"); builder.Append("{\"working_step\": {"); 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(", "); List<long> paths = Find.GetWorkingstepPathAll(ws_id); builder.Append("\"toolpaths\" : [\n"); bool last2 = false; for(int i = 0; i < paths.Count; i++){ long tp_id = paths[i]; if(i == (paths.Count - 1)) last2 = true; else last2 = false; String uu = APT.SetUUID_if_not_set(tp_id); decode_tp(Find, builder, tp_id, depth + 1, last2, ref count); } if (last) { builder.Append(" ]}}\n"); count = count + 1; } else builder.Append(" ]}},\n"); }