add snapmaker u1. cull sparse fill dots

This commit is contained in:
Stewart Allen 2026-01-10 19:38:36 -05:00
commit a070b2c134
3 changed files with 410 additions and 2 deletions

View file

@ -0,0 +1,400 @@
{
"mode": "FDM",
"internal": 0,
"bedHeight": 2.5,
"bedWidth": 270,
"bedDepth": 270,
"bedRound": false,
"maxHeight": 270,
"originCenter": false,
"gcodeFan": [
";; >-----> FAN >------------------------>",
"M106 P1 S{fan_speed} ; set fan speed",
";; <-----< FAN <------------------------<"
],
"gcodeTrack": [
";; >-----> PROGRESS >------------------->",
"M73 P{progress} R{remain_time} ; report progress % and remaining time",
";; <-----< PROGRESS <-------------------<"
],
"gcodeLayer": [
";; >-----> LAYER >---------------------->",
";BEFORE_LAYER_CHANGE",
";[layer_z]",
"G92 E0",
"TIMELAPSE_TAKE_FRAME",
"DEFECT_DETECTION_DETECT",
";AFTER_LAYER_CHANGE",
";[layer_z]",
"SET_PRINT_STATS_INFO TOTAL_LAYER={layers}",
"SET_PRINT_STATS_INFO CURRENT_LAYER={layer}",
";; <-----< LAYER <----------------------<"
],
"gcodePre": [
";; >-----> HEADER >--------------------->",
";; PREAMBLE POST",
"; HEADER_BLOCK_START",
"; generated by Kiri:Moto",
"; total layer number: {layers}",
"; filament_density: 1.24,1.24,1.24,1.24",
"; filament_diameter: 1.75,1.75,1.75,1.75",
"; max_z_height: {z_max}",
"; HEADER_BLOCK_END",
"; EXECUTABLE_BLOCK_START",
"M73 P0 R1 ; set print progress to 0%, remaining time 1 min",
"M106 S0 ; turn off primary cooling fan",
"M106 P2 S0 ; turn off auxiliary/part fan (fan index 2)",
"PRINT_START ; firmware macro: begin print sequence",
"DEFECT_DETECTION_START ; start bed surface defect detection system",
"SET_PRINT_STATS_INFO TOTAL_LAYER=3 ; set total layer count to 3",
"SET_PRINT_STATS_INFO CURRENT_LAYER=0 ; initialize current layer to 0",
"TIMELAPSE_START ; start timelapse capture",
"M140 S65 ; set bed temperature to 65C (no wait)",
"M104 T{tool} S140 ; set tool 0 nozzle temp to 140C (no wait)",
"M204 S10000 ; set default acceleration",
"G28 X Y ; home X and Y axes",
";===== Bed surface foreign-object detection ========",
"T{tool} ; select tool 0",
"G90 ; absolute positioning",
"DEFECT_DETECTION_DETECT_BED ; scan bed for debris or foreign objects",
";===== Tool pickup / toolhead detection =================",
"SM_PRINT_CHECK_SWITCH_EXTRUDER ; verify extruder/tool switch state",
";===== Auto feed, flow calibration & pre-extrusion ======================",
"SM_PRINT_EXTRUDER_PREHEAT EXTRUDER=1 TEMP=140 ; preheat extruder 1",
"SM_PRINT_AUTO_FEED EXTRUDER=0 ; auto-load filament for extruder 0",
"SM_PRINT_FLOW_CALIBRATE EXTRUDER=0 ; calibrate flow for extruder 0",
"SM_PRINT_EXTRUDER_PREHEAT EXTRUDER=2 TEMP=140 ; preheat extruder 2",
"SM_PRINT_AUTO_FEED EXTRUDER=1 ; auto-load filament for extruder 1",
"SM_PRINT_FLOW_CALIBRATE EXTRUDER=1 ; calibrate flow for extruder 1",
"SM_PRINT_EXTRUDER_PREHEAT EXTRUDER=3 TEMP=140 ; preheat extruder 3",
"SM_PRINT_AUTO_FEED EXTRUDER=2 ; auto-load filament for extruder 2",
"SM_PRINT_FLOW_CALIBRATE EXTRUDER=2 ; calibrate flow for extruder 2",
"SM_PRINT_AUTO_FEED EXTRUDER=3 ; auto-load filament for extruder 3",
"SM_PRINT_FLOW_CALIBRATE EXTRUDER=3 ; calibrate flow for extruder 3",
"M104 S0 T0 A0 ; disable heater on tool 0",
"M104 S0 T1 A0 ; disable heater on tool 1",
"M104 S0 T2 A0 ; disable heater on tool 2",
"M104 S0 T3 A0 ; disable heater on tool 3",
"M104 T{tool} S130 ; set first tool nozzle temp to 130C",
";===== Coarse homing =================",
"T{tool} ; select first tool",
"M106 S255 ; turn primary fan to full speed",
"M106 P2 S0 ; ensure auxiliary fan is off",
"MOVE_TO_DISCARD_FILAMENT_POSITION ; move to filament discard / purge location",
"M109 T{tool} S130 ; wait for nozzle to reach 130C",
"ROUGHLY_CLEAN_NOZZLE_WITH_DISCARD ; coarse nozzle cleaning with discard",
"MOVE_TO_XY_IDLE_POSITION_EXTRUDER ; move toolhead to idle XY position",
"G28 Z I140 J140 ; home Z axis with specified probe offsets",
";===== Build plate detection =================",
"DETECT_BED_PLATE ; detect presence/type of build plate",
";===== Deep nozzle cleaning =================",
"G90 ; absolute positioning",
"G0 Z5 F10000 ; raise Z to safe height",
"MOVE_TO_DISCARD_FILAMENT_POSITION ; move to discard position",
"M109 S170 ; heat nozzle to deep-clean temperature",
"ROUGHLY_CLEAN_NOZZLE ; coarse nozzle cleaning",
"MOVE_TO_XY_IDLE_POSITION_EXTRUDER ; move to idle position",
"FINELY_CLEAN_NOZZLE_STAGE_1 ; fine nozzle cleaning stage 1",
"M104 S130 ; lower nozzle temperature",
"G0 Z5 F10000 ; raise Z",
"MOVE_TO_DISCARD_FILAMENT_POSITION ; move to discard position again",
"ROUGHLY_CLEAN_NOZZLE ; repeat coarse cleaning",
"MOVE_TO_XY_IDLE_POSITION_EXTRUDER ; move to idle position",
"FINELY_CLEAN_NOZZLE_STAGE_2 ; fine nozzle cleaning stage 2",
";===== Precision homing =================",
"M106 S255 ; set primary fan to full speed",
"M109 S130 ; wait for nozzle at 130C",
"M190 S65 ; wait for bed to reach 65C",
"M107 P2 ; turn off auxiliary fan",
"G90 ; absolute positioning",
"G0 Z5 F10000 ; lift Z before homing",
"G28 Z ; precise Z homing",
";===== Heated bed leveling =================",
"BED_MESH_CALIBRATE PROBE_COUNT=11,11 ; probe bed mesh with 11x11 grid",
";===== Draw purge / start line =================",
"G90 ; absolute positioning",
"G1 Z1.5 ; move nozzle near bed",
"G0 X10 Y3 Z2 F18000 ; move to purge start position",
"M109 S220 ; heat nozzle to print temperature",
"G1 Z0.2 ; move to purge height",
"M83 ; relative extrusion mode",
"G1 X110 E15 F360 ; extrude purge line",
"G1 Z1.5 ; lift nozzle",
"M73 P20 R1 ; update progress to 20%",
"G90 ; absolute positioning",
"M106 S0 ; ensure primary fan off",
"G90 ; absolute positioning (redundant safety)",
"G21 ; set units to millimeters",
"M83 ; relative extrusion mode",
"; filament start gcode",
"SET_PRESSURE_ADVANCE ADVANCE=0.02 ; override pressure advance value",
"T{tool} ; select first tool",
"M106 S0 ; ensure primary fan off",
"M106 P2 S0 ; ensure auxiliary fan off",
";; <-----< HEADER <---------------------<"
],
"gcodePost": [
";; >-----> FOOTER >--------------------->",
"M106 S0 ; turn off primary cooling fan",
"M106 P2 S0 ; turn off auxiliary/part fan (fan index 2)",
"PRINT_END",
"TIMELAPSE_STOP",
"M73 P100 R0 ; report progress complete",
";; <-----< FOOTER <---------------------<"
],
"gcodeProc": "",
"gcodeFExt": "gcode",
"extruders": [
{
"extFilament": 1.75,
"extNozzle": 0.4,
"extSelect": [
"; BEGIN tool change from {last_tool} to {tool}",
"M620 S{tool}A ; prepare tool change",
"M204 S9000 ; Set acceleration to 9000 mm/s^2",
"M620.11 S0 ; Reset filament retraction state",
"M400 ; wait for moves to complete",
"M620.1 E F187 T240 ; set purge rate 187 temp 240",
"T{tool} ; initiate tool change",
"M620.1 E F374 T240 ; set purge rate 374 temp 240",
"M620.11 S0 ; Reset filament retraction state",
"G92 E0 ; reset extruder position",
"M400 ; wait for moves to complete",
" ; -- PURGE --",
"M109 S240 ; Set nozzle temperature to 240°C",
"G1 E23.7 F187 ; Extrude 23.7mm of filament at flowrate 187",
"G1 E0.914611 F50 ; Pulsatile extrusion",
"G1 E10.518 F187 ; Continue extrusion at flowrate 187",
"G1 E0.914611 F50 ; Pulsatile extrusion",
"G1 E10.518 F374 ; Continue extrusion at flowrate 374",
"G1 E0.914611 F50 ; Pulsatile extrusion",
"G1 E10.518 F374 ; Continue extrusion at flowrate 374",
"G1 E0.914611 F50 ; Pulsatile extrusion",
"G1 E10.518 F374 ; Continue extrusion at flowrate 374",
"G1 E-2 F1800 ; Retract filament by 2mm",
"G1 E2 F300 ; Recover retraction slowly",
"M400 ; Wait for all movements to complete",
"M109 S{temp} ; Set nozzle temperature back to print temp",
" ; -- SHAKE --",
"M106 P1 S255 ; Turn on nozzle cooling fan to full speed",
"M400 S3 ; Wait for all movements to complete",
"G1 X70 F5000 ; Move to X70",
"G1 X90 F3000 ; Move to X90",
"G1 Y255 F4000 ; Move to Y255",
"G1 X105 F5000 ; Move to X105",
"G1 Y265 ; Move to Y265",
"G1 X70 F10000 ; Rapid move to X70",
"G1 X100 F5000 ; Move to X100",
"G1 X70 F10000 ; Rapid move back to X70",
"G1 X100 F5000 ; Move to X100",
"G1 X70 F10000 ; Shake filament residue",
"G1 X80 F15000",
"G1 X60",
"G1 X80",
"G1 X60",
"G1 X80 ; Shake to put down garbage",
"G1 X100 F5000 ; Move to X100",
"G1 X165 F15000 ; Wipe and shake",
"G1 Y256 ; Move Y aside to prevent collision",
"M400 ; Wait for all movements to complete",
"M204 S10000 ; Set acceleration to 10000 mm/s^2",
"M621 S{tool}A ; complete tool change",
"; END tool change"
],
"extOffsetX": 0,
"extOffsetY": 0,
"extDeselect": []
},
{
"extFilament": 1.75,
"extNozzle": 0.4,
"extSelect": [],
"extOffsetX": 0,
"extOffsetY": 0,
"extDeselect": []
},
{
"extFilament": 1.75,
"extNozzle": 0.4,
"extSelect": [],
"extOffsetX": 0,
"extOffsetY": 0,
"extDeselect": []
},
{
"extFilament": 1.75,
"extNozzle": 0.4,
"extSelect": [],
"extOffsetX": 0,
"extOffsetY": 0,
"extDeselect": []
}
],
"new": false,
"deviceName": "My Snapmaker U1",
"bedBelt": false,
"fwRetract": false,
"filamentSource": "direct",
"extras": {
"bbl": {
"luke": {
"host": "10.20.20.75",
"code": "20709223",
"serial": "01P09C482401767",
"modified": true,
"selected": false,
"type": "C12"
},
"leia": {
"host": "10.20.20.76",
"code": "35129782",
"serial": "01P09C461603301",
"modified": true,
"selected": false,
"type": "C12"
},
"vader": {
"host": "10.20.20.77",
"code": "17711811",
"serial": "01P00A413100516",
"modified": true,
"selected": false,
"type": "C12"
},
"Scrappy": {
"host": "10.10.2.5",
"serial": "01S00A292500224",
"code": "38373335",
"modified": true,
"type": "C11",
"selected": true
}
}
},
"imageURL": "",
"deviceZMax": 0,
"gcodeTime": 1,
"gcodeFeature": [],
"profiles": [
{
"processName": "U1 PLA",
"sliceHeight": 0.2,
"sliceShells": 3,
"sliceShellOrder": "out-in",
"sliceLayerStart": "last",
"sliceFillAngle": 45,
"sliceFillOverlap": 0.4,
"sliceFillSparse": 0.2,
"sliceFillType": "linear",
"sliceAdaptive": false,
"sliceMinHeight": 0,
"sliceSupportDensity": 0.2,
"sliceSupportOffset": 0.2,
"sliceSupportGap": 1,
"sliceSupportExtra": 0,
"sliceSupportAngle": 50,
"sliceSupportNozzle": 0,
"sliceSolidMinArea": 1,
"sliceBottomLayers": 2,
"sliceTopLayers": 3,
"firstLayerRate": 20,
"firstLayerYOffset": 0,
"firstLayerBrim": 0,
"firstLayerBeltLead": 0,
"firstLayerFanSpeed": 0,
"outputTemp": 220,
"outputBedTemp": 65,
"outputFanSpeed": 255,
"outputFeedrate": 100,
"outputFinishrate": 90,
"outputSeekrate": 200,
"outputShellMult": 1.2,
"outputFillMult": 1.18,
"outputSparseMult": 1.25,
"outputRetractDist": 1.3,
"outputRetractSpeed": 30,
"outputRetractWipe": 0,
"outputRetractDwell": 5,
"outputShortPoly": 0,
"outputMinSpeed": 1,
"outputCoastDist": 0,
"outputLayerRetract": false,
"zHopDistance": 0,
"antiBacklash": 0,
"sliceFillWidth": 1,
"firstSliceHeight": 0.2,
"firstLayerFillRate": 40,
"firstLayerNozzleTemp": 220,
"firstLayerBedTemp": 65,
"firstLayerBrimTrig": 0,
"firstLayerBrimGap": 0,
"outputRaft": false,
"outputRaftSpacing": 0.2,
"outputBrimCount": 0,
"outputBrimOffset": 1,
"outputPurgeTower": 0,
"outputInvertX": false,
"outputInvertY": false,
"ranges": [],
"sliceLineWidth": 0,
"sliceFillRepeat": 2,
"firstLayerBrimIn": 0,
"firstLayerBeltBump": 0,
"outputBeltFirst": false,
"outputLoops": 0,
"sliceFillGrow": 0.2,
"sliceSupportSpan": 5,
"sliceSupportOutline": true,
"firstLayerFlatten": 0,
"outputDraftShield": false,
"outputAvoidGaps": true,
"sliceDetectThin": "off",
"outputAlternating": false,
"sliceLayerStartX": 0,
"sliceLayerStartY": 0,
"outputFanLayer": 1,
"sliceAngle": 45,
"sliceZInterleave": false,
"outputScarfLength": 0,
"outputMinLayerTime": 9,
"sliceCompInner": 0,
"sliceCompOuter": 0,
"outputMaxFlowrate": 15,
"firstLayerBeltFact": 1,
"sliceSolidify": false,
"fdmArcEnabled": false,
"fdmArcResolution": 1,
"fdmArcTolerance": 0.005,
"sliceSupportType": "manual",
"sliceSupportTree": false,
"sliceSolidMinThick": 0.4
}
],
"gcodeChange": [
";; >-----> TOOL >----------------------->",
"; Change Tool{last_tool} -> Tool{tool} (layer {layer}) ; tool change",
"M104 S70 T{last_tool} ; cooldown previous tool",
"G91 ; set relative positioning",
"G1 Z1.5 ; lift nozzle 1.5 mm to avoid collision",
"G90 ; return to absolute positioning",
"G1 F21000 ; set high travel feedrate",
"M104 S{temp} T{tool} ; heat new tool and wait",
"M400 ; wait for all queued moves to finish",
"T{tool} ; select tool {tool}",
"SM_PRINT_PREEXTRUDE_FILAMENT INDEX={tool} ; Snapmaker macro: pre-extrude tool filament",
"G90 ; ensure absolute positioning",
"M106 P2 S178 ; set auxiliary/part fan to ~70%",
"M106 S255 ; set primary cooling fan to full speed",
"M109 S{temp} T{tool} ; set new tool nozzle temperature",
"SET_PRESSURE_ADVANCE ADVANCE=0.02 ; override pressure advance value for tool 1",
"G1 F30000 ; set printing feedrate",
";ADD WIPE TOWER HERE",
"M220 R ; reset feedrate override to default (100%) / restore",
"G1 F30000 ; set travel feedrate to 30000 mm/min",
"G4 S0 ; dwell 0s (no-op / sync point)",
"G92 E0 ; zero extruder position after purge (prevents huge E values)",
"G1 X{pos_x} Y{pos_y} ; restore XY position",
"G1 Z{pos_z} ; restore Z position",
";; <-----< TOOL <-----------------------<"
]
}

