🚀 Auto-deploy: BrainWind atualizado em 13/07/2026 18:50:57
This commit is contained in:
@@ -73,24 +73,23 @@ const PiperackModule: React.FC = () => {
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Forças e Cargas',
|
||||
title: 'Forças e Momentos Globais',
|
||||
type: 'grid',
|
||||
gridItems: [
|
||||
{ label: 'Carga Linear Pórtico Frontal', value: `${result.linearLoadFront.toFixed(2)} kN/m` },
|
||||
{ label: 'Carga Linear Pórtico Traseiros (cada)', value: `${result.linearLoadBack.toFixed(2)} kN/m` },
|
||||
{ label: 'Carga Linear Pórticos Traseiros (cada)', value: `${result.linearLoadBack.toFixed(2)} kN/m` },
|
||||
{ label: 'Força Global Total', value: `${result.globalForce.toFixed(2)} kN` },
|
||||
{ label: 'Momento Total de Tombamento', value: `${(result.linearLoadFront * width * elevation + (numFrames > 1 ? (numFrames - 1) * result.linearLoadBack * width * elevation : 0)).toFixed(2)} kN·m` },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Reações Simplificadas na Base (Binário de Tombamento)',
|
||||
title: 'Reações Globais Simplificadas (Ação de Conjunto)',
|
||||
type: 'grid',
|
||||
gridItems: [
|
||||
{ label: 'Pórtico Frontal - Momento (M)', value: `${(result.linearLoadFront * width * elevation).toFixed(2)} kN·m` },
|
||||
{ label: 'Pórtico Frontal - C1 (Tração) / C2 (Compressão)', value: `±${((result.linearLoadFront * width * elevation) / spacing).toFixed(2)} kN` },
|
||||
...(numFrames > 1 ? [
|
||||
{ label: 'Pórtico Traseiro - Momento (M)', value: `${(result.linearLoadBack * width * elevation).toFixed(2)} kN·m` },
|
||||
{ label: 'Pórtico Traseiro - C1 (Tração) / C2 (Compressão)', value: `±${((result.linearLoadBack * width * elevation) / spacing).toFixed(2)} kN` },
|
||||
] : [])
|
||||
gridItems: numFrames > 1 ? [
|
||||
{ label: 'Braço de Alavanca Total (L)', value: `${((numFrames - 1) * spacing).toFixed(2)} m` },
|
||||
{ label: `Reação nas Extremidades (C1 / C${numFrames})`, value: `±${((result.linearLoadFront * width * elevation + (numFrames - 1) * result.linearLoadBack * width * elevation) / ((numFrames - 1) * spacing)).toFixed(2)} kN` },
|
||||
] : [
|
||||
{ label: 'Momento Fletor na Base (Pórtico Único)', value: `${(result.linearLoadFront * width * elevation).toFixed(2)} kN·m` }
|
||||
],
|
||||
}
|
||||
];
|
||||
@@ -260,11 +259,19 @@ const PiperackModule: React.FC = () => {
|
||||
<span className="font-mono font-bold text-primary">{result.linearLoadBack.toFixed(2)} kN/m</span>
|
||||
</div>
|
||||
|
||||
<div className="pt-2">
|
||||
<h4 className="font-semibold text-sm mb-3">Reações Simplificadas (Vista Lateral)</h4>
|
||||
<div className="bg-muted/30 p-3 rounded-md border text-xs space-y-4">
|
||||
{(() => {
|
||||
const mFrontal = result.linearLoadFront * width * elevation;
|
||||
const mTraseiro = numFrames > 1 ? result.linearLoadBack * width * elevation : 0;
|
||||
const mTotal = mFrontal + (numFrames - 1) * mTraseiro;
|
||||
const braco = (numFrames - 1) * spacing;
|
||||
const reacaoGlobal = braco > 0 ? mTotal / braco : 0;
|
||||
|
||||
<svg width="100%" height="150" viewBox="0 0 300 150" className="bg-white rounded border">
|
||||
return (
|
||||
<div className="pt-2">
|
||||
<h4 className="font-semibold text-sm mb-3">Reações Simplificadas (Vista Lateral)</h4>
|
||||
<div className="bg-muted/30 p-3 rounded-md border text-xs space-y-4">
|
||||
|
||||
<svg width="100%" height="150" viewBox="0 0 300 150" className="bg-white rounded border">
|
||||
{/* Linha do chão */}
|
||||
<line x1="20" y1="110" x2="280" y2="110" stroke="#cbd5e1" strokeWidth="2" />
|
||||
|
||||
@@ -354,24 +361,31 @@ const PiperackModule: React.FC = () => {
|
||||
</defs>
|
||||
</svg>
|
||||
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
<div className="space-y-1">
|
||||
<div className="font-bold text-primary">Pórtico Frontal</div>
|
||||
<div className="flex justify-between text-muted-foreground"><span>F (Transv.):</span> <span className="font-mono">{(result.linearLoadFront * width).toFixed(2)} kN</span></div>
|
||||
<div className="flex justify-between text-muted-foreground"><span>Momento:</span> <span className="font-mono">{(result.linearLoadFront * width * elevation).toFixed(2)} kN·m</span></div>
|
||||
<div className="flex justify-between text-muted-foreground"><span>Reação (C1/C2):</span> <span className="font-mono">±{((result.linearLoadFront * width * elevation) / spacing).toFixed(2)} kN</span></div>
|
||||
</div>
|
||||
{numFrames > 1 && (
|
||||
<div className="space-y-1">
|
||||
<div className="font-bold text-primary">Pórticos Traseiros</div>
|
||||
<div className="flex justify-between text-muted-foreground"><span>F (Transv.):</span> <span className="font-mono">{(result.linearLoadBack * width).toFixed(2)} kN</span></div>
|
||||
<div className="flex justify-between text-muted-foreground"><span>Momento:</span> <span className="font-mono">{(result.linearLoadBack * width * elevation).toFixed(2)} kN·m</span></div>
|
||||
<div className="flex justify-between text-muted-foreground"><span>Reação (C1/C2):</span> <span className="font-mono">±{((result.linearLoadBack * width * elevation) / spacing).toFixed(2)} kN</span></div>
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-4 pt-2">
|
||||
<div className="space-y-1">
|
||||
<div className="font-bold text-primary">Forças e Momentos</div>
|
||||
<div className="flex justify-between text-muted-foreground"><span>F. Frontal:</span> <span className="font-mono">{(result.linearLoadFront * width).toFixed(2)} kN</span></div>
|
||||
{numFrames > 1 && <div className="flex justify-between text-muted-foreground"><span>F. Traseiros (Total):</span> <span className="font-mono">{((numFrames - 1) * result.linearLoadBack * width).toFixed(2)} kN</span></div>}
|
||||
<div className="flex justify-between text-muted-foreground font-semibold mt-1"><span>Momento Global:</span> <span className="font-mono">{mTotal.toFixed(2)} kN·m</span></div>
|
||||
</div>
|
||||
<div className="space-y-1">
|
||||
<div className="font-bold text-primary">Reações Globais (Conjunto)</div>
|
||||
{numFrames > 1 ? (
|
||||
<>
|
||||
<div className="flex justify-between text-muted-foreground"><span>Alavanca Total (L):</span> <span className="font-mono">{braco.toFixed(2)} m</span></div>
|
||||
<div className="flex justify-between text-muted-foreground font-semibold mt-1"><span>Reação (C1/C{numFrames}):</span> <span className="font-mono text-primary">±{reacaoGlobal.toFixed(2)} kN</span></div>
|
||||
</>
|
||||
) : (
|
||||
<div className="text-muted-foreground text-[10px] leading-tight mt-1">
|
||||
Pórtico único. O momento de {mTotal.toFixed(2)} kN·m é absorvido como momento fletor engastado nas bases das colunas.
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
})()}
|
||||
</CardContent>
|
||||
</Card>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user