feat: add support for cnc mode in g-code viewer (#1239)

Signed-off-by: Stefan Dej <meteyou@gmail.com>
This commit is contained in:
Juan Rosario 2023-01-19 14:09:06 -06:00 committed by Stefan Dej
parent 1a32147d68
commit 727fc722af
No known key found for this signature in database
GPG Key ID: 5D3A5823133D2246
6 changed files with 33 additions and 11 deletions

14
package-lock.json generated
View File

@ -18,7 +18,7 @@
"@codemirror/view": "^6.0.3", "@codemirror/view": "^6.0.3",
"@jaames/iro": "^5.5.2", "@jaames/iro": "^5.5.2",
"@lezer/highlight": "^1.0.0", "@lezer/highlight": "^1.0.0",
"@sindarius/gcodeviewer": "^3.1.14", "@sindarius/gcodeviewer": "^3.2.0",
"@types/node": "^18.0.0", "@types/node": "^18.0.0",
"@types/overlayscrollbars": "^1.12.1", "@types/overlayscrollbars": "^1.12.1",
"axios": "^0.27.0", "axios": "^0.27.0",
@ -2757,9 +2757,9 @@
"dev": true "dev": true
}, },
"node_modules/@sindarius/gcodeviewer": { "node_modules/@sindarius/gcodeviewer": {
"version": "3.1.14", "version": "3.2.0",
"resolved": "https://registry.npmjs.org/@sindarius/gcodeviewer/-/gcodeviewer-3.1.14.tgz", "resolved": "https://registry.npmjs.org/@sindarius/gcodeviewer/-/gcodeviewer-3.2.0.tgz",
"integrity": "sha512-+kmw2ougPYJzfU4lKvjSNZLsyDbhTKgeOA2KYAHgNnD0BUiSGCmveVLdcs8bSusmnrv8J+M+90eco0LSUuywiw==", "integrity": "sha512-w2MZlqw/BbPZB/ndEq8lZeaqovfujCTVwdKR5AKaMggIGdQQnkE7qZ8uxrZZVxWzoLIUv9h+cbyXiOgDFyiekw==",
"dependencies": { "dependencies": {
"@babylonjs/core": "^5.34.0", "@babylonjs/core": "^5.34.0",
"@babylonjs/inspector": "^5.34.0", "@babylonjs/inspector": "^5.34.0",
@ -12056,9 +12056,9 @@
"dev": true "dev": true
}, },
"@sindarius/gcodeviewer": { "@sindarius/gcodeviewer": {
"version": "3.1.14", "version": "3.2.0",
"resolved": "https://registry.npmjs.org/@sindarius/gcodeviewer/-/gcodeviewer-3.1.14.tgz", "resolved": "https://registry.npmjs.org/@sindarius/gcodeviewer/-/gcodeviewer-3.2.0.tgz",
"integrity": "sha512-+kmw2ougPYJzfU4lKvjSNZLsyDbhTKgeOA2KYAHgNnD0BUiSGCmveVLdcs8bSusmnrv8J+M+90eco0LSUuywiw==", "integrity": "sha512-w2MZlqw/BbPZB/ndEq8lZeaqovfujCTVwdKR5AKaMggIGdQQnkE7qZ8uxrZZVxWzoLIUv9h+cbyXiOgDFyiekw==",
"requires": { "requires": {
"@babylonjs/core": "^5.34.0", "@babylonjs/core": "^5.34.0",
"@babylonjs/inspector": "^5.34.0", "@babylonjs/inspector": "^5.34.0",

View File

@ -33,7 +33,7 @@
"@codemirror/view": "^6.0.3", "@codemirror/view": "^6.0.3",
"@jaames/iro": "^5.5.2", "@jaames/iro": "^5.5.2",
"@lezer/highlight": "^1.0.0", "@lezer/highlight": "^1.0.0",
"@sindarius/gcodeviewer": "^3.1.14", "@sindarius/gcodeviewer": "^3.2.0",
"@types/node": "^18.0.0", "@types/node": "^18.0.0",
"@types/overlayscrollbars": "^1.12.1", "@types/overlayscrollbars": "^1.12.1",
"axios": "^0.27.0", "axios": "^0.27.0",

View File

@ -186,6 +186,13 @@
hide-details hide-details
:label="$t('GCodeViewer.SpecularLighting')"></v-checkbox> :label="$t('GCodeViewer.SpecularLighting')"></v-checkbox>
</v-list-item> </v-list-item>
<v-list-item class="minHeight36">
<v-checkbox
v-model="cncMode"
class="mt-0"
hide-details
:label="$t('GCodeViewer.CNCMode')"></v-checkbox>
</v-list-item>
</v-list> </v-list>
</v-menu> </v-menu>
</v-col> </v-col>
@ -508,13 +515,14 @@ export default class Viewer extends Mixins(BaseMixin) {
} }
viewer.gcodeProcessor.useHighQualityExtrusion(this.hdRendering) viewer.gcodeProcessor.useHighQualityExtrusion(this.hdRendering)
viewer.gcodeProcessor.updateForceWireMode(this.forceLineRendering) viewer.gcodeProcessor.updateForceWireMode(this.forceLineRendering || this.cncMode)
viewer.gcodeProcessor.setAlpha(this.transparency) viewer.gcodeProcessor.setAlpha(this.transparency)
viewer.gcodeProcessor.setVoxelMode(this.voxelMode) viewer.gcodeProcessor.setVoxelMode(this.voxelMode)
viewer.gcodeProcessor.voxelWidth = this.voxelWidth viewer.gcodeProcessor.voxelWidth = this.voxelWidth
viewer.gcodeProcessor.voxelHeight = this.voxelHeight viewer.gcodeProcessor.voxelHeight = this.voxelHeight
viewer.gcodeProcessor.useSpecularColor(this.specularLighting) viewer.gcodeProcessor.useSpecularColor(this.specularLighting)
viewer.gcodeProcessor.setLiveTracking(false) viewer.gcodeProcessor.setLiveTracking(false)
viewer.gcodeProcessor.g1AsExtrusion = this.cncMode
viewer.buildObjects.objectCallback = this.objectCallback viewer.buildObjects.objectCallback = this.objectCallback
this.loadToolColors(this.extruderColors) this.loadToolColors(this.extruderColors)
@ -824,7 +832,7 @@ export default class Viewer extends Mixins(BaseMixin) {
@Watch('forceLineRendering') @Watch('forceLineRendering')
async forceLineRenderingChanged(newVal: boolean) { async forceLineRenderingChanged(newVal: boolean) {
if (viewer) { if (viewer) {
viewer.gcodeProcessor.updateForceWireMode(newVal) viewer.gcodeProcessor.updateForceWireMode(newVal || this.cncMode)
await this.reloadViewer() await this.reloadViewer()
} }
} }
@ -895,6 +903,17 @@ export default class Viewer extends Mixins(BaseMixin) {
} }
} }
get cncMode() {
return this.$store.state.gui.gcodeViewer.cncMode
}
set cncMode(newVal) {
this.$store.dispatch('gui/saveSetting', { name: 'gcodeViewer.cncMode', value: newVal })
viewer.gcodeProcessor.g1AsExtrusion = newVal
viewer.gcodeProcessor.updateForceWireMode(true)
this.reloadViewer()
}
get extruderColors() { get extruderColors() {
return this.$store.state.gui.gcodeViewer?.extruderColors ?? false return this.$store.state.gui.gcodeViewer?.extruderColors ?? false
} }

View File

@ -254,7 +254,8 @@
"Transparency": "Transparency", "Transparency": "Transparency",
"Ultra": "Ultra", "Ultra": "Ultra",
"VoxelMode": "Voxel Mode (ASMBL)", "VoxelMode": "Voxel Mode (ASMBL)",
"ShowGCode": "Show G-Code" "ShowGCode": "Show G-Code",
"CNCMode": "CNC Mode"
}, },
"Heightmap": { "Heightmap": {
"Abort": "abort", "Abort": "abort",

View File

@ -139,6 +139,7 @@ export const getDefaultState = (): GuiState => {
axis_maximum: null, axis_maximum: null,
}, },
showGCodePanel: false, showGCodePanel: false,
cncMode: false,
}, },
uiSettings: { uiSettings: {
logo: defaultLogoColor, logo: defaultLogoColor,

View File

@ -87,6 +87,7 @@ export interface GuiState {
axis_maximum: number[] | null axis_maximum: number[] | null
} }
showGCodePanel: boolean showGCodePanel: boolean
cncMode: boolean
} }
macros?: GuiMacrosState macros?: GuiMacrosState
notifications?: GuiNotificationState notifications?: GuiNotificationState