Skip to content

Commit 0d88d0e

Browse files
authored
feat: adds basic axis_twist_compensation support (#1838)
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
1 parent 054dbc4 commit 0d88d0e

3 files changed

Lines changed: 44 additions & 5 deletions

File tree

src/components/widgets/toolhead/ToolheadCard.vue

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -224,16 +224,15 @@ export default class ToolheadCard extends Mixins(StateMixin, ToolheadMixin) {
224224
this.printerSettings.bltouch != null ||
225225
this.printerSettings.smart_effector != null ||
226226
this.printerSettings.cartographer != null ||
227-
(
228-
this.printerSettings.scanner != null &&
229-
'sensor' in this.printerSettings.scanner &&
230-
this.printerSettings.scanner.sensor === 'cartographer'
231-
) ||
232227
Object.keys(this.printerSettings)
233228
.some(x => x.startsWith('probe_eddy_current '))
234229
)
235230
}
236231
232+
get printerSupportsAxisTwistCompensationCalibrate (): boolean {
233+
return this.printerSettings.axis_twist_compensation != null
234+
}
235+
237236
get printerSupportsBeaconCalibrate (): boolean {
238237
return this.printerSettings.beacon != null
239238
}
@@ -242,6 +241,13 @@ export default class ToolheadCard extends Mixins(StateMixin, ToolheadMixin) {
242241
return this.printerSettings.cartographer != null
243242
}
244243
244+
get printerSupportsCartographerAxisTwistCompensation (): boolean {
245+
return (
246+
this.printerSettings.cartographer != null &&
247+
this.printerSettings.axis_twist_compensation != null
248+
)
249+
}
250+
245251
get printerSupportsZEndstopCalibrate (): boolean {
246252
return (
247253
this.printerSettings.stepper_z?.position_endstop != null
@@ -338,6 +344,14 @@ export default class ToolheadCard extends Mixins(StateMixin, ToolheadMixin) {
338344
})
339345
}
340346
347+
if (this.printerSupportsAxisTwistCompensationCalibrate) {
348+
tools.push({
349+
name: 'AXIS_TWIST_COMPENSATION_CALIBRATE',
350+
disabled: !this.allHomed || this.isManualProbeActive,
351+
wait: this.$waits.onAxisTwistCompensationCalibrate
352+
})
353+
}
354+
341355
if (this.printerSupportsBeaconCalibrate) {
342356
tools.push({
343357
name: 'BEACON_AUTO_CALIBRATE',
@@ -376,6 +390,14 @@ export default class ToolheadCard extends Mixins(StateMixin, ToolheadMixin) {
376390
})
377391
}
378392
393+
if (this.printerSupportsCartographerAxisTwistCompensation) {
394+
tools.push({
395+
name: 'CARTOGRAPHER_AXIS_TWIST_COMPENSATION',
396+
disabled: !this.allHomed || this.isManualProbeActive,
397+
wait: this.$waits.onCartographerAxisTwistCompensation
398+
})
399+
}
400+
379401
if (this.printerSupportsDeltaCalibrate) {
380402
tools.push({
381403
name: 'DELTA_CALIBRATE',

src/globals.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,7 @@ export const Waits = Object.freeze({
577577
onHomeZ: 'onHomeZ',
578578
onQGL: 'onQGL',
579579
onZTilt: 'onZTilt',
580+
onAxisTwistCompensationCalibrate: 'onAxisTwistCompensationCalibrate',
580581
onBedScrewsAdjust: 'onBedScrewAdjust',
581582
onDatabaseList: 'onDatabaseList',
582583
onDatabaseCompact: 'onDatabaseCompact',
@@ -585,6 +586,7 @@ export const Waits = Object.freeze({
585586
onDatabaseDeleteBackup: 'onDatabaseDeleteBackup',
586587
onBedScrewsCalculate: 'onBedScrewsCalculate',
587588
onBedTiltCalibrate: 'onBedTiltCalibrate',
589+
onCartographerAxisTwistCompensation: 'onCartographerAxisTwistCompensation',
588590
onCartographerScanCalibrate: 'onCartographerScanCalibrate',
589591
onCartographerTouchCalibrate: 'onCartographerTouchCalibrate',
590592
onDeltaCalibrate: 'onDeltaCalibrate',

src/typings/klipper.d.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -880,6 +880,8 @@ declare namespace Klipper {
880880

881881
[key: `temperature_probe ${Lowercase<string>}`]: TemperatureProbeSettings;
882882

883+
axis_twist_compensation: AxisTwistCompensationSettings;
884+
883885
safe_z_home: SafeZHomeSettings;
884886

885887
z_tilt: ZTiltSettings;
@@ -1163,6 +1165,19 @@ declare namespace Klipper {
11631165
smooth_time: number;
11641166
}
11651167

1168+
export interface AxisTwistCompensationSettings {
1169+
horizontal_move_z: number;
1170+
speed: number;
1171+
z_compensations: number[];
1172+
zy_compensations: number[];
1173+
calibrate_start_x?: number;
1174+
calibrate_end_x?: number;
1175+
calibrate_y?: number;
1176+
calibrate_start_y?: number;
1177+
calibrate_end_y?: number;
1178+
calibrate_x?: number;
1179+
}
1180+
11661181
export interface SafeZHomeSettings {
11671182
home_xy_position: [number, number]
11681183
z_hop: number;

0 commit comments

Comments
 (0)