# Correções no modo Medir ## Problemas 1. Ao ativar **Medir**, o OrbitControls é desabilitado (`enabled={!positionMode && !measureMode}`), bloqueando rotação/zoom/pan naturais com o mouse. 2. O label da medida usa `useLabelDistanceFactor` que recalcula `distanceFactor` por frame para manter tamanho **constante** na tela. Resultado: ao aproximar a peça o texto não cresce e fica ilegível. ## Mudanças em `src/components/three/ModelViewer.tsx` ### 1. Reabilitar controles de câmera no modo Medir No `` (linha ~792), trocar: ```tsx enabled={!positionMode && !measureMode} ``` por: ```tsx enabled={!positionMode} ``` O `MeasureClickHandler` já tem **drag gate de 4 px** (`pointerdown` + `pointerup` só conta como clique se o mouse moveu menos que 4 px e foi botão esquerdo). Isso significa: - Botão esquerdo arrastando → OrbitControls rotaciona, nenhum ponto é adicionado. - Botão direito → pan do OrbitControls (handler ignora `e.button !== 0`). - Roda → zoom do OrbitControls (handler ignora). - Clique curto esquerdo → adiciona ponto de medida (com snap). ### 2. Label da medida escala com o zoom e fica ~4x maior Substituir `MeasurementLabel` para usar `distanceFactor` **fixo** (em vez de calculado por frame). Com ``, o tamanho na tela é proporcional a `N / distance` — ou seja, **cresce naturalmente ao aproximar a câmera**. - Remover o uso de `useLabelDistanceFactor` no label de medida (manter, se desejado, apenas no `hoverInfo`). - Definir `distanceFactor` fixo calibrado para 1:1 mm (valor inicial ~`8`, ajustável). - Aumentar o tamanho base do texto de `text-[11px]` para `text-[16px]` e `px-2 py-0.5` → `px-3 py-1` para acompanhar a proporção (~4x área visual final somando o aumento do distanceFactor + texto). ```tsx function MeasurementLabel({ position, text, variant }: { ... }) { const borderClass = variant === 'success' ? 'border-success/60' : 'border-primary/60'; const textClass = variant === 'success' ? 'text-success' : 'text-primary'; return (
{text}
); } ``` O `hoverInfo` (auto-detect) pode manter o comportamento atual de tamanho constante para não poluir a cena ao passar o mouse. ## Sem mudanças em outros arquivos Store, AR, snap e PointMarker permanecem intocados.