diff --git a/app/src/store/galpaoStore.ts b/app/src/store/galpaoStore.ts
index 1aa8626..962fcc0 100644
--- a/app/src/store/galpaoStore.ts
+++ b/app/src/store/galpaoStore.ts
@@ -10,6 +10,7 @@ interface GalpaoState {
template: GalpaoTemplate;
extraHeight: number; // Altura da platibanda
skirtHeight: number; // Altura da saia
+ viewMode: 'solid' | 'airflow'; // Modo de visualização 3D
// Dimensões do Galpão Retangular
width: number;
@@ -25,6 +26,7 @@ interface GalpaoState {
setTemplate: (val: GalpaoTemplate) => void;
setExtraHeight: (val: number) => void;
setSkirtHeight: (val: number) => void;
+ setViewMode: (val: 'solid' | 'airflow') => void;
setWidth: (val: number) => void;
setLength: (val: number) => void;
setHeight: (val: number) => void;
@@ -42,6 +44,7 @@ export const useGalpaoStore = create
((set, get) => ({
template: 'standard',
extraHeight: 1.5,
skirtHeight: 4.5,
+ viewMode: 'solid',
width: initWidth,
length: initLength,
height: initHeight,
@@ -61,6 +64,7 @@ export const useGalpaoStore = create((set, get) => ({
setTemplate: (val) => set({ template: val }),
setExtraHeight: (val) => set({ extraHeight: val }),
setSkirtHeight: (val) => set({ skirtHeight: val }),
+ setViewMode: (val) => set({ viewMode: val }),
setWidth: (val) => {
set({ width: val });
diff --git a/fix_warehouse.js b/fix_warehouse.js
new file mode 100644
index 0000000..9db81ad
--- /dev/null
+++ b/fix_warehouse.js
@@ -0,0 +1,36 @@
+const fs = require('fs');
+let code = fs.readFileSync('app/src/components/Warehouse3D.tsx', 'utf8');
+
+// Import AirflowSystem
+if (!code.includes('AirflowSystem')) {
+ code = code.replace("import { useGalpaoStore } from '../store/galpaoStore';", "import { useGalpaoStore } from '../store/galpaoStore';\nimport { AirflowSystem } from './three/AirflowSystem';");
+}
+
+// Add viewMode to useGalpaoStore destructuring in WarehouseModel
+if (!code.includes('viewMode = useGalpaoStore')) {
+ code = code.replace("const { width, length, height, roofPitch, wallCpe, roofCpe, template, extraHeight, skirtHeight } = useGalpaoStore();", "const { width, length, height, roofPitch, wallCpe, roofCpe, template, extraHeight, skirtHeight, viewMode } = useGalpaoStore();");
+}
+
+// Add viewMode to PressureArrow
+if (!code.includes('const { viewMode } = useGalpaoStore();') && code.includes('function PressureArrow')) {
+ code = code.replace("const { q } = useWindStore();", "const { q } = useWindStore();\n const { viewMode } = useGalpaoStore();\n if (viewMode === 'airflow') return null;");
+}
+
+// Make meshStandardMaterial transparent
+code = code.replace(/]+)>/g, (match, p1) => {
+ // If it already has transparent, skip
+ if (match.includes("transparent={viewMode")) return match;
+ return ``;
+});
+
+// Add AirflowSystem to the scene
+if (!code.includes('}\n\n {/* === RÓTULOS 3D === */}");
+}
+
+// Rótulos 3D visibility
+if (code.includes('{showMainWalls && (')) {
+ code = code.replace("{showMainWalls && (", "{showMainWalls && viewMode === 'solid' && (");
+}
+
+fs.writeFileSync('app/src/components/Warehouse3D.tsx', code);