nx_print_process.nx
buildroot/runtime/nx_print_process.nx
about
nx_print_process.nx -- bits-up sealed enum of additive-manufacturing
PROCESS classes (orthogonal to material chemistry; classifies the
physics of how the material is deposited and consolidated).
=====================================================================
Multi-process / multi-material vision
=====================================================================
Operator directive (2026-05-20):
"i want to print lots of materials like concrete metal glass clay
etc as you roadmap out so i could hypothetically have different
types of printers printing different parts on a timing that lets
a robot put them together"
This file is the BITS-UP foundation for that vision. Every process
class below has measurably different physics (temperature, viscosity,
cure mechanism, layer time, mechanical strength). The NxMaterialProfile
struct currently models FDM polymers; future profile shapes (sealed
per-process structs) will model:
- DIW dispensing rate + cure-vs-print-rate ratio (concrete, clay)
- SLA cure energy + wavelength + Z-jerk-at-peel
- DMLS laser power + scan speed + powder bed parameters
- Binder jet droplet volume + saturation + cure cycle
Substrate primitives queued (NOT in this file yet):
nx_print_backend -- per-process emit interface (extends NxGcodeEmitter)
nx_build_plan -- multi-part coordination (which printer, which part, when)
nx_assembly_timing -- per-part complete-by-T, robot-pickup-at-T schedule
nx_robot_pickup_spec -- end-effector orientation, grip force, part registration
nx_part_compatibility -- interlock + fit verification across separately-printed pieces
nx_coord_frame_transform -- bed coords -> assembly coords per part
EXCEED motivation: NO production slicer handles cross-process coordination.
OrcaSlicer / Bambu / Cura / PrusaSlicer are FDM-only. Specialized slicers
exist per-process (Chitubox for resin, Materialise Magics for DMLS, etc.)
but none coordinate ACROSS process types with timing for assembly.
Nishi's bits-up substrate model treats process as a sealed enum parameter
to a unified slicer + emitter stack, so a single .nx conductor can
schedule: "FDM PLA torso prints on printer A by T+4h, concrete base
dependencies 1 imports · 7 importers
imports: nx_syscalls.nx
imported by: nx_build_plan.nxnx_build_plan_sim.nxnx_build_plan_sim_test.nxnx_build_plan_test.nxnx_machine_arch_test.nxnx_machine_graph.nxnx_print_process_test.nx
structs
| none |
consts
| 49 | const NX_PROCESS_FDM_POLYMER: i64 = 0 // current substrate (PLA/PETG/etc) |
| 50 | const NX_PROCESS_DIW_CEMENT: i64 = 1 // direct ink writing -- concrete, mortar |
| 51 | const NX_PROCESS_DIW_CLAY: i64 = 2 // DIW -- ceramic green body, dry+kiln after |
| 52 | const NX_PROCESS_DIW_BIOPRINT: i64 = 3 // DIW -- hydrogel / bio-ink (tissue scaffolds) |
| 53 | const NX_PROCESS_SLA_RESIN: i64 = 4 // vat photopolymerization, UV cure |
| 54 | const NX_PROCESS_DMLS_METAL: i64 = 5 // direct metal laser sintering, powder bed |
| 55 | const NX_PROCESS_EBM_METAL: i64 = 6 // electron beam melting, vacuum chamber |
| 56 | const NX_PROCESS_BINDER_JET: i64 = 7 // powder + binder droplets, post-cure |
| 57 | const NX_PROCESS_FDM_METAL: i64 = 8 // metal-filled FDM (BASF Ultrafuse 316L, etc.) |
| 58 | const NX_PROCESS_FDM_GLASS: i64 = 9 // soda-lime or borosilicate via FDM |
| 59 | const NX_PROCESS_LDM_FOOD: i64 = 10 // liquid deposition modeling for chocolate/etc |
| 60 | const NX_PROCESS_SLM_METAL: i64 = 11 // selective laser melting (cousin of DMLS) |
| 61 | const NX_PROCESS_FFF_WOOD: i64 = 12 // wood-filled FDM |
| 62 | const NX_PROCESS_N: i64 = 13 // count |
functions
| 64 | func nx_process_is_valid(p: i64) -> i64 |
| 79 | func nx_process_needs_heated_extruder(p: i64) -> i64 called by 1: main |
| 89 | func nx_process_uses_powder_bed(p: i64) -> i64 |
| 100 | func nx_process_needs_post_cure(p: i64) -> i64 |
| 114 | func nx_process_is_direct_write(p: i64) -> i64 |
| 130 | func nx_process_robot_pickup_ready(p: i64) -> i64 |