Nuestro hogar en Narvarte
| Espacio | m² | $/m² | Total |
|---|
| # | Espacio | Área (m²) | Tipo |
|---|
Fotos del depto 402 vacío — marzo 2026. Click para ampliar.
Plano interactivo — usa los filtros de capas dentro del visor
| # | Tipo | Medida (m) | Material |
|---|
| Concepto | Estimado | Real | Status |
|---|---|---|---|
| TOTAL | $0 | $0 |
Exporta o importa todos tus datos de Casita (dashboard, distribución, editor de cuartos, moodboard y más).
Agrega imágenes de Pinterest, fotos, paletas de colores para cada espacio
Cada paso depende de los anteriores. No puedes completar un paso si sus dependencias no están listas.
Precios promedio CDMX 2026. Selecciona conceptos, calidad y cantidad para estimar tu presupuesto.
Estimado automático basado en m² del plano (si disponible).
'+p.body+'
'+pr.telefono+'
'+pr.web+'
'; } // Event log const elc=$('#event-log-container'); if(elc) elc.innerHTML=d.eventos.map(e=>'Abre el editor de distribución para ver las áreas.
'; return; } try{ const data=JSON.parse(raw); const rooms=data.rooms||data; if(!Array.isArray(rooms)||rooms.length===0){ grid.innerHTML='Abre el editor de distribución para ver las áreas.
'; return; } // Shoelace formula for polygon area function shoelace(points){ let area=0; const n=points.length; for(let i=0;iNo se encontraron espacios con dimensiones.
'; return; } grid.innerHTML=html; }catch(e){ grid.innerHTML='Error al leer datos de distribución.
'; } } renderRoomAreas(); // Re-render when localStorage changes (e.g. from distribucion editor in another tab) window.addEventListener('storage',function(e){ if(e.key==='casita_distribution')renderRoomAreas(); }); // PRO AREA TABLE function renderProAreas(){ const raw=localStorage.getItem('casita_distribution'); const body=$('#pro-areas-body');const foot=$('#pro-areas-foot'); const empty=$('#pro-areas-empty');const tbl=$('#pro-areas-table'); if(!body)return; if(!raw){if(empty)empty.style.display='block';if(tbl)tbl.style.display='none';return;} const rooms=JSON.parse(raw); const PX=60; const types={'Sala':'Social','Comedor':'Social','Cocina':'Servicio','Cto':'Servicio', 'Oficina':'Privado','Cuarto':'Privado','Bano':'Servicio','Closet':'Privado', 'Pasillo':'Circulación','Baño':'Servicio'}; let html='';let total=0;let byType={}; rooms.forEach((r,i)=>{ let area=0; if(r.points){const pts=r.points;let a=0;for(let j=0;j