@linkiez/glory-star-calculator
Version:
Calculadora de tempo de corte para arquivos SVG da máquina GloryStar_GS3015
94 lines • 3.83 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const dxf_parser_1 = __importDefault(require("dxf-parser"));
const fs_1 = __importDefault(require("fs"));
const cuttingCalculator_1 = require("./cuttingCalculator");
const dxf = fs_1.default.readFileSync('./src/LPEL-1530.dxf', 'utf8');
const parser = new dxf_parser_1.default();
const parsed = parser.parseSync(dxf);
if (!parsed || !parsed.entities) {
console.error('DXF não pôde ser lido ou não possui entidades.');
process.exit(1);
}
console.log('--- Detalhamento de comprimento de cada entidade ---');
let total = 0;
let idx = 0;
parsed.entities.forEach((e) => {
let len = 0;
if (e.type === 'LINE') {
if (e.vertices && e.vertices.length === 2) {
len = (0, cuttingCalculator_1.calculateDistance)(e.vertices[0], e.vertices[1]);
}
else {
len = (0, cuttingCalculator_1.calculateDistance)({ x: e.x1, y: e.y1 }, { x: e.x2, y: e.y2 });
}
console.log(`#${idx} LINE: ${len.toFixed(4)} mm`);
total += len;
}
else if (e.type === 'CIRCLE') {
len = 2 * Math.PI * e.radius;
console.log(`#${idx} CIRCLE: ${len.toFixed(4)} mm`);
total += len;
}
else if (e.type === 'ARC') {
const start = e.startAngle;
const end = e.endAngle;
let sweep = end - start;
if (sweep < 0)
sweep += 360;
len = (Math.PI * 2 * e.radius) * (sweep / 360);
console.log(`#${idx} ARC: ${len.toFixed(4)} mm (ângulo: ${sweep}°)`);
total += len;
}
idx++;
});
console.log('-----------------------------------------------');
console.log('Soma total das entidades:', total.toFixed(4), 'mm');
// Comparação automática com valores esperados
const esperadoDistancia = 486;
const esperadoTempo = 17;
const result = (0, cuttingCalculator_1.calculateCuttingTimeFromDxf)(dxf, { materialThickness: 3, optimize: true });
console.log('\n--- Comparação automática ---');
console.log('Distância de corte calculada:', result.cuttingDistance.toFixed(4), 'mm');
console.log('Tempo total calculado:', result.totalTimeSec.toFixed(2), 's');
console.log('Esperado: 486 mm, 17 s');
console.log('Diferença de distância:', (result.cuttingDistance - esperadoDistancia).toFixed(4), 'mm');
console.log('Diferença de tempo:', (result.totalTimeSec - esperadoTempo).toFixed(2), 's');
// Comparação de entidades do DXF (bruto) e do parser
console.log('\n--- COMPARAÇÃO DE ENTIDADES DXF (BRUTO) x PARSER ---');
// Lê o arquivo DXF como texto e conta entidades brutas
const dxfRaw = dxf;
const entityTypesRaw = {};
const entityRegex = /^0\s*([A-Z_]+)$/gm;
let match;
while ((match = entityRegex.exec(dxfRaw)) !== null) {
const type = match[1];
entityTypesRaw[type] = (entityTypesRaw[type] || 0) + 1;
}
console.log('Entidades brutas no DXF:');
console.log(entityTypesRaw);
// Conta entidades do parser
const entityTypesParsed = {};
parsed.entities.forEach(e => {
entityTypesParsed[e.type] = (entityTypesParsed[e.type] || 0) + 1;
});
console.log('Entidades reconhecidas pelo parser:');
console.log(entityTypesParsed);
// Mostra diferenças
console.log('\nDiferenças entre DXF bruto e parser:');
for (const type in entityTypesRaw) {
const rawCount = entityTypesRaw[type];
const parsedCount = entityTypesParsed[type] || 0;
if (rawCount !== parsedCount) {
console.log(`Tipo ${type}: DXF=${rawCount}, Parser=${parsedCount}`);
}
}
for (const type in entityTypesParsed) {
if (!(type in entityTypesRaw)) {
console.log(`Tipo ${type}: DXF=0, Parser=${entityTypesParsed[type]}`);
}
}
//# sourceMappingURL=review-dxf-detalhe.js.map