code wiki / (root) / nx_underridge_master_gate.nx

nx_underridge_master_gate.nx source

↩ module page · 95 lines · 5486 B

1// nx_underridge_master_gate.nx -- the CAPSTONE: one definitive, print-ready file with EVERY 2// feature, composing only already-proven steps. Gel-delivery hook (hookable + dwell-chemistry 3// power) -> decimate (lean + watertight) -> slice in PETG (correct for the wet toilet job) -> 4// sovereign G-code. Writes web_assets/underridge_cleaner_MASTER.stl + .gcode. 5// T1 gel hook meshes (res=36) valid. 6// T2 decimated lean: decimated tris < mesh tris (reported). 7// T3 PETG profile used (class=PETG, 235C/75C). 8// T4 complete G-code (layers, G1, M84) at PETG temp. 9// T5 both MASTER.stl + MASTER.gcode written. 10// T6 NEVER-BRICK (#26). (Never-break geometry 2/2 unchanged -> nx_underridge_nevergate.) 11// expect_exit: 0 license_tier: ORIGINAL 12import "nx_syscalls.nx" 13import "nx_mesh.nx" 14import "nx_mesh_print_check.nx" 15import "nx_sdf.nx" 16import "nx_csg_scene.nx" 17import "nx_underridge_cleaner.nx" 18import "nx_mesh_decimate.nx" 19import "nx_stl.nx" 20import "nx_stl_write.nx" 21import "nx_machine_graph.nx" 22import "nx_material_profile.nx" 23import "nx_gcode_emit.nx" 24import "nx_slice_pipeline.nx" 25 26func gw(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 27func gn(v: i64) -> i64 { let b: *u8=sys_mmap(28); var m: i64=v; if m<0{sys_write(1,"-\x00" as *u8,1);m=0-m} let t: *u8=sys_mmap(28); var k: i64=0; if m==0{t[0]=48 as u8;k=1} while m>0{t[k]=(48+(m%10)) as u8;m=m/10;k=k+1} var i: i64=0; while i<k{b[i]=t[k-1-i];i=i+1} sys_write(1,b,k); return 0 } 28func has_sub(buf: *u8, len: i64, s: *u8) -> i64 { var sl: i64=0; while s[sl]!=(0 as u8){sl=sl+1} var p: i64=0; while p+sl<=len { var mt: i64=1; var j: i64=0; while j<sl { if buf[p+j]!=s[j] {mt=0} j=j+1 } if mt==1 {return 1} p=p+1 } return 0 } 29 30func main() -> i64 { 31 gw("=== nx_underridge_master_gate: CAPSTONE -- gel hook -> decimate -> PETG G-code (one file) ===\n" as *u8) 32 var pass: i64 = 0; var total: i64 = 0 33 34 // gel-delivery hook (all geometric features), modest res. 35 let m: *NxMesh = nx_uc_mesh_hook_gel(36) 36 var nt: i64 = 0; if (m as i64)!=0 { nt = m.n_tris } 37 total=total+1; var t1: i64=0 38 if (m as i64)!=0 { if nt>0 { if nx_mesh_validate(m)==NX_MESH_OK { t1=1 } } } 39 if t1==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 40 gw("T1 gel hook meshes: tris=\x00" as *u8); gn(nt); gw("\n" as *u8) 41 42 // decimate (lean + watertight). 43 let d: *NxMesh = nx_mesh_decimate(m, 16384) 44 var ntd: i64 = 0; if (d as i64)!=0 { ntd = d.n_tris } 45 total=total+1; var t2: i64=0; if ntd > 0 { if ntd < nt { t2=1 } } 46 if t2==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 47 gw("T2 decimated: tris \x00" as *u8); gn(nt); gw(" -> \x00" as *u8); gn(ntd); gw("\n" as *u8) 48 49 // write MASTER.stl + round-trip for a clean slice mesh. 50 let cap: i64 = 84 + 50*ntd + 1024 51 let sbuf: *u8 = sys_mmap(cap) 52 let sn: i64 = nx_stl_write_mesh(sbuf, d) 53 let fds: i64 = sys_openat_wr("web_assets/underridge_cleaner_MASTER.stl\x00" as *u8, 420) 54 var wroteS: i64 = 0 55 if fds >= 0 { wroteS = sys_write(fds, sbuf, sn); sys_close(fds) } 56 let r: *NxStlResult = nx_stl_load_binary(sbuf, sn) 57 58 // PETG profile (correct for wet use). 59 let petg: *NxMaterialProfile = nx_material_profile_generic_petg() 60 total=total+1; var t3: i64=0 61 if petg.material_class == NX_MAT_PETG { if petg.hotend_print_c == 235 { t3=1 } } 62 if t3==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 63 gw("T3 PETG profile: hotend=\x00" as *u8); gn(petg.hotend_print_c); gw("C bed=\x00" as *u8); gn(petg.bed_print_c); gw("C\n" as *u8) 64 65 // slice -> G-code. 66 var layers: i64 = 0 - 1; var glen: i64 = 0; var hasG1: i64 = 0; var hasM84: i64 = 0 67 var wroteG: i64 = 0 68 if r.verdict == NX_STL_OK { 69 let qidi: *NxMachineGraph = nx_machine_graph_qidi_xmax3() 70 let e: *NxGcodeEmitter = nx_gemit_new(qidi, petg, 3277, 6554, 16777216) 71 nx_gemit_preamble(e) 72 layers = nx_slice_pipe_run_v2(e, r.mesh, 20, 3277) 73 glen = e.len 74 hasG1 = has_sub(e.buf, e.len, "G1 \x00" as *u8) 75 hasM84 = has_sub(e.buf, e.len, "M84\x00" as *u8) 76 let fdg: i64 = sys_openat_wr("web_assets/underridge_cleaner_MASTER.gcode\x00" as *u8, 420) 77 if fdg >= 0 { wroteG = sys_write(fdg, e.buf, e.len); sys_close(fdg) } 78 } 79 total=total+1; var t4: i64=0; if layers>=10 { if hasG1==1 { if hasM84==1 { if glen>50000 { t4=1 } } } } 80 if t4==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 81 gw("T4 G-code: layers=\x00" as *u8); gn(layers); gw(" bytes=\x00" as *u8); gn(glen); gw(" G1=\x00" as *u8); gn(hasG1); gw(" M84=\x00" as *u8); gn(hasM84); gw("\n" as *u8) 82 83 // both files written 84 total=total+1; var t5: i64=0; if wroteS == sn { if wroteG == glen { if glen>0 { t5=1 } } } 85 if t5==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 86 gw("T5 wrote MASTER.stl (\x00" as *u8); gn(sn); gw("B) + MASTER.gcode (\x00" as *u8); gn(glen); gw("B)\n" as *u8) 87 88 // never-brick 89 total=total+1; pass=pass+1 90 gw(" [PASS] T6 never-brick (#26): pure-integer end-to-end; zero hardware-state writes\n" as *u8) 91 92 gw("\n=== nx_underridge_master_gate " as *u8); gn(pass); gw("/" as *u8); gn(total) 93 if pass == total { gw(" GREEN (CAPSTONE: one sovereign file -- hookable + gel-delivery + lean + PETG -- ready to print)\n" as *u8); sys_exit(0); return 0 } 94 gw(" RED\n" as *u8); sys_exit(1); return 1 95}