UNPKG

@scalenc/nc-format

Version:

Library for handling TRUMPF NC file format.

60 lines 2.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Transformation = void 0; const Constants_1 = require("./Constants"); const Variables_1 = require("./Variables"); class Transformation { machine; variables = new Variables_1.Variables(); constructor(machine) { this.machine = machine; } applyToVars(variables) { this.applyToAllLinearAxes(variables, this.applyToPoint.bind(this)); } applyReverseToVars(variables) { this.applyToAllLinearAxes(variables, this.applyReverseToPoint.bind(this)); } applyToPoint(point) { return this.applyTranslationTo(this.applyRotationTo(point, 1.0), 1.0); } applyReverseToPoint(point) { return this.applyRotationTo(this.applyTranslationTo(point, -1.0), -1.0); } applyToAllLinearAxes(variables, applyFunc) { this.machine.linearAxes.forEach((a) => { if (a.names.length >= 2) { this.applyToGivenVars(variables, a.names[0], a.names[1], applyFunc, true); } if (a.centerNames.length >= 2) { this.applyToGivenVars(variables, a.centerNames[0], a.centerNames[1], applyFunc, false); } }); } applyToGivenVars(variables, xName, yName, applyFunc, force) { const x = variables.tryGetNumber(xName); const y = variables.tryGetNumber(yName); if (force || x !== undefined || y !== undefined) { const transformed = applyFunc({ x: x ?? 0, y: y ?? 0 }); variables.setNumber(xName, transformed.x); variables.setNumber(yName, transformed.y); } } applyRotationTo(point, sign) { const rotationAngleDeg = sign * this.variables.getNumberOrDefault(Constants_1.Constants.TRANSFORM_ANGLE); if (!rotationAngleDeg) { return point; } const rotationAngleRad = (Math.PI * rotationAngleDeg) / 180.0; const cos = Math.cos(rotationAngleRad); const sin = Math.sin(rotationAngleRad); return { x: point.x * cos - point.y * sin, y: point.x * sin + point.y * cos }; } applyTranslationTo(point, sign) { const translationX = sign * this.variables.getNumberOrDefault(Constants_1.Constants.TRANSFORM_X); const translationY = sign * this.variables.getNumberOrDefault(Constants_1.Constants.TRANSFORM_Y); return { x: point.x + translationX, y: point.y + translationY }; } } exports.Transformation = Transformation; //# sourceMappingURL=Transformation.js.map