update CLI to work in CAM mode and add working samples
This commit is contained in:
parent
2d80c58995
commit
d6757d1758
9 changed files with 346 additions and 124 deletions
|
|
@ -5,6 +5,7 @@ Full docs @ https://docs.grid.space/projects/kiri-moto
|
|||
|
||||
# Release 3.6
|
||||
|
||||
* update CLI to work in CAM mode and add working samples
|
||||
* improved FDM preview rendering speed and reduced memory usage
|
||||
* threaded task and message passing performance improvements
|
||||
* refactor FDM supports and synthetic widgets to use more common code
|
||||
|
|
|
|||
26
src/cli/kiri-cam-device.json
Normal file
26
src/cli/kiri-cam-device.json
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"new": false,
|
||||
"mode": "CAM",
|
||||
"deviceName": "My Sienci LongMill",
|
||||
"noclone":false,
|
||||
"internal": 0,
|
||||
"bedHeight": 2.5,
|
||||
"bedWidth": 760,
|
||||
"bedDepth": 760,
|
||||
"maxHeight": 300,
|
||||
"originCenter": false,
|
||||
"spindleMax": 0,
|
||||
"gcodeSpace": true,
|
||||
"gcodeStrip": false,
|
||||
"gcodePre": [
|
||||
"G21 ; set units to MM (required)",
|
||||
"G90 ; absolute position mode (required)",
|
||||
"G0 F6000 ; default rapid move speed",
|
||||
"G1 F1500 ; default cutting speed"
|
||||
],
|
||||
"gcodePost": ["M30 ; program end"],
|
||||
"gcodeDwell": ["G4 P{time} ; dwell for {time}ms"],
|
||||
"gcodeSpindle": [],
|
||||
"gcodeChange": ["M6 T{tool} ; change tool to '{tool_name}'"],
|
||||
"gcodeFExt": "nc"
|
||||
}
|
||||
119
src/cli/kiri-cam-process.json
Normal file
119
src/cli/kiri-cam-process.json
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
{
|
||||
"processName": "default",
|
||||
"camLevelTool": 1000,
|
||||
"camLevelSpindle": 1000,
|
||||
"camLevelOver": 0,
|
||||
"camLevelSpeed": 1000,
|
||||
"camLevelDown": 1,
|
||||
"camRoughTool": 1001,
|
||||
"camRoughSpindle": 1000,
|
||||
"camRoughDown": 3,
|
||||
"camRoughOver": 0.5,
|
||||
"camRoughSpeed": 1000,
|
||||
"camRoughPlunge": 250,
|
||||
"camRoughStock": 0,
|
||||
"camRoughVoid": false,
|
||||
"camRoughFlat": false,
|
||||
"camRoughTop": false,
|
||||
"camRoughIn": true,
|
||||
"camRoughOn": true,
|
||||
"camOutlineTool": 1000,
|
||||
"camOutlineSpindle": 1000,
|
||||
"camOutlineDown": 1,
|
||||
"camOutlineOver": 0.4,
|
||||
"camOutlineSpeed": 800,
|
||||
"camOutlinePlunge": 250,
|
||||
"camOutlineWide": false,
|
||||
"camOutlineDogbone": false,
|
||||
"camOutlineOmitThru": false,
|
||||
"camOutlineOut": true,
|
||||
"camOutlineIn": false,
|
||||
"camOutlineOn": true,
|
||||
"camContourTool": 1001,
|
||||
"camContourSpindle": 1000,
|
||||
"camContourOver": 0.25,
|
||||
"camContourSpeed": 1000,
|
||||
"camContourAngle": 85,
|
||||
"camContourCurves": true,
|
||||
"camContourIn": true,
|
||||
"camContourXOn": true,
|
||||
"camContourYOn": true,
|
||||
"camTraceTool": 1000,
|
||||
"camTraceSpindle": 1000,
|
||||
"camTraceType": "clear",
|
||||
"camTraceOver": 0.5,
|
||||
"camTraceDown": 50,
|
||||
"camTraceSpeed": 750,
|
||||
"camTracePlunge": 200,
|
||||
"camTraceLines": false,
|
||||
"camDrillTool": 1000,
|
||||
"camDrillSpindle": 1000,
|
||||
"camDrillDownSpeed": 250,
|
||||
"camDrillDown": 2,
|
||||
"camDrillDwell": 250,
|
||||
"camDrillLift": 2,
|
||||
"camDrillingOn": false,
|
||||
"camRegisterSpeed": 1000,
|
||||
"camFlipAxis": "X",
|
||||
"camFlipOther": "",
|
||||
"camTabsWidth": 20,
|
||||
"camTabsHeight": 5,
|
||||
"camTabsDepth": 10,
|
||||
"camTabsMidline": false,
|
||||
"camDepthFirst": true,
|
||||
"camEaseDown": false,
|
||||
"camOriginTop": true,
|
||||
"camZAnchor": "middle",
|
||||
"camZOffset": 0,
|
||||
"camZBottom": 0,
|
||||
"camZClearance": 1,
|
||||
"camZThru": 0,
|
||||
"camFastFeed": 4000,
|
||||
"camFastFeedZ": 250,
|
||||
"camTolerance": 0.03,
|
||||
"camStockX": 30,
|
||||
"camStockY": 30,
|
||||
"camStockZ": 1,
|
||||
"camStockOffset": true,
|
||||
"camStockClipTo": false,
|
||||
"camStockOn": true,
|
||||
"camConventional": false,
|
||||
"outputOriginCenter": false,
|
||||
"outputInvertX": false,
|
||||
"outputInvertY": false,
|
||||
"camExpertFast": false,
|
||||
"ops": [{
|
||||
"type": "rough",
|
||||
"tool": 1001,
|
||||
"spindle": 1000,
|
||||
"down": 3,
|
||||
"step": 0.5,
|
||||
"rate": 1000,
|
||||
"plunge": 250,
|
||||
"leave": 0,
|
||||
"voids": false,
|
||||
"flats": false,
|
||||
"inside": true,
|
||||
"top": false
|
||||
}],
|
||||
"camTrueShadow": false,
|
||||
"camDrillMark": true,
|
||||
"camPocketSpindle": 1000,
|
||||
"camPocketTool": 1665454124874,
|
||||
"camPocketOver": 0.15,
|
||||
"camPocketDown": 1,
|
||||
"camPocketSpeed": 250,
|
||||
"camPocketPlunge": 200,
|
||||
"camPocketExpand": 0,
|
||||
"camContourBottom": false,
|
||||
"camTraceBottom": false,
|
||||
"cmaPocketOutline": false,
|
||||
"camRegisterThru": 5,
|
||||
"camFlatness": 0,
|
||||
"camContourBridge": 10,
|
||||
"camForceZMax": false,
|
||||
"camPocketSmooth": 0,
|
||||
"cmaPocketRefine": 20,
|
||||
"camPocketContour": false,
|
||||
"camPocketEngrave": false
|
||||
}
|
||||
69
src/cli/kiri-cam-tools.json
Normal file
69
src/cli/kiri-cam-tools.json
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
[
|
||||
{
|
||||
"id": 2000,
|
||||
"number": 5,
|
||||
"name": "ball 1/16",
|
||||
"type": "ballmill",
|
||||
"shaft_diam": 0.0625,
|
||||
"shaft_len": 1,
|
||||
"flute_diam": 0.0625,
|
||||
"flute_len": 2,
|
||||
"taper_tip": 0,
|
||||
"metric": false
|
||||
}, {
|
||||
"id": 2001,
|
||||
"number": 6,
|
||||
"name": "ball 1/8",
|
||||
"type": "ballmill",
|
||||
"shaft_diam": 0.125,
|
||||
"shaft_len": 1,
|
||||
"flute_diam": 0.125,
|
||||
"flute_len": 2,
|
||||
"taper_tip": 0,
|
||||
"metric": false
|
||||
}, {
|
||||
"id": 2002,
|
||||
"number": 4,
|
||||
"name": "ball 1/4",
|
||||
"type": "ballmill",
|
||||
"shaft_diam": 0.25,
|
||||
"shaft_len": 1,
|
||||
"flute_diam": 0.25,
|
||||
"flute_len": 2,
|
||||
"taper_tip": 0,
|
||||
"metric": false
|
||||
}, {
|
||||
"id": 1000,
|
||||
"number": 3,
|
||||
"type": "endmill",
|
||||
"name": "end 1/16",
|
||||
"metric": false,
|
||||
"shaft_diam": 0.0625,
|
||||
"shaft_len": 1,
|
||||
"flute_diam": 0.0625,
|
||||
"flute_len": 1.5,
|
||||
"taper_tip": 0
|
||||
}, {
|
||||
"id": 1001,
|
||||
"number": 2,
|
||||
"type": "endmill",
|
||||
"name": "end 1/8",
|
||||
"metric": false,
|
||||
"shaft_diam": 0.125,
|
||||
"shaft_len": 1,
|
||||
"flute_diam": 0.125,
|
||||
"flute_len": 1.5,
|
||||
"taper_tip": 0
|
||||
}, {
|
||||
"id": 1002,
|
||||
"number": 1,
|
||||
"type": "endmill",
|
||||
"name": "end 1/4",
|
||||
"metric": false,
|
||||
"shaft_diam": 0.25,
|
||||
"shaft_len": 1,
|
||||
"flute_diam": 0.25,
|
||||
"flute_len": 2,
|
||||
"taper_tip": 0
|
||||
}
|
||||
]
|
||||
|
|
@ -1,22 +1,24 @@
|
|||
{
|
||||
"noclone":false,
|
||||
"mode":"FDM",
|
||||
"internal":0,
|
||||
"imageURL":"",
|
||||
"imageScale":0.75,
|
||||
"imageAnchor":0,
|
||||
"bedHeight":2.5,
|
||||
"bedWidth":220,
|
||||
"bedDepth":220,
|
||||
"bedRound":false,
|
||||
"bedBelt":false,
|
||||
"maxHeight":300,
|
||||
"originCenter":false,
|
||||
"extrudeAbs":true,
|
||||
"spindleMax":0,
|
||||
"gcodeFan":[ "M106 S{fan_speed}" ],
|
||||
"gcodeTrack":[],
|
||||
"gcodeLayer":[],
|
||||
"new": false,
|
||||
"mode": "FDM",
|
||||
"deviceName":"Creality.Ender.3",
|
||||
"noclone": false,
|
||||
"internal": 0,
|
||||
"imageURL": "",
|
||||
"imageScale": 0.75,
|
||||
"imageAnchor": 0,
|
||||
"bedHeight": 2.5,
|
||||
"bedWidth": 220,
|
||||
"bedDepth": 220,
|
||||
"bedRound": false,
|
||||
"bedBelt": false,
|
||||
"maxHeight": 300,
|
||||
"originCenter": false,
|
||||
"extrudeAbs": true,
|
||||
"spindleMax": 0,
|
||||
"gcodeFan": ["M106 S{fan_speed}"],
|
||||
"gcodeTrack": [],
|
||||
"gcodeLayer": [],
|
||||
"gcodePre":[
|
||||
"M107 ; turn off filament cooling fan",
|
||||
"G90 ; set absolute positioning mode",
|
||||
|
|
@ -39,26 +41,22 @@
|
|||
"G1 X0 Y300 F1200 ; end move",
|
||||
"M84 ; disable stepper motors"
|
||||
],
|
||||
"gcodeProc":"",
|
||||
"gcodePause":[],
|
||||
"gcodeDwell":[],
|
||||
"gcodeSpindle":[],
|
||||
"gcodeChange":[],
|
||||
"gcodeFExt":"gcode",
|
||||
"gcodeSpace":true,
|
||||
"gcodeStrip":false,
|
||||
"gcodeLaserOn":[],
|
||||
"gcodeProc": "",
|
||||
"gcodePause": [],
|
||||
"gcodeDwell": [],
|
||||
"gcodeSpindle": [],
|
||||
"gcodeChange": [],
|
||||
"gcodeFExt": "gcode",
|
||||
"gcodeSpace": true,
|
||||
"gcodeStrip": false,
|
||||
"gcodeLaserOn": [],
|
||||
"gcodeLaserOff":[],
|
||||
"extruders":[
|
||||
{
|
||||
"extruders":[ {
|
||||
"extFilament":1.75,
|
||||
"extNozzle":0.4,
|
||||
"extSelect":[ "T0" ],
|
||||
"extDeselect":[],
|
||||
"extOffsetX":0,
|
||||
"extOffsetY":0
|
||||
}
|
||||
],
|
||||
"new":false,
|
||||
"deviceName":"Creality.Ender.3"
|
||||
} ],
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,70 +1,70 @@
|
|||
{
|
||||
"sName":"Ender3_test",
|
||||
"sliceHeight":0.25,
|
||||
"sliceShells":3,
|
||||
"sliceShellOrder":"in-out",
|
||||
"sliceLayerStart":"last",
|
||||
"sliceFillAngle":45,
|
||||
"sliceFillOverlap":0.3,
|
||||
"sliceFillSparse":0.2,
|
||||
"sliceFillType":"gyroid",
|
||||
"sliceAdaptive":false,
|
||||
"sliceMinHeight":0,
|
||||
"sliceSupportDensity":0.25,
|
||||
"sliceSupportOffset":0.4,
|
||||
"sliceSupportGap":1,
|
||||
"sliceSupportSize":6,
|
||||
"sliceSupportArea":1,
|
||||
"sliceSupportExtra":0,
|
||||
"sliceSupportAngle":50,
|
||||
"sliceSupportNozzle":0,
|
||||
"sliceSolidMinArea":1,
|
||||
"sliceSolidLayers":3,
|
||||
"sliceBottomLayers":3,
|
||||
"sliceTopLayers":3,
|
||||
"firstLayerRate":10,
|
||||
"firstLayerPrintMult":1.15,
|
||||
"firstLayerYOffset":0,
|
||||
"firstLayerBrim":0,
|
||||
"firstLayerBeltLead":3,
|
||||
"outputTemp":210,
|
||||
"outputBedTemp":60,
|
||||
"outputFeedrate":50,
|
||||
"outputFinishrate":50,
|
||||
"outputSeekrate":80,
|
||||
"outputShellMult":1.25,
|
||||
"outputFillMult":1.25,
|
||||
"outputSparseMult":1.25,
|
||||
"outputRetractDist":4,
|
||||
"outputRetractSpeed":30,
|
||||
"outputRetractDwell":30,
|
||||
"outputShortPoly":100,
|
||||
"outputMinSpeed":10,
|
||||
"outputCoastDist":0.1,
|
||||
"outputLayerRetract":true,
|
||||
"detectThinWalls":true,
|
||||
"zHopDistance":0,
|
||||
"antiBacklash":0,
|
||||
"outputOriginCenter":false,
|
||||
"sliceFillRate":0,
|
||||
"sliceSupportEnable":false,
|
||||
"firstSliceHeight":0.25,
|
||||
"firstLayerFillRate":35,
|
||||
"firstLayerLineMult":1,
|
||||
"firstLayerNozzleTemp":0,
|
||||
"firstLayerBedTemp":0,
|
||||
"firstLayerBrimTrig":0,
|
||||
"outputRaft":false,
|
||||
"outputRaftSpacing":0.2,
|
||||
"outputRetractWipe":0,
|
||||
"outputBrimCount":2,
|
||||
"outputBrimOffset":2,
|
||||
"outputLoopLayers":null,
|
||||
"outputInvertX":false,
|
||||
"outputInvertY":false,
|
||||
"arcTolerance":0,
|
||||
"gcodePause":"",
|
||||
"ranges":[],
|
||||
"firstLayerFanSpeed":0,
|
||||
"outputFanSpeed":255
|
||||
"sName": "Ender3_test",
|
||||
"arcTolerance": 0,
|
||||
"antiBacklash": 0,
|
||||
"sliceHeight": 0.25,
|
||||
"sliceShells": 3,
|
||||
"sliceShellOrder": "in-out",
|
||||
"sliceLayerStart": "last",
|
||||
"sliceFillAngle": 45,
|
||||
"sliceFillOverlap": 0.3,
|
||||
"sliceFillSparse": 0.2,
|
||||
"sliceFillType": "gyroid",
|
||||
"sliceAdaptive": false,
|
||||
"sliceMinHeight": 0,
|
||||
"sliceSupportDensity": 0.25,
|
||||
"sliceSupportOffset": 0.4,
|
||||
"sliceSupportGap": 1,
|
||||
"sliceSupportSize": 6,
|
||||
"sliceSupportArea": 1,
|
||||
"sliceSupportExtra": 0,
|
||||
"sliceSupportAngle": 50,
|
||||
"sliceSupportNozzle": 0,
|
||||
"sliceSolidMinArea": 1,
|
||||
"sliceSolidLayers": 3,
|
||||
"sliceBottomLayers": 3,
|
||||
"sliceTopLayers": 3,
|
||||
"firstLayerRate": 10,
|
||||
"firstLayerFanSpeed": 0,
|
||||
"firstLayerPrintMult": 1.15,
|
||||
"firstLayerYOffset": 0,
|
||||
"firstLayerBrim": 0,
|
||||
"firstLayerBeltLead": 3,
|
||||
"outputTemp": 210,
|
||||
"outputBedTemp": 60,
|
||||
"outputFeedrate": 50,
|
||||
"outputFinishrate": 50,
|
||||
"outputSeekrate": 80,
|
||||
"outputShellMult": 1.25,
|
||||
"outputFillMult": 1.25,
|
||||
"outputSparseMult": 1.25,
|
||||
"outputRetractDist": 4,
|
||||
"outputRetractSpeed": 30,
|
||||
"outputRetractDwell": 30,
|
||||
"outputShortPoly": 100,
|
||||
"outputMinSpeed": 10,
|
||||
"outputCoastDist": 0.1,
|
||||
"outputLayerRetract": true,
|
||||
"detectThinWalls": true,
|
||||
"outputOriginCenter": false,
|
||||
"sliceFillRate": 0,
|
||||
"sliceSupportEnable": false,
|
||||
"firstSliceHeight": 0.25,
|
||||
"firstLayerFillRate": 35,
|
||||
"firstLayerLineMult": 1,
|
||||
"firstLayerNozzleTemp": 0,
|
||||
"firstLayerBedTemp": 0,
|
||||
"firstLayerBrimTrig": 0,
|
||||
"outputRaft": false,
|
||||
"outputRaftSpacing": 0.2,
|
||||
"outputRetractWipe": 0,
|
||||
"outputBrimCount": 2,
|
||||
"outputBrimOffset": 2,
|
||||
"outputLoopLayers": null,
|
||||
"outputInvertX": false,
|
||||
"outputInvertY": false,
|
||||
"outputFanSpeed": 255,
|
||||
"gcodePause": "",
|
||||
"ranges": [],
|
||||
"zHopDistance": 0
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,6 +42,8 @@ CAM.prepare = async function(widgets, settings, update) {
|
|||
});
|
||||
|
||||
const output = print.output.filter(level => Array.isArray(level));
|
||||
|
||||
if (render) // allows it to run from CLI
|
||||
return render.path(output, (progress, layer) => {
|
||||
update(0.75 + progress * 0.25, "render", layer);
|
||||
}, {
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ let opts = {
|
|||
controller: "src/cli/kiri-controller.json",
|
||||
process: "src/cli/kiri-fdm-process.json",
|
||||
device: "src/cli/kiri-fdm-device.json",
|
||||
tools: "src/cli/kiri-cam-tools.json"
|
||||
};
|
||||
for (let i=0; i<args.length; i++) {
|
||||
let arg = args[i].split('=');
|
||||
|
|
@ -37,6 +38,7 @@ if (opts.help) {
|
|||
" --verbose | enable verbose logging",
|
||||
" --dir=[dir] | root directory for file paths (default: '.')",
|
||||
" --model=[file] | model file to load (or last parameter)",
|
||||
" --tools=[file] | tools array for CAM mode",
|
||||
" --source=[file] | source file list (defaults to kiri engine)",
|
||||
" --device=[file] | device definition file (json)",
|
||||
" --process=[file] | process definition file (json)",
|
||||
|
|
@ -128,6 +130,7 @@ function btoa(b) {
|
|||
|
||||
async function run() {
|
||||
let files = await fetch(opts.source, { format: "eval" } );
|
||||
let tools = await fetch(opts.tools, { format: "eval" } );
|
||||
let device = await fetch(opts.device, { format: "eval" } );
|
||||
let process = await fetch(opts.process, { format: "eval" } );
|
||||
|
||||
|
|
@ -202,8 +205,10 @@ async function run() {
|
|||
engine.rotate(x,y,z);
|
||||
}
|
||||
})
|
||||
.then(() => engine.setProcess(process))
|
||||
.then(() => engine.setDevice(device))
|
||||
.then(() => engine.setProcess(process))
|
||||
.then(() => { if (device.mode === 'CAM') engine.setTools(tools) })
|
||||
.then(() => engine.setMode(device.mode))
|
||||
.then(eng => eng.slice())
|
||||
.then(eng => eng.prepare())
|
||||
.then(eng => engine.export())
|
||||
|
|
|
|||
|
|
@ -162,8 +162,10 @@ class Engine {
|
|||
return new Promise((accept, reject) => {
|
||||
let output = [];
|
||||
kiri.client.export(this.settings, segment => {
|
||||
if (typeof segment === 'string') {
|
||||
this.listener({export:{segment}});
|
||||
output.push(segment);
|
||||
}
|
||||
}, done => {
|
||||
this.listener({export:{done}});
|
||||
accept(output.join('\r\n'));
|
||||
|
|
|
|||
Loading…
Reference in a new issue