three-slicer 0.2.0 → 0.2.2

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.
package/README.md CHANGED
@@ -436,7 +436,6 @@ not cover fails with a stable error instead of silently producing something else
436
436
  | --- | --- |
437
437
  | `SLA_UNSUPPORTED_HOLLOWING` | `hollowing_enable` or drain holes — a solid slice answered to a hollow request would be a mislabeled print |
438
438
  | `SLA_UNSUPPORTED_ORGANIC` | organic support trees |
439
- | `SLA_PAD_AROUND_OBJECT_UNSUPPORTED` | zero-elevation pad embedding (`pad_around_object`) |
440
439
 
441
440
  `SLA_CAPABILITIES` (exported from `three-slicer/client`) is the machine-readable capability map. A `.3mf`
442
441
  carrying SLA records survives round-trip regardless: manual support points and drain holes are preserved on
package/engine/README.md CHANGED
@@ -358,7 +358,7 @@ Results carry the split: `stats.filament_mm_by_tool` (indexed by tool number, on
358
358
  ## SLA parameters
359
359
 
360
360
  The table above is the FFF kernel's reader. The SLA entry (`slice_sla`) reads its own parameter set, produced
361
- by `deriveSlaParams(settings)` — unlike `deriveKernelParams` it always emits every key (49 today), filling
361
+ by `deriveSlaParams(settings)` — unlike `deriveKernelParams` it always emits every key (54 today), filling
362
362
  schema/reference-machine defaults, because the SLA keys are not shared with another technology whose defaults
363
363
  could disagree. The groups:
364
364
 
@@ -368,7 +368,7 @@ could disagree. The groups:
368
368
  | Display (doubles as the bed) | `display_width/height`, `display_pixels_x/y`, `display_orientation` (portrait default), `display_mirror_x/y`, `bed_width/depth` |
369
369
  | Archive identity (config.ini) | `printer_model`, `printer_variant`, `printer_settings_id`, `sla_print_settings_id`, `sla_material_settings_id`, `material_print_speed` |
370
370
  | Supports (upstream `SupportTreeConfig`) | `supports_enable`, `support_tree_type`, `support_pillar_diameter`, `support_head_*`, `support_points_density_relative`, `support_critical_angle`, `support_max_bridge_length`, `support_max_pillar_link_distance`, `support_base_*`, `support_small_pillar_diameter_percent`, `support_pillar_widening_factor`, `support_max_bridges_on_pillar`, `support_max_weight_on_model`, `support_object_elevation`, `support_pillar_connection_mode`, `support_buildplate_only`, `slice_closing_radius` |
371
- | Pad (upstream `PadConfig`) | `pad_enable`, `pad_brim_size`, `pad_wall_thickness`, `pad_wall_height`, `pad_wall_slope`, `pad_max_merge_distance`, `pad_around_object` (typed error) |
371
+ | Pad (upstream `PadConfig`) | `pad_enable`, `pad_brim_size`, `pad_wall_thickness`, `pad_wall_height`, `pad_wall_slope`, `pad_max_merge_distance`, `pad_around_object` (embed — forces zero elevation), `pad_around_object_everywhere`, `pad_object_gap`, `pad_object_connector_width/stride/penetration` |
372
372
  | Capability gate | `hollowing_enable` — `true` is refused with `SLA_UNSUPPORTED_HOLLOWING`, never sliced solid |
373
373
 
374
374
  The result has no G-code: `stats.sla` is `true`, layers carry the same stride-8 segment stream, `support_mesh`
@@ -688,6 +688,13 @@ export function deriveSlaParams(settings) {
688
688
  pad_wall_slope: num('pad_wall_slope', 90),
689
689
  pad_max_merge_distance: num('pad_max_merge_distance', 50),
690
690
  pad_around_object: !!settingRaw(settings, 'pad_around_object'),
691
+ // Embed mode (upstream PadConfig::EmbedObject): the ring's gap and the connector sticks that keep the
692
+ // object attached to the pad. Read even when embed is off — the kernel ignores them then.
693
+ pad_around_object_everywhere: !!settingRaw(settings, 'pad_around_object_everywhere'),
694
+ pad_object_gap: num('pad_object_gap', 1),
695
+ pad_object_connector_width: num('pad_object_connector_width', 0.5),
696
+ pad_object_connector_stride: num('pad_object_connector_stride', 10),
697
+ pad_object_connector_penetration: num('pad_object_connector_penetration', 0.3),
691
698
  }
692
699
  }
693
700
 
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "three-slicer",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Browser/WASM 3D-printing slicer reverse-engineered from OrcaSlicer: slicing engine (Arachne walls, tree/grid supports, multi-material), SLA resin slicing with PrusaSlicer's ported support/pad chain and .sl1 export, React viewer with GPU toolpath preview, and schema-driven settings UI.",
5
5
  "license": "AGPL-3.0-or-later",
6
6
  "type": "module",
package/viewer/README.md CHANGED
@@ -68,8 +68,8 @@ Every panel can be switched off, and the values the component owns can be seeded
68
68
  `printer_technology` says SLA swaps the filament card (and the prime tower, and the painting brushes) for the
69
69
  resin card, and slicing routes to the kernel's `slice_sla` — PrusaSlicer's ported support/pad chain — with an
70
70
  `.sl1` export instead of G-code (portrait masks, like every SL1-family machine). The preview lifts the model by
71
- `stats.lift_layers` (pad + elevation), and a request the port does not cover (hollowing, organic trees,
72
- `pad_around_object`) surfaces as a typed error instead of a wrong print.
71
+ `stats.lift_layers` (pad + elevation), and a request the port does not cover (hollowing, organic trees)
72
+ surfaces as a typed error instead of a wrong print.
73
73
  - **`gcode`** — G-code text drawn on the selected plate instead of a slice result. `parseGcode` recovers roles from
74
74
  `;TYPE:` (OrcaSlicer/PrusaSlicer/Cura), from `;_EXTRUSION_ROLE:` tags and from this kernel's own feature comments;
75
75
  bead width comes from `;WIDTH:` or, absent that, from E. What the file never states cannot be recovered: an