diff --git a/src/components/three/XRHudInWorld.tsx b/src/components/three/XRHudInWorld.tsx index 4f89c49..dd41d6e 100644 --- a/src/components/three/XRHudInWorld.tsx +++ b/src/components/three/XRHudInWorld.tsx @@ -328,6 +328,15 @@ function ToolsTab(p: XRHudInWorldProps) { const setShowGrid = useModelStore((s) => s.setShowGrid); const measureMode = useModelStore((s) => s.measureMode); const setMeasureMode = useModelStore((s) => s.setMeasureMode); + const selectionMode = useModelStore((s) => s.selectionMode); + const setSelectionMode = useModelStore((s) => s.setSelectionMode); + const selectedCount = useModelStore((s) => s.selectedElementKeys.size); + const hideSelectedElements = useModelStore((s) => s.hideSelectedElements); + const isolateSelectedElements = useModelStore((s) => s.isolateSelectedElements); + const showAllElements = useModelStore((s) => s.showAllElements); + const hasHidden = useModelStore((s) => + s.hiddenElementKeys.size > 0 || s.isolatedElementKeys !== null + ); const scaleRatio = useModelStore((s) => s.scaleRatio); const setScaleRatio = useModelStore((s) => s.setScaleRatio); const resetScale = useModelStore((s) => s.resetScale); @@ -353,52 +362,61 @@ function ToolsTab(p: XRHudInWorldProps) { + - + {/* Selecionar — paridade com a tela inicial */} + Selecionar + 0 ? `${selectedCount} sel.` : 'Selec…') : 'Selec'} + active={selectionMode} onClick={() => setSelectionMode(!selectionMode)} /> + + + + + Opacidade {Math.round(opacity * 100)}% - setOpacity(Math.max(0, opacity - 0.25))} /> - setOpacity(Math.max(0, opacity - 0.05))} /> - setOpacity(Math.min(1, opacity + 0.05))} /> - setOpacity(Math.min(1, opacity + 0.25))} /> - setOpacity(1)} /> - + Escala {scaleRatio.label} {SCALE_LABELS.map((lbl, i) => { const preset = SCALE_PRESETS.find((sp) => sp.label === lbl)!; return ( setScaleRatio(preset)} /> ); })} - {/* Reset Escala — devolve a peça ao tamanho 1:1 (cancela qualquer - escala manual feita com duas mãos). */} - - {/* Limpa todos os labels de medição. */} - - {/* Legenda dos controles para Medir */} {measureMode && ( - + Gatilho D: marcar · A: desfazer · B: limpar · Gatilho E: alternar snap )} - - {/* Grid floor controls */} );