View file

@ -570,10 +570,10 @@ export function sliceOne(settings, widget, onupdate, ondone) {
.centerRectangle(newPoint(0, 0, slice.z), boundsx, boundsy)
.move({ x: 0, y: -boundsy / 2 + skewy, z: 0 });
shadow = POLY.trimTo(shadow, [ clip ]);
// slice.output().setLayer("belt clip", 0xffff00).addPolys([ clip ]);
if (devel) slice.output().setLayer("belt clip", 0xffff00).addPolys([ clip ]);
}
slice.supports = shadow;
slice.output().setLayer("shadow", 0xff0000).addPolys(shadow);
if (devel) slice.output().setLayer("shadow", 0xff0000).addPolys(shadow);
trackupdate((++count/length), 0.10, 0.15, "support");
}
}
@ -692,6 +692,14 @@ export function sliceOne(settings, widget, onupdate, ondone) {
trackupdate(i / t, 0.55, 0.7);
});
}
// filter out tiny fill points less than nozzle diameter
// if (false)
for (let slice of slices) {
for (let top of slice.tops) {
if (top.fill_sparse)
top.fill_sparse = top.fill_sparse.filter(p => p.perimeter() >= lineWidth);
}
}
// back-fill slices marked for infill cloning
for (let slice of slices) {
if (slice._clone_sparse) {