fix laser utility calculations
This commit is contained in:
parent
b59e8e54bb
commit
0855724cb0
5 changed files with 58 additions and 131 deletions
|
|
@ -21,16 +21,19 @@ export default function Page() {
|
|||
const dUm = num(spotUm); // µm
|
||||
|
||||
if (v <= 0 || f <= 0 || dUm <= 0) {
|
||||
return { spacingUm: 0, spacingMm: 0, overlapPct: 0, pulsesPerMm: 0 };
|
||||
return { spacingUm: 0, spacingMm: 0, overlapPct: 0, gapPct: 0, pulsesPerMm: 0, pulsesPerSpot: 0 };
|
||||
}
|
||||
|
||||
// distance per pulse
|
||||
const spacingUm = v / f; // µm (derives from v(mm/s) / (f(kHz)*1000) * 1000)
|
||||
const spacingMm = spacingUm / 1000;
|
||||
const overlapPct = Math.max(0, Math.min(100, 100 * (1 - spacingUm / dUm)));
|
||||
const signedOverlapPct = 100 * (1 - spacingUm / dUm);
|
||||
const overlapPct = Math.max(0, signedOverlapPct);
|
||||
const gapPct = Math.max(0, -signedOverlapPct);
|
||||
const pulsesPerMm = (f * 1000) / v;
|
||||
const pulsesPerSpot = dUm / spacingUm;
|
||||
|
||||
return { spacingUm, spacingMm, overlapPct, pulsesPerMm };
|
||||
return { spacingUm, spacingMm, overlapPct, gapPct, pulsesPerMm, pulsesPerSpot };
|
||||
}, [speed, freq, spotUm]);
|
||||
|
||||
return (
|
||||
|
|
@ -68,20 +71,24 @@ export default function Page() {
|
|||
<div>
|
||||
<div className="text-sm text-muted-foreground">Overlap</div>
|
||||
<div className="text-lg">{result.overlapPct.toFixed(1)}%</div>
|
||||
{result.gapPct > 0 && (
|
||||
<div className="text-xs text-amber-600">{result.gapPct.toFixed(1)}% gap between pulses</div>
|
||||
)}
|
||||
</div>
|
||||
<div>
|
||||
<div className="text-sm text-muted-foreground">Pulses per mm</div>
|
||||
<div className="text-lg">{result.pulsesPerMm.toFixed(1)}</div>
|
||||
</div>
|
||||
<div>
|
||||
<div className="text-sm text-muted-foreground">Rule of thumb</div>
|
||||
<div className="text-xs">
|
||||
60–80% overlap is common for marking; deeper engraving often higher.
|
||||
</div>
|
||||
<div className="text-sm text-muted-foreground">Pulses per spot diameter</div>
|
||||
<div className="text-lg">{result.pulsesPerSpot.toFixed(2)}</div>
|
||||
</div>
|
||||
</CardContent>
|
||||
</Card>
|
||||
<p className="mt-4 text-xs leading-relaxed text-muted-foreground">
|
||||
Geometric overlap along the scan direction only. It does not predict material response;
|
||||
pulse energy, spot profile, hatch spacing, and thermal accumulation also matter.
|
||||
</p>
|
||||
</ToolShell>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue