@chestnutlabs/gcode-dialects 0.8.1 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"sink.d.ts","sourceRoot":"","sources":["../src/sink.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,UAAU,EAEhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAcrD,qBAAa,sBAAuB,YAAW,cAAc;IAc/C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAbtC,OAAO,CAAC,GAAG,CAAiB;IAC5B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,SAAS,CAA+D;IAChF,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,GAAG,CAA6B;IACxC,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAS;gBAEI,SAAS,EAAE,MAAM;IAE9C,OAAO,CAAC,MAAM;IAYd,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAInE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAcrE,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5C,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAI1C,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIrC,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAW5C,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAK/C,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAI/E,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAIxC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIxC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAI5D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAS3D;;;;;OAKG;IACH,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;CAoE9G"}
1
+ {"version":3,"file":"sink.d.ts","sourceRoot":"","sources":["../src/sink.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,UAAU,EAEhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAcrD,qBAAa,sBAAuB,YAAW,cAAc;IAc/C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAbtC,OAAO,CAAC,GAAG,CAAiB;IAC5B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,SAAS,CAA+D;IAChF,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,GAAG,CAA6B;IACxC,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAS;gBAEI,SAAS,EAAE,MAAM;IAE9C,OAAO,CAAC,MAAM;IAYd,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAInE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAcrE,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5C,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAI1C,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIrC,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAW5C,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAK/C,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAI/E,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAIxC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIxC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAI5D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAS3D;;;;;OAKG;IACH,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;CAqG9G"}
package/dist/sink.js CHANGED
@@ -137,6 +137,52 @@ export class BufferedAnnotationSink {
137
137
  ir.segments[op.channel].fill(op.value, start, end);
138
138
  touched[op.channel] = true;
139
139
  }
140
+ // `objectBounds` was computed by the parse core before any object labels existed (empty then). Now
141
+ // that this adapter has populated the object channel, refresh the object-only bounds so
142
+ // `frameContent:'object'` (#306/#6) frames the printed object rather than falling back to `'all'`.
143
+ // Mirrors toolpath-core's parse-time objectBounds pass (extruded segments with object != 0), in
144
+ // absolute coordinates; empty (Infinity) stays empty when nothing qualifies — the honest default.
145
+ if (touched.object) {
146
+ const seg = ir.segments;
147
+ const o = ir.header.originOffset;
148
+ const b = ir.objectBounds;
149
+ b.min.x = b.min.y = b.min.z = Infinity;
150
+ b.max.x = b.max.y = b.max.z = -Infinity;
151
+ for (let i = 0; i < count; i++) {
152
+ if ((seg.kind[i] & MoveKind.Extrude) === 0 || seg.object[i] === 0)
153
+ continue;
154
+ const sx = o.x + seg.x0[i];
155
+ const sy = o.y + seg.y0[i];
156
+ const sz = o.z + seg.z0[i];
157
+ const ex = o.x + seg.x1[i];
158
+ const ey = o.y + seg.y1[i];
159
+ const ez = o.z + seg.z1[i];
160
+ if (sx < b.min.x)
161
+ b.min.x = sx;
162
+ if (sy < b.min.y)
163
+ b.min.y = sy;
164
+ if (sz < b.min.z)
165
+ b.min.z = sz;
166
+ if (sx > b.max.x)
167
+ b.max.x = sx;
168
+ if (sy > b.max.y)
169
+ b.max.y = sy;
170
+ if (sz > b.max.z)
171
+ b.max.z = sz;
172
+ if (ex < b.min.x)
173
+ b.min.x = ex;
174
+ if (ey < b.min.y)
175
+ b.min.y = ey;
176
+ if (ez < b.min.z)
177
+ b.min.z = ez;
178
+ if (ex > b.max.x)
179
+ b.max.x = ex;
180
+ if (ey > b.max.y)
181
+ b.max.y = ey;
182
+ if (ez > b.max.z)
183
+ b.max.z = ez;
184
+ }
185
+ }
140
186
  // Object channel semantics (DD-001): value v > 0 indexes ir.objects[v-1].
141
187
  for (const [channelValue, name] of [...this.objects.entries()].sort((a, b) => a[0] - b[0])) {
142
188
  if (channelValue < 1)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chestnutlabs/gcode-dialects",
3
- "version": "0.8.1",
3
+ "version": "0.10.0",
4
4
  "description": "Slicer/firmware dialect adapters for ToolpathIR annotation (DD-005). Adapters annotate metadata and optional channels — they can never alter geometry.",
5
5
  "keywords": [
6
6
  "gcode",
@@ -45,6 +45,6 @@
45
45
  "test": "vitest run"
46
46
  },
47
47
  "dependencies": {
48
- "@chestnutlabs/toolpath-core": "0.8.1"
48
+ "@chestnutlabs/toolpath-core": "0.10.0"
49
49
  }
50
50
  }