{"id":31097,"date":"2026-10-18T02:21:40","date_gmt":"2026-10-18T00:21:40","guid":{"rendered":"https:\/\/starmodul.com\/?page_id=31097"},"modified":"2026-10-18T03:29:23","modified_gmt":"2026-10-18T01:29:23","slug":"3d-projects","status":"publish","type":"page","link":"https:\/\/starmodul.com\/en\/3d-projects\/","title":{"rendered":"3D projects"},"content":{"rendered":"<div class=\"product\"><div class=\"product\">\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"31097\" class=\"elementor elementor-31097 elementor-31093 elementor-bc-flex-widget\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-99cf66e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"99cf66e\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-extended\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6c2426b\" data-id=\"6c2426b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-87c290a elementor-widget elementor-widget-text-editor\" data-id=\"87c290a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"margin:0;color:#F39200;font-size:12px;font-weight:800;letter-spacing:1px;text-transform:uppercase;\">Real projects in 3D<\/p><div style=\"height:14px\"><\/div><h1 style=\"margin:0;color:#0D2148;font-size:44px;line-height:1.08;font-weight:800;\">Steel warehouses and structures <span style=\"color:#F39200;\">in 3D<\/span><\/h1><div style=\"height:16px\"><\/div><div style=\"max-width:760px\"><p style=\"margin:0;color:#334155;font-size:17px;line-height:1.65;\">Rotate, zoom and take apart real StarModul projects. Hide the panels to see the structure and the bolted connections, isolate a part, measure distances or cut the model floor by floor.<\/p><\/div><div style=\"height:22px\"><\/div><div style=\"display:flex;flex-wrap:wrap;gap:10px\"><span style=\"display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:#fff;box-shadow:inset 0 0 0 1px rgba(13,33,72,.12);color:#0D2148;font-size:14px;font-weight:600;\"><span style=\"width:7px;height:7px;border-radius:50%;background:#F39200;\"><\/span><b style=\"font-variant-numeric:tabular-nums;\">22<\/b> models<\/span><span style=\"display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:#fff;box-shadow:inset 0 0 0 1px rgba(13,33,72,.12);color:#0D2148;font-size:14px;font-weight:600;\"><span style=\"width:7px;height:7px;border-radius:50%;background:#F39200;\"><\/span>Bolted connections<\/span><span style=\"display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:#fff;box-shadow:inset 0 0 0 1px rgba(13,33,72,.12);color:#0D2148;font-size:14px;font-weight:600;\"><span style=\"width:7px;height:7px;border-radius:50%;background:#F39200;\"><\/span>No welding on site<\/span><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-128803f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"128803f\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-extended\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-68e0f50\" data-id=\"68e0f50\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8be3fb7 elementor-widget elementor-widget-html\" data-id=\"8be3fb7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"sm3f\"><script>window.SM3D_MODELS=[{\"s\":\"nave-torreserona\",\"t\":\"Industrial warehouse \u00b7 Torreserona (Lleida)\",\"m\":\"Footprint 16.6 \u00d7 49.5 m \u00b7 height 7.1 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-torreserona.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-torreserona-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-torreserona-3d-estructura.jpg\",\"a\":\"Industrial warehouse \u00b7 Torreserona (Lleida)\",\"k\":\"nave\"},{\"s\":\"aulas-cardoner\",\"t\":\"Modular classrooms \u00b7 Cardoner (Barcelona)\",\"m\":\"Footprint 13.9 \u00d7 21 m \u00b7 height 3.8 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/aulas-cardoner.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/aulas-cardoner-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/aulas-cardoner-3d-estructura.jpg\",\"a\":\"Modular classrooms \u00b7 Cardoner (Barcelona)\",\"k\":\"edif\"},{\"s\":\"estructura-edificio-b166\",\"t\":\"Steel structure\",\"m\":\"Footprint 16.3 \u00d7 30.6 m \u00b7 height 6.9 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-edificio-b166.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-edificio-b166-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-edificio-b166-3d-estructura.jpg\",\"a\":\"Steel structure\",\"k\":\"est\"},{\"s\":\"modulo-montcada\",\"t\":\"Steel structure module \u00b7 Montcada i Reixac (Barcelona)\",\"m\":\"Footprint 5 \u00d7 7.4 m \u00b7 height 3.5 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/modulo-montcada.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/modulo-montcada-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/modulo-montcada-3d-estructura.jpg\",\"a\":\"Steel structure module \u00b7 Montcada i Reixac (Barcelona)\",\"k\":\"edif\"},{\"s\":\"edificio-tenerife\",\"t\":\"Steel-framed building \u00b7 Tenerife\",\"m\":\"Footprint 7.3 \u00d7 32.3 m \u00b7 height 6.6 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-tenerife.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-tenerife-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-tenerife-3d-estructura.jpg\",\"a\":\"Steel-framed building \u00b7 Tenerife\",\"k\":\"edif\"},{\"s\":\"nave-terrassa\",\"t\":\"Industrial warehouse \u00b7 Terrassa (Barcelona)\",\"m\":\"Footprint 17.2 \u00d7 29.7 m \u00b7 height 5.8 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-terrassa.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-terrassa-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-terrassa-3d-estructura.jpg\",\"a\":\"Industrial warehouse \u00b7 Terrassa (Barcelona)\",\"k\":\"nave\"},{\"s\":\"edificio-canarias\",\"t\":\"Steel-framed building \u00b7 Canary Islands\",\"m\":\"Footprint 20.3 \u00d7 25.1 m \u00b7 height 6.4 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-canarias.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-canarias-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-canarias-3d-estructura.jpg\",\"a\":\"Steel-framed building \u00b7 Canary Islands\",\"k\":\"edif\"},{\"s\":\"oficinas-copa-america\",\"t\":\"Modular offices \u00b7 Barcelona\",\"m\":\"Footprint 5.2 \u00d7 24.1 m \u00b7 height 3.5 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/oficinas-copa-america.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/oficinas-copa-america-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/oficinas-copa-america-3d-estructura.jpg\",\"a\":\"Modular offices \u00b7 Barcelona\",\"k\":\"edif\"},{\"s\":\"edificio-santa-cruz\",\"t\":\"Steel-framed building \u00b7 Santa Cruz de Tenerife\",\"m\":\"Footprint 21.4 \u00d7 38.2 m \u00b7 height 5.4 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-santa-cruz.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-santa-cruz-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-santa-cruz-3d-estructura.jpg\",\"a\":\"Steel-framed building \u00b7 Santa Cruz de Tenerife\",\"k\":\"edif\"},{\"s\":\"nave-dos-aguas\",\"t\":\"Industrial warehouse\",\"m\":\"Footprint 10.5 \u00d7 30.2 m \u00b7 height 6.5 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-dos-aguas.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-dos-aguas-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-dos-aguas-3d-estructura.jpg\",\"a\":\"Industrial warehouse\",\"k\":\"nave\"},{\"s\":\"nave-gava\",\"t\":\"Industrial warehouse \u00b7 Gav\u00e0 (Barcelona)\",\"m\":\"Footprint 7.6 \u00d7 12.6 m \u00b7 height 11.8 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-gava.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-gava-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-gava-3d-estructura.jpg\",\"a\":\"Industrial warehouse \u00b7 Gav\u00e0 (Barcelona)\",\"k\":\"nave\"},{\"s\":\"porche-terrassa\",\"t\":\"Steel canopy \u00b7 Terrassa (Barcelona)\",\"m\":\"Footprint 7.3 \u00d7 21.4 m \u00b7 height 4.3 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/porche-terrassa.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/porche-terrassa-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/porche-terrassa-3d-estructura.jpg\",\"a\":\"Steel canopy \u00b7 Terrassa (Barcelona)\",\"k\":\"porche\"},{\"s\":\"nave-mollerussa\",\"t\":\"Industrial warehouse \u00b7 Mollerussa (Lleida)\",\"m\":\"Footprint 30.5 \u00d7 46.2 m \u00b7 height 7 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-mollerussa.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-mollerussa-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-mollerussa-3d-estructura.jpg\",\"a\":\"Industrial warehouse \u00b7 Mollerussa (Lleida)\",\"k\":\"nave\"},{\"s\":\"nave-gabon\",\"t\":\"Industrial warehouse \u00b7 Gabon\",\"m\":\"Footprint 30.9 \u00d7 31.3 m \u00b7 height 10.3 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-gabon.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-gabon-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-gabon-3d-estructura.jpg\",\"a\":\"Industrial warehouse \u00b7 Gabon\",\"k\":\"nave\"},{\"s\":\"porche-bellots\",\"t\":\"Steel canopy \u00b7 Terrassa (Barcelona)\",\"m\":\"Footprint 7.4 \u00d7 31.7 m \u00b7 height 3.9 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/porche-bellots.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/porche-bellots-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/porche-bellots-3d-estructura.jpg\",\"a\":\"Steel canopy \u00b7 Terrassa (Barcelona)\",\"k\":\"porche\"},{\"s\":\"almacen-os-de-balaguer\",\"t\":\"Steel storage building \u00b7 Os de Balaguer (Lleida)\",\"m\":\"Footprint 10.3 \u00d7 20.4 m \u00b7 height 5.1 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/almacen-os-de-balaguer.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/almacen-os-de-balaguer-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/almacen-os-de-balaguer-3d-estructura.jpg\",\"a\":\"Steel storage building \u00b7 Os de Balaguer (Lleida)\",\"k\":\"nave\"},{\"s\":\"estructura-fira-lleida\",\"t\":\"Steel structure \u00b7 Fira de Lleida\",\"m\":\"Footprint 12.8 \u00d7 30.3 m \u00b7 height 6.8 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-fira-lleida.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-fira-lleida-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-fira-lleida-3d-estructura.jpg\",\"a\":\"Steel structure \u00b7 Fira de Lleida\",\"k\":\"est\"},{\"s\":\"almacen-portico\",\"t\":\"Steel storage building\",\"m\":\"Footprint 9 \u00d7 9.4 m \u00b7 height 5.7 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/almacen-portico.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/almacen-portico-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/almacen-portico-3d-estructura.jpg\",\"a\":\"Steel storage building\",\"k\":\"nave\"},{\"s\":\"edificio-pirineo\",\"t\":\"Steel-framed building \u00b7 Pyrenees\",\"m\":\"Footprint 6.1 \u00d7 12.9 m \u00b7 height 8 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-pirineo.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-pirineo-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-pirineo-3d-estructura.jpg\",\"a\":\"Steel-framed building \u00b7 Pyrenees\",\"k\":\"edif\"},{\"s\":\"estructura-castelloli\",\"t\":\"Steel structure \u00b7 Circuit de Castellol\u00ed (Barcelona)\",\"m\":\"Footprint 12.2 \u00d7 25.3 m \u00b7 height 5.7 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-castelloli.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-castelloli-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-castelloli-3d-estructura.jpg\",\"a\":\"Steel structure \u00b7 Circuit de Castellol\u00ed (Barcelona)\",\"k\":\"est\"},{\"s\":\"edificio-murcia\",\"t\":\"Steel-framed building \u00b7 Murcia\",\"m\":\"Footprint 9.9 \u00d7 15.5 m \u00b7 height 9.5 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-murcia.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-murcia-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-murcia-3d-estructura.jpg\",\"a\":\"Steel-framed building \u00b7 Murcia\",\"k\":\"edif\"},{\"s\":\"estructura-nave-andosana\",\"t\":\"Industrial warehouse\",\"m\":\"Footprint 12.2 \u00d7 44.5 m \u00b7 height 5.4 m\",\"g\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-nave-andosana.glb\",\"p1\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-nave-andosana-3d.jpg\",\"p2\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-nave-andosana-3d-estructura.jpg\",\"a\":\"Industrial warehouse\",\"k\":\"nave\"}];<\/script><script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"ItemList\",\"name\":\"3D projects\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"3DModel\",\"name\":\"Industrial warehouse \u00b7 Torreserona (Lleida)\",\"description\":\"Footprint 16.6 \u00d7 49.5 m \u00b7 height 7.1 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-torreserona-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-torreserona.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"3DModel\",\"name\":\"Modular classrooms \u00b7 Cardoner (Barcelona)\",\"description\":\"Footprint 13.9 \u00d7 21 m \u00b7 height 3.8 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/aulas-cardoner-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/aulas-cardoner.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":3,\"item\":{\"@type\":\"3DModel\",\"name\":\"Steel structure\",\"description\":\"Footprint 16.3 \u00d7 30.6 m \u00b7 height 6.9 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-edificio-b166-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-edificio-b166.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":4,\"item\":{\"@type\":\"3DModel\",\"name\":\"Steel structure module \u00b7 Montcada i Reixac (Barcelona)\",\"description\":\"Footprint 5 \u00d7 7.4 m \u00b7 height 3.5 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/modulo-montcada-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/modulo-montcada.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":5,\"item\":{\"@type\":\"3DModel\",\"name\":\"Steel-framed building \u00b7 Tenerife\",\"description\":\"Footprint 7.3 \u00d7 32.3 m \u00b7 height 6.6 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-tenerife-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-tenerife.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":6,\"item\":{\"@type\":\"3DModel\",\"name\":\"Industrial warehouse \u00b7 Terrassa (Barcelona)\",\"description\":\"Footprint 17.2 \u00d7 29.7 m \u00b7 height 5.8 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-terrassa-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-terrassa.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":7,\"item\":{\"@type\":\"3DModel\",\"name\":\"Steel-framed building \u00b7 Canary Islands\",\"description\":\"Footprint 20.3 \u00d7 25.1 m \u00b7 height 6.4 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-canarias-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-canarias.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":8,\"item\":{\"@type\":\"3DModel\",\"name\":\"Modular offices \u00b7 Barcelona\",\"description\":\"Footprint 5.2 \u00d7 24.1 m \u00b7 height 3.5 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/oficinas-copa-america-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/oficinas-copa-america.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":9,\"item\":{\"@type\":\"3DModel\",\"name\":\"Steel-framed building \u00b7 Santa Cruz de Tenerife\",\"description\":\"Footprint 21.4 \u00d7 38.2 m \u00b7 height 5.4 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-santa-cruz-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-santa-cruz.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":10,\"item\":{\"@type\":\"3DModel\",\"name\":\"Industrial warehouse\",\"description\":\"Footprint 10.5 \u00d7 30.2 m \u00b7 height 6.5 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-dos-aguas-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-dos-aguas.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":11,\"item\":{\"@type\":\"3DModel\",\"name\":\"Industrial warehouse \u00b7 Gav\u00e0 (Barcelona)\",\"description\":\"Footprint 7.6 \u00d7 12.6 m \u00b7 height 11.8 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-gava-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-gava.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":12,\"item\":{\"@type\":\"3DModel\",\"name\":\"Steel canopy \u00b7 Terrassa (Barcelona)\",\"description\":\"Footprint 7.3 \u00d7 21.4 m \u00b7 height 4.3 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/porche-terrassa-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/porche-terrassa.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":13,\"item\":{\"@type\":\"3DModel\",\"name\":\"Industrial warehouse \u00b7 Mollerussa (Lleida)\",\"description\":\"Footprint 30.5 \u00d7 46.2 m \u00b7 height 7 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-mollerussa-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-mollerussa.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":14,\"item\":{\"@type\":\"3DModel\",\"name\":\"Industrial warehouse \u00b7 Gabon\",\"description\":\"Footprint 30.9 \u00d7 31.3 m \u00b7 height 10.3 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-gabon-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/nave-gabon.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":15,\"item\":{\"@type\":\"3DModel\",\"name\":\"Steel canopy \u00b7 Terrassa (Barcelona)\",\"description\":\"Footprint 7.4 \u00d7 31.7 m \u00b7 height 3.9 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/porche-bellots-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/porche-bellots.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":16,\"item\":{\"@type\":\"3DModel\",\"name\":\"Steel storage building \u00b7 Os de Balaguer (Lleida)\",\"description\":\"Footprint 10.3 \u00d7 20.4 m \u00b7 height 5.1 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/almacen-os-de-balaguer-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/almacen-os-de-balaguer.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":17,\"item\":{\"@type\":\"3DModel\",\"name\":\"Steel structure \u00b7 Fira de Lleida\",\"description\":\"Footprint 12.8 \u00d7 30.3 m \u00b7 height 6.8 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-fira-lleida-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-fira-lleida.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":18,\"item\":{\"@type\":\"3DModel\",\"name\":\"Steel storage building\",\"description\":\"Footprint 9 \u00d7 9.4 m \u00b7 height 5.7 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/almacen-portico-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/almacen-portico.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":19,\"item\":{\"@type\":\"3DModel\",\"name\":\"Steel-framed building \u00b7 Pyrenees\",\"description\":\"Footprint 6.1 \u00d7 12.9 m \u00b7 height 8 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-pirineo-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-pirineo.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":20,\"item\":{\"@type\":\"3DModel\",\"name\":\"Steel structure \u00b7 Circuit de Castellol\u00ed (Barcelona)\",\"description\":\"Footprint 12.2 \u00d7 25.3 m \u00b7 height 5.7 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-castelloli-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-castelloli.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":21,\"item\":{\"@type\":\"3DModel\",\"name\":\"Steel-framed building \u00b7 Murcia\",\"description\":\"Footprint 9.9 \u00d7 15.5 m \u00b7 height 9.5 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-murcia-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/edificio-murcia.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}},{\"@type\":\"ListItem\",\"position\":22,\"item\":{\"@type\":\"3DModel\",\"name\":\"Industrial warehouse\",\"description\":\"Footprint 12.2 \u00d7 44.5 m \u00b7 height 5.4 m\",\"image\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-nave-andosana-3d.jpg\",\"encoding\":{\"@type\":\"MediaObject\",\"contentUrl\":\"https:\/\/starmodul.com\/wp-content\/uploads\/2026\/10\/estructura-nave-andosana.glb\",\"encodingFormat\":\"model\/gltf-binary\"}}}]}<\/script><style>.sm3f__bar{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}.sm3f .sm3f__c{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:8px 16px;border-radius:999px;background:#fff;box-shadow:inset 0 0 0 1px #E2E8F0;color:#0D2148;font:600 15px\/1 Barlow,system-ui,sans-serif;cursor:pointer;transition:background-color .15s ease,color .15s ease,box-shadow .15s ease}.sm3f .sm3f__c span{color:#64748B;font-size:13px;font-variant-numeric:tabular-nums}.sm3f .sm3f__c:hover{box-shadow:inset 0 0 0 1px #0D2148}.sm3f .sm3f__c[aria-pressed=\"true\"]{background:#0D2148;color:#fff;box-shadow:none}.sm3f .sm3f__c[aria-pressed=\"true\"] span{color:#CBD5E1}.sm3f .sm3f__c:focus-visible{outline:3px solid #F39200;outline-offset:2px}.sm3f .sm3f__c:active{transform:scale(.97)}.sm3f__apps{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin:0 0 28px;color:#475569;font:500 15px\/1.4 Barlow,system-ui,sans-serif}.sm3f__apps b{color:#0D2148;font-weight:700}.sm3f__apps a{color:#0D2148!important;font-weight:600;text-decoration:underline!important;text-decoration-color:#F39200!important;text-decoration-thickness:2px!important;text-underline-offset:4px}.sm3f__apps a:hover{text-decoration-color:#0D2148!important}.sm3f .sm3d__card[hidden]{display:none}@media (prefers-reduced-motion:reduce){.sm3f .sm3f__c{transition:none}}<\/style><div class=\"sm3f__bar\" role=\"group\" aria-label=\"Filter projects\"><button type=\"button\" class=\"sm3f__c\" data-f=\"all\" aria-pressed=\"true\">All <span>22<\/span><\/button><button type=\"button\" class=\"sm3f__c\" data-f=\"nave\" aria-pressed=\"false\">Industrial buildings and warehouses <span>9<\/span><\/button><button type=\"button\" class=\"sm3f__c\" data-f=\"edif\" aria-pressed=\"false\">Buildings and modules <span>8<\/span><\/button><button type=\"button\" class=\"sm3f__c\" data-f=\"porche\" aria-pressed=\"false\">Porches <span>2<\/span><\/button><button type=\"button\" class=\"sm3f__c\" data-f=\"est\" aria-pressed=\"false\">Structures <span>3<\/span><\/button><\/div><p class=\"sm3f__apps\"><b>By application:<\/b><a href=\"\/en\/metallic-structures-for-industrial-buildings\/\">Industrial buildings<\/a><a href=\"\/en\/custom-metal-structures\/\">Custom structures<\/a><a href=\"\/en\/metal-pergolas-porches\/\">Pergolas and porches<\/a><a href=\"\/en\/metal-structures-for-bungalows\/\">Bungalows and modules<\/a><a href=\"\/en\/metallic-structures-for-houses\/\">Structures for houses<\/a><\/p><div class=\"sm3d\" data-sm3d>\n<div class=\"sm3d__grid\" role=\"list\"><\/div>\n<dialog class=\"smv\" aria-labelledby=\"smv-t\">\n<div class=\"smv__top\">\n<button type=\"button\" class=\"smv__ib smv__tree-b\" data-a=\"tree\" aria-pressed=\"true\" data-t=\"tree\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 6h16M4 12h10M4 18h13\"\/><\/svg><\/button>\n<div class=\"smv__ttl\"><p class=\"smv__eb\" data-k=\"eb\">Modelo 3D<\/p><h3 class=\"smv__t\" id=\"smv-t\"><\/h3><p class=\"smv__m\"><\/p><\/div>\n<div class=\"smv__nav\">\n<button type=\"button\" class=\"smv__ib\" data-a=\"prev\" data-t=\"prev\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M15 5l-7 7 7 7\"\/><\/svg><\/button>\n<button type=\"button\" class=\"smv__ib\" data-a=\"next\" data-t=\"next\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9 5l7 7-7 7\"\/><\/svg><\/button>\n<button type=\"button\" class=\"smv__ib\" data-a=\"share\" data-t=\"share\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M10 14a4 4 0 005.7 0l3-3a4 4 0 00-5.7-5.7l-1 1M14 10a4 4 0 00-5.7 0l-3 3a4 4 0 005.7 5.7l1-1\"\/><\/svg><\/button>\n<button type=\"button\" class=\"smv__ib\" data-a=\"full\" data-t=\"full\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5\"\/><\/svg><\/button>\n<button type=\"button\" class=\"smv__ib\" data-a=\"close\" data-t=\"close\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M6 6l12 12M18 6L6 18\"\/><\/svg><\/button>\n<\/div>\n<\/div>\n<div class=\"smv__body\">\n<aside class=\"smv__side\">\n<div class=\"smv__sec\"><p class=\"smv__h\" data-k=\"layers\">Capas<\/p><div class=\"smv__presets\"><button type=\"button\" class=\"smv__chip\" data-a=\"p-all\" data-k=\"pAll\">Todo<\/button><button type=\"button\" class=\"smv__chip\" data-a=\"p-str\" data-k=\"pStr\">Solo estructura<\/button><button type=\"button\" class=\"smv__chip\" data-a=\"xray\" aria-pressed=\"false\" data-k=\"xray\">Rayos X<\/button><\/div><ul class=\"smv__tree\" role=\"tree\"><\/ul><\/div>\n<\/aside>\n<div class=\"smv__stage\">\n<canvas class=\"smv__cv\"><\/canvas>\n<div class=\"smv__tools\" role=\"toolbar\" aria-label=\"Herramientas\">\n<button type=\"button\" class=\"smv__tool\" data-a=\"m-sel\" aria-pressed=\"true\" data-t=\"sel\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 3l14 8-6 2-2 6z\"\/><\/svg><\/button>\n<button type=\"button\" class=\"smv__tool\" data-a=\"m-meas\" aria-pressed=\"false\" data-t=\"meas\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M3 17L17 3l4 4L7 21zM7 13l2 2M10 10l2 2M13 7l2 2\"\/><\/svg><\/button>\n<button type=\"button\" class=\"smv__tool\" data-a=\"sect\" aria-pressed=\"false\" data-t=\"sect\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M3 12h18M7 7l5-4 5 4M7 17l5 4 5-4\"\/><\/svg><\/button>\n<button type=\"button\" class=\"smv__tool\" data-a=\"expl\" aria-pressed=\"false\" data-t=\"expl\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 18h16M6 13h12M8 8h8M12 3v2\"\/><\/svg><\/button>\n<span class=\"smv__sep\"><\/span>\n<button type=\"button\" class=\"smv__tool\" data-a=\"v-3d\" data-t=\"v3d\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 3l8 4.5v9L12 21l-8-4.5v-9zM12 12l8-4.5M12 12v9M12 12L4 7.5\"\/><\/svg><\/button>\n<button type=\"button\" class=\"smv__tool\" data-a=\"v-top\" data-t=\"vtop\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"1\"\/><path d=\"M4 12h16M12 4v16\"\/><\/svg><\/button>\n<button type=\"button\" class=\"smv__tool\" data-a=\"v-front\" data-t=\"vfront\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 20V9l8-5 8 5v11zM10 20v-6h4v6\"\/><\/svg><\/button>\n<button type=\"button\" class=\"smv__tool\" data-a=\"v-side\" data-t=\"vside\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M3 20V10l6-5h12v15zM9 5v15\"\/><\/svg><\/button>\n<button type=\"button\" class=\"smv__tool\" data-a=\"ortho\" aria-pressed=\"false\" data-t=\"ortho\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 7h16M4 17h16M7 4v16M17 4v16\"\/><\/svg><\/button>\n<span class=\"smv__sep\"><\/span>\n<button type=\"button\" class=\"smv__tool\" data-a=\"spin\" aria-pressed=\"false\" data-t=\"spin\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M20 12a8 8 0 11-2.3-5.7M20 4v5h-5\"\/><\/svg><\/button>\n<button type=\"button\" class=\"smv__tool\" data-a=\"fit\" data-t=\"fit\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9 4H4v5M15 4h5v5M9 20H4v-5M15 20h5v-5M9 9h6v6H9z\"\/><\/svg><\/button>\n<button type=\"button\" class=\"smv__tool\" data-a=\"shot\" data-t=\"shot\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 8h3l2-3h6l2 3h3v11H4z\"\/><circle cx=\"12\" cy=\"13\" r=\"3.5\"\/><\/svg><\/button>\n<\/div>\n<div class=\"smv__pop smv__sectp\" hidden>\n<div class=\"smv__seg\" role=\"group\"><button type=\"button\" class=\"smv__chip\" data-a=\"ax-y\" aria-pressed=\"true\" data-k=\"axY\">Horizontal<\/button><button type=\"button\" class=\"smv__chip\" data-a=\"ax-x\" aria-pressed=\"false\" data-k=\"axX\">Vertical X<\/button><button type=\"button\" class=\"smv__chip\" data-a=\"ax-z\" aria-pressed=\"false\" data-k=\"axZ\">Vertical Z<\/button><button type=\"button\" class=\"smv__chip\" data-a=\"ax-f\" data-k=\"flip\">Invertir<\/button><\/div>\n<input type=\"range\" class=\"smv__rng\" data-r=\"sect\" min=\"0\" max=\"1000\" value=\"1000\" aria-label=\"Corte\">\n<\/div>\n<div class=\"smv__pop smv__explp\" hidden><label class=\"smv__lbl\" data-k=\"expl\">Despiece por capas<\/label><input type=\"range\" class=\"smv__rng\" data-r=\"expl\" min=\"0\" max=\"100\" value=\"0\" aria-label=\"Despiece\"><\/div>\n<div class=\"smv__info\" hidden>\n<p class=\"smv__h smv__info-l\"><\/p><p class=\"smv__info-n\"><\/p><p class=\"smv__info-c\"><\/p>\n<div class=\"smv__info-b\"><button type=\"button\" class=\"smv__btn\" data-a=\"hide\" data-k=\"hide\">Ocultar<\/button><button type=\"button\" class=\"smv__btn\" data-a=\"iso\" data-k=\"iso\">Aislar<\/button><button type=\"button\" class=\"smv__btn smv__btn--g\" data-a=\"desel\" data-k=\"desel\">Quitar selecci\u00f3n<\/button><\/div>\n<\/div>\n<div class=\"smv__status\"><span class=\"smv__hid\" hidden><\/span><button type=\"button\" class=\"smv__btn smv__showall\" data-a=\"showall\" hidden data-k=\"showall\">Mostrar todo<\/button><button type=\"button\" class=\"smv__btn smv__clrm\" data-a=\"clrm\" hidden data-k=\"clrm\">Borrar medidas<\/button><\/div>\n<p class=\"smv__hint\" data-k=\"hint\"><\/p>\n<div class=\"smv__load\" role=\"status\"><span class=\"smv__spin\" aria-hidden=\"true\"><\/span><span class=\"smv__load-t\" data-k=\"load\">Cargando modelo\u2026<\/span><\/div>\n<div class=\"smv__labels\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/dialog>\n<\/div>\n<style>\n.sm3d{--n:#0D2148;--o:#F39200;--mut:#475569;--bg:#F4F6F9;--ln:#E2E8F0}\n.sm3d__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:24px}\n.sm3d__card{all:unset;box-sizing:border-box;display:flex;flex-direction:column;background:#fff;border-radius:16px;overflow:hidden;cursor:pointer;box-shadow:0 1px 0 rgba(13,33,72,.04),0 10px 30px -18px rgba(13,33,72,.35);transition:transform .2s ease,box-shadow .2s ease}\n.sm3d__card:hover{transform:translateY(-3px);box-shadow:0 1px 0 rgba(13,33,72,.04),0 18px 40px -18px rgba(13,33,72,.45)}\n.sm3d__card:focus-visible{outline:3px solid var(--o);outline-offset:3px}\n.sm3d__ph{position:relative;display:block;aspect-ratio:8\/5;background:var(--bg)}\n.sm3d__ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity .25s ease}\n.sm3d__ph img+img{opacity:0}\n@media (hover:hover){.sm3d__card:hover .sm3d__ph img+img{opacity:1}}\n.sm3d__badge{position:absolute;left:12px;bottom:12px;display:inline-flex;align-items:center;gap:6px;background:rgba(13,33,72,.92);color:#fff;font:700 12px\/1 Barlow,system-ui,sans-serif;padding:7px 10px;border-radius:999px}\n.sm3d__badge::before{content:\"\";width:7px;height:7px;border-radius:50%;background:var(--o)}\n.sm3d__ct{display:block;padding:16px 18px 18px}\n.sm3d__ct strong{display:block;color:var(--n);font:700 21px\/1.15 \"Barlow Condensed\",\"Arial Narrow\",sans-serif;text-wrap:balance}\n.sm3d__ct span{display:block;margin-top:6px;color:var(--mut);font:500 14px\/1.4 Barlow,system-ui,sans-serif}\n.smv{width:min(1440px,97vw);max-width:none;height:min(920px,94vh);max-height:none;padding:0;border:0;border-radius:18px;background:#fff;color:var(--n);overflow:hidden;box-shadow:0 30px 80px -20px rgba(0,0,0,.45);font-family:Barlow,system-ui,sans-serif}\n.smv[open]{display:flex;flex-direction:column}\n.smv:fullscreen{width:100vw;height:100vh;border-radius:0}\n.smv::backdrop{background:rgba(13,33,72,.6)}\n.smv svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}\n.smv__top{display:flex;align-items:center;gap:12px;padding:10px 12px 10px 10px;border-bottom:1px solid var(--ln)}\n.smv__ttl{flex:1;min-width:0}\n.smv__eb{margin:0!important;color:var(--o);font:800 11px\/1.2 Barlow,system-ui,sans-serif;letter-spacing:.08em;text-transform:uppercase}\n.smv__t{margin:2px 0 0!important;color:var(--n)!important;font:700 22px\/1.1 \"Barlow Condensed\",\"Arial Narrow\",sans-serif!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.smv__m{margin:2px 0 0!important;color:var(--mut);font:500 13px\/1.3 Barlow,system-ui,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.smv__nav{display:flex;gap:4px}\n.smv__ib,.smv__tool{all:unset;box-sizing:border-box;display:grid;place-items:center;width:40px;height:40px;border-radius:10px;color:var(--n);cursor:pointer;transition:background-color .15s ease,color .15s ease}\n.smv__ib:hover,.smv__tool:hover{background:var(--bg)}\n.smv__ib[aria-pressed=\"true\"],.smv__tool[aria-pressed=\"true\"]{background:var(--n);color:#fff}\n.smv__ib:focus-visible,.smv__tool:focus-visible,.smv__chip:focus-visible,.smv__btn:focus-visible,.smv__eye:focus-visible,.smv__row:focus-visible{outline:3px solid var(--o);outline-offset:1px}\n.smv__ib:active,.smv__tool:active,.smv__btn:active,.smv__chip:active{transform:scale(.96)}\n.smv__ib[disabled]{opacity:.35;pointer-events:none}\n.smv__body{flex:1;min-height:0;display:flex}\n.smv__side{width:300px;flex:none;overflow:auto;border-right:1px solid var(--ln);background:#fff}\n.smv.no-tree .smv__side{display:none}\n.smv__sec{padding:14px 14px 18px}\n.smv__h{margin:0 0 10px!important;color:var(--o);font:800 11px\/1.2 Barlow,system-ui,sans-serif;letter-spacing:.08em;text-transform:uppercase}\n.smv__presets,.smv__seg{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}\n.smv__chip{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;min-height:34px;padding:6px 12px;border-radius:8px;background:var(--bg);color:var(--n);font:600 13px\/1 Barlow,system-ui,sans-serif;cursor:pointer;transition:background-color .15s ease,color .15s ease}\n.smv__chip:hover{background:#E2E8F0}\n.smv__chip[aria-pressed=\"true\"]{background:var(--n);color:#fff}\n.smv__tree,.smv__tree ul{list-style:none;margin:0!important;padding:0!important}\n.smv__tree ul{padding-left:18px!important}\n.smv__tree li{margin:0!important}\n.smv__line{display:flex;align-items:center;gap:2px;border-radius:8px}\n.smv__line:hover{background:var(--bg)}\n.smv__line.is-sel{background:#FFF4E5}\n.smv__tw{all:unset;box-sizing:border-box;display:grid;place-items:center;width:24px;height:32px;color:#94A3B8;cursor:pointer;flex:none}\n.smv__tw svg{width:14px;height:14px;transition:transform .15s ease}\n.smv__tw[aria-expanded=\"true\"] svg{transform:rotate(90deg)}\n.smv__tw[hidden]{visibility:hidden;display:grid}\n.smv__row{all:unset;box-sizing:border-box;flex:1;min-width:0;display:flex;align-items:center;gap:8px;min-height:32px;padding:4px 4px;cursor:pointer;font:500 14px\/1.25 Barlow,system-ui,sans-serif;color:var(--n)}\n.smv__row i{width:11px;height:11px;border-radius:3px;flex:none;background:var(--c);box-shadow:inset 0 0 0 1px rgba(0,0,0,.18)}\n.smv__row b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.smv__row span{margin-left:auto;color:#94A3B8;font-size:12px;font-variant-numeric:tabular-nums;padding-left:6px}\n.smv__line.is-off .smv__row{color:#94A3B8}\n.smv__line.is-off .smv__row i{opacity:.35}\n.smv__eye{all:unset;box-sizing:border-box;display:grid;place-items:center;width:32px;height:32px;border-radius:8px;color:var(--n);cursor:pointer;flex:none}\n.smv__eye:hover{background:#E2E8F0}\n.smv__eye svg{width:18px;height:18px}\n.smv__line.is-off .smv__eye{color:#94A3B8}\n.smv__stage{position:relative;flex:1;min-width:0;background:linear-gradient(#F8FAFC,#E6EBF1)}\n.smv__cv{display:block;width:100%;height:100%;touch-action:none;outline:none}\n.smv.m-meas .smv__cv{cursor:crosshair}\n.smv__tools{position:absolute;left:12px;top:12px;display:flex;flex-direction:column;gap:2px;padding:4px;background:rgba(255,255,255,.94);border-radius:12px;box-shadow:0 8px 24px -12px rgba(13,33,72,.4),0 0 0 1px rgba(13,33,72,.06)}\n.smv__sep{height:1px;margin:3px 6px;background:var(--ln)}\n.smv__pop{position:absolute;left:68px;top:12px;width:min(360px,calc(100% - 84px));padding:12px 14px;background:rgba(255,255,255,.96);border-radius:12px;box-shadow:0 8px 24px -12px rgba(13,33,72,.4),0 0 0 1px rgba(13,33,72,.06)}\n.smv__pop[hidden]{display:none}\n.smv__explp{top:auto;bottom:60px}\n.smv__lbl{display:block;margin-bottom:8px;font:600 13px\/1.2 Barlow,system-ui,sans-serif;color:var(--n)}\n.smv__rng{width:100%;accent-color:var(--o)}\n.smv__info{position:absolute;right:12px;top:12px;width:min(300px,calc(100% - 84px));padding:14px;background:rgba(255,255,255,.96);border-radius:12px;box-shadow:0 8px 24px -12px rgba(13,33,72,.4),0 0 0 1px rgba(13,33,72,.06)}\n.smv__info[hidden]{display:none}\n.smv__info-n{margin:0!important;color:var(--n);font:700 18px\/1.2 \"Barlow Condensed\",\"Arial Narrow\",sans-serif;word-break:break-word}\n.smv__info-c{margin:4px 0 12px!important;color:var(--mut);font:500 13px\/1.35 Barlow,system-ui,sans-serif}\n.smv__info-b{display:flex;flex-wrap:wrap;gap:6px}\n.smv__btn{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;min-height:36px;padding:6px 12px;border-radius:9px;background:var(--n);color:#fff;font:600 13px\/1 Barlow,system-ui,sans-serif;cursor:pointer;transition:filter .15s ease}\n.smv__btn:hover{filter:brightness(1.15)}\n.smv__btn--g{background:var(--bg);color:var(--n)}\n.smv__btn[hidden]{display:none}\n.smv__status{position:absolute;right:12px;bottom:12px;display:flex;align-items:center;gap:8px}\n.smv__hid{padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.92);color:var(--mut);font:600 12px\/1 Barlow,system-ui,sans-serif;font-variant-numeric:tabular-nums}\n.smv__hid[hidden]{display:none}\n.smv__showall{background:var(--o);color:var(--n)}\n.smv__hint{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);margin:0!important;padding:6px 12px;border-radius:999px;background:rgba(255,255,255,.88);color:var(--mut);font:500 12px\/1.3 Barlow,system-ui,sans-serif;white-space:nowrap;pointer-events:none;max-width:calc(100% - 340px);overflow:hidden;text-overflow:ellipsis}\n.smv__load{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--mut);font:600 15px Barlow,system-ui,sans-serif;background:rgba(244,246,249,.75)}\n.smv__load[hidden]{display:none}\n.smv__spin{width:20px;height:20px;border-radius:50%;border:3px solid rgba(13,33,72,.15);border-top-color:var(--o);animation:smvspin .8s linear infinite}\n@keyframes smvspin{to{transform:rotate(360deg)}}\n.smv__labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}\n.smv__ml{position:absolute;transform:translate(-50%,-50%);padding:4px 8px;border-radius:6px;background:var(--n);color:#fff;font:700 12px\/1 Barlow,system-ui,sans-serif;font-variant-numeric:tabular-nums;white-space:nowrap}\n@media (max-width:900px){.smv__side{position:absolute;z-index:3;left:0;top:0;bottom:0;width:min(300px,86vw);box-shadow:20px 0 40px -20px rgba(13,33,72,.4)}.smv__body{position:relative}.smv__hint{display:none}}\n@media (max-width:767px){.sm3d__grid{grid-template-columns:1fr;gap:18px}.smv{width:100%;height:100%;max-width:100%;max-height:100%;border-radius:0}.smv__t{font-size:19px!important}.smv__m{display:none}.smv__tools{top:auto;bottom:12px;left:12px;right:12px;flex-direction:row;overflow-x:auto;scrollbar-width:none}.smv__sep{width:1px;height:auto;margin:6px 3px}.smv__tools .smv__tool{flex:none}.smv__pop{left:12px;top:12px;width:calc(100% - 24px)}.smv__explp{bottom:auto}.smv__info{top:auto;bottom:72px;left:12px;right:12px;width:auto}.smv__status{bottom:auto;top:12px;right:12px}}\n@media (prefers-reduced-motion:reduce){.sm3d__card,.sm3d__ph img{transition:none}.smv__spin{animation-duration:2.4s}}\n.sm3d .smv .smv__ib,.sm3d .smv .smv__tool,.sm3d .smv .smv__tw,.sm3d .smv .smv__eye,.sm3d .smv .smv__row{background:transparent;color:var(--n);border:0;box-shadow:none;text-decoration:none}\n.sm3d .smv .smv__tw{color:#94A3B8}\n.sm3d .smv .smv__ib:hover,.sm3d .smv .smv__tool:hover,.sm3d .smv .smv__eye:hover{background:var(--bg)}\n.sm3d .smv .smv__ib[aria-pressed=\"true\"],.sm3d .smv .smv__tool[aria-pressed=\"true\"]{background:var(--n);color:#fff}\n.sm3d .smv .smv__chip{background:var(--bg);color:var(--n);border:0}\n.sm3d .smv .smv__chip:hover{background:#E2E8F0}\n.sm3d .smv .smv__chip[aria-pressed=\"true\"]{background:var(--n);color:#fff}\n.sm3d .smv .smv__line.is-off .smv__row,.sm3d .smv .smv__line.is-off .smv__eye{color:#94A3B8}\n.sm3d .smv .smv__btn{background:var(--n);color:#fff;border:0}\n.sm3d .smv .smv__btn--g{background:var(--bg);color:var(--n)}\n.sm3d .smv .smv__showall{background:var(--o);color:var(--n)}\n.sm3d .sm3d__grid .sm3d__card{background:#fff;border:0;color:inherit}\n<\/style>\n<script>(function(){\nvar root=document.querySelector('[data-sm3d]');if(!root||root.dataset.ok)return;root.dataset.ok=1;\nvar MODELS=window.SM3D_MODELS||[];\nvar L=(document.documentElement.lang||'es').toLowerCase();L=L.indexOf('pt')===0?'pt':L.slice(0,2);\nvar I18N={\nes:{eb:'Modelo 3D',load:'Cargando modelo\u2026',err:'No se ha podido cargar el modelo.',open:'Ver en 3D',layers:'Capas',pAll:'Todo',pStr:'Solo estructura',xray:'Rayos X',hide:'Ocultar',iso:'Aislar',desel:'Quitar selecci\u00f3n',showall:'Mostrar todo',clrm:'Borrar medidas',axY:'Horizontal',axX:'Vertical X',axZ:'Vertical Z',flip:'Invertir',expl:'Despiece por capas',hidden:'ocultos',items:'elementos',copied:'Enlace copiado',\nhint:'Clic: seleccionar \u00b7 Doble clic: acercar \u00b7 Arrastrar: girar \u00b7 Bot\u00f3n derecho: desplazar \u00b7 H ocultar \u00b7 I aislar \u00b7 Esc',hintM:'Haz clic en dos puntos para medir',\nt:{tree:'Mostrar u ocultar el panel',prev:'Modelo anterior',next:'Modelo siguiente',share:'Copiar enlace',full:'Pantalla completa',close:'Cerrar',sel:'Seleccionar',meas:'Medir',sect:'Plano de corte',expl:'Despiece',v3d:'Vista 3D',vtop:'Planta',vfront:'Alzado frontal',vside:'Alzado lateral',ortho:'Vista ortogonal',spin:'Girar autom\u00e1ticamente',fit:'Encuadrar',shot:'Descargar imagen'},\ng:{fachada:'Paneles de fachada',cubierta:'Cubierta',secundaria:'Subestructura de paneles',carpinteria:'Carpinter\u00eda',estructura:'Estructura',uniones:'Uniones',suelo:'Suelo y forjado',escaleras:'Escaleras',cimentacion:'Cimentaci\u00f3n',otros:'Otros'},\ngp:{paneles:'Paneles y subestructura'},\nty:{IFCBEAM:'Viga',IFCCOLUMN:'Pilar',IFCMEMBER:'Perfil',IFCPLATE:'Placa',IFCSLAB:'Losa',IFCWALL:'Muro',IFCWALLSTANDARDCASE:'Muro',IFCCURTAINWALL:'Muro cortina',IFCROOF:'Cubierta',IFCCOVERING:'Revestimiento',IFCBUILDINGELEMENTPROXY:'Pieza',IFCMECHANICALFASTENER:'Torniller\u00eda',IFCFASTENER:'Fijaci\u00f3n',IFCDISCRETEACCESSORY:'Accesorio',IFCFOOTING:'Zapata',IFCDOOR:'Puerta',IFCWINDOW:'Ventana',IFCSTAIR:'Escalera',IFCSTAIRFLIGHT:'Tramo de escalera',IFCRAILING:'Barandilla'}},\nca:{eb:'Model 3D',load:'Carregant el model\u2026',err:\"No s'ha pogut carregar el model.\",open:'Veure en 3D',layers:'Capes',pAll:'Tot',pStr:'Nom\u00e9s estructura',xray:'Raigs X',hide:'Amagar',iso:'A\u00efllar',desel:'Treure selecci\u00f3',showall:'Mostrar-ho tot',clrm:'Esborrar mesures',axY:'Horitzontal',axX:'Vertical X',axZ:'Vertical Z',flip:'Invertir',expl:'Esquema desmuntat per capes',hidden:'amagats',items:'elements',copied:'Enlla\u00e7 copiat',\nhint:'Clic: seleccionar \u00b7 Doble clic: apropar \u00b7 Arrossegar: girar \u00b7 Bot\u00f3 dret: despla\u00e7ar \u00b7 H amagar \u00b7 I a\u00efllar \u00b7 Esc',hintM:'Fes clic en dos punts per mesurar',\nt:{tree:'Mostrar o amagar el panell',prev:'Model anterior',next:'Model seg\u00fcent',share:'Copiar enlla\u00e7',full:'Pantalla completa',close:'Tancar',sel:'Seleccionar',meas:'Mesurar',sect:'Pla de tall',expl:'Desmuntar',v3d:'Vista 3D',vtop:'Planta',vfront:'Al\u00e7at frontal',vside:'Al\u00e7at lateral',ortho:'Vista ortogonal',spin:'Girar autom\u00e0ticament',fit:'Enquadrar',shot:'Descarregar imatge'},\ng:{fachada:'Panells de fa\u00e7ana',cubierta:'Coberta',secundaria:'Subestructura de panells',carpinteria:'Fusteria',estructura:'Estructura',uniones:'Unions',suelo:'Terra i forjat',escaleras:'Escales',cimentacion:'Fonamentaci\u00f3',otros:'Altres'},gp:{paneles:'Panells i subestructura'},\nty:{IFCBEAM:'Biga',IFCCOLUMN:'Pilar',IFCMEMBER:'Perfil',IFCPLATE:'Placa',IFCSLAB:'Llosa',IFCWALL:'Mur',IFCROOF:'Coberta',IFCBUILDINGELEMENTPROXY:'Pe\u00e7a',IFCDOOR:'Porta',IFCWINDOW:'Finestra',IFCSTAIR:'Escala',IFCRAILING:'Barana'}},\nen:{eb:'3D model',load:'Loading model\u2026',err:'The model could not be loaded.',open:'View in 3D',layers:'Layers',pAll:'All',pStr:'Structure only',xray:'X-ray',hide:'Hide',iso:'Isolate',desel:'Clear selection',showall:'Show all',clrm:'Clear measurements',axY:'Horizontal',axX:'Vertical X',axZ:'Vertical Z',flip:'Flip',expl:'Exploded view by layer',hidden:'hidden',items:'items',copied:'Link copied',\nhint:'Click: select \u00b7 Double-click: zoom in \u00b7 Drag: rotate \u00b7 Right-drag: pan \u00b7 H hide \u00b7 I isolate \u00b7 Esc',hintM:'Click two points to measure',\nt:{tree:'Show or hide the panel',prev:'Previous model',next:'Next model',share:'Copy link',full:'Full screen',close:'Close',sel:'Select',meas:'Measure',sect:'Section plane',expl:'Explode',v3d:'3D view',vtop:'Plan',vfront:'Front elevation',vside:'Side elevation',ortho:'Orthographic view',spin:'Auto-rotate',fit:'Fit to view',shot:'Download image'},\ng:{fachada:'Wall panels',cubierta:'Roof',secundaria:'Panel substructure',carpinteria:'Doors and windows',estructura:'Structure',uniones:'Connections',suelo:'Floor',escaleras:'Stairs',cimentacion:'Foundations',otros:'Other'},gp:{paneles:'Panels and substructure'},\nty:{IFCBEAM:'Beam',IFCCOLUMN:'Column',IFCMEMBER:'Member',IFCPLATE:'Plate',IFCSLAB:'Slab',IFCWALL:'Wall',IFCROOF:'Roof',IFCBUILDINGELEMENTPROXY:'Part',IFCDOOR:'Door',IFCWINDOW:'Window',IFCSTAIR:'Stair',IFCRAILING:'Railing'}},\nfr:{eb:'Mod\u00e8le 3D',load:'Chargement du mod\u00e8le\u2026',err:'Impossible de charger le mod\u00e8le.',open:'Voir en 3D',layers:'Calques',pAll:'Tout',pStr:'Structure seule',xray:'Rayons X',hide:'Masquer',iso:'Isoler',desel:'D\u00e9s\u00e9lectionner',showall:'Tout afficher',clrm:'Effacer les mesures',axY:'Horizontal',axX:'Vertical X',axZ:'Vertical Z',flip:'Inverser',expl:'Vue \u00e9clat\u00e9e par calque',hidden:'masqu\u00e9s',items:'\u00e9l\u00e9ments',copied:'Lien copi\u00e9',\nhint:'Clic : s\u00e9lectionner \u00b7 Double-clic : zoomer \u00b7 Glisser : tourner \u00b7 Clic droit : d\u00e9placer \u00b7 H masquer \u00b7 I isoler \u00b7 \u00c9chap',hintM:'Cliquez sur deux points pour mesurer',\nt:{tree:'Afficher ou masquer le panneau',prev:'Mod\u00e8le pr\u00e9c\u00e9dent',next:'Mod\u00e8le suivant',share:'Copier le lien',full:'Plein \u00e9cran',close:'Fermer',sel:'S\u00e9lectionner',meas:'Mesurer',sect:'Plan de coupe',expl:'\u00c9clater',v3d:'Vue 3D',vtop:'Plan',vfront:'\u00c9l\u00e9vation de face',vside:'\u00c9l\u00e9vation lat\u00e9rale',ortho:'Vue orthogonale',spin:'Rotation automatique',fit:'Recadrer',shot:\"T\u00e9l\u00e9charger l'image\"},\ng:{fachada:'Panneaux de fa\u00e7ade',cubierta:'Toiture',secundaria:'Ossature des panneaux',carpinteria:'Menuiseries',estructura:'Structure',uniones:'Assemblages',suelo:'Plancher',escaleras:'Escaliers',cimentacion:'Fondations',otros:'Autres'},gp:{paneles:'Panneaux et ossature'},\nty:{IFCBEAM:'Poutre',IFCCOLUMN:'Poteau',IFCMEMBER:'Profil\u00e9',IFCPLATE:'Plaque',IFCSLAB:'Dalle',IFCWALL:'Mur',IFCROOF:'Toiture',IFCBUILDINGELEMENTPROXY:'Pi\u00e8ce',IFCDOOR:'Porte',IFCWINDOW:'Fen\u00eatre',IFCSTAIR:'Escalier',IFCRAILING:'Garde-corps'}},\nde:{eb:'3D-Modell',load:'Modell wird geladen\u2026',err:'Das Modell konnte nicht geladen werden.',open:'In 3D ansehen',layers:'Ebenen',pAll:'Alles',pStr:'Nur Tragwerk',xray:'R\u00f6ntgen',hide:'Ausblenden',iso:'Isolieren',desel:'Auswahl aufheben',showall:'Alles einblenden',clrm:'Messungen l\u00f6schen',axY:'Horizontal',axX:'Vertikal X',axZ:'Vertikal Z',flip:'Umkehren',expl:'Explosionsansicht nach Ebenen',hidden:'ausgeblendet',items:'Elemente',copied:'Link kopiert',\nhint:'Klick: ausw\u00e4hlen \u00b7 Doppelklick: heranzoomen \u00b7 Ziehen: drehen \u00b7 Rechtsklick: verschieben \u00b7 H ausblenden \u00b7 I isolieren \u00b7 Esc',hintM:'Klicken Sie auf zwei Punkte, um zu messen',\nt:{tree:'Seitenleiste ein-\/ausblenden',prev:'Vorheriges Modell',next:'N\u00e4chstes Modell',share:'Link kopieren',full:'Vollbild',close:'Schlie\u00dfen',sel:'Ausw\u00e4hlen',meas:'Messen',sect:'Schnittebene',expl:'Explosion',v3d:'3D-Ansicht',vtop:'Grundriss',vfront:'Vorderansicht',vside:'Seitenansicht',ortho:'Orthogonale Ansicht',spin:'Automatisch drehen',fit:'Einpassen',shot:'Bild herunterladen'},\ng:{fachada:'Wandpaneele',cubierta:'Dach',secundaria:'Unterkonstruktion',carpinteria:'T\u00fcren und Fenster',estructura:'Tragwerk',uniones:'Verbindungen',suelo:'Boden',escaleras:'Treppen',cimentacion:'Fundament',otros:'Sonstiges'},gp:{paneles:'Paneele und Unterkonstruktion'},\nty:{IFCBEAM:'Tr\u00e4ger',IFCCOLUMN:'St\u00fctze',IFCMEMBER:'Profil',IFCPLATE:'Blech',IFCSLAB:'Platte',IFCWALL:'Wand',IFCROOF:'Dach',IFCBUILDINGELEMENTPROXY:'Bauteil',IFCDOOR:'T\u00fcr',IFCWINDOW:'Fenster',IFCSTAIR:'Treppe',IFCRAILING:'Gel\u00e4nder'}},\nit:{eb:'Modello 3D',load:'Caricamento del modello\u2026',err:'Impossibile caricare il modello.',open:'Vedi in 3D',layers:'Livelli',pAll:'Tutto',pStr:'Solo struttura',xray:'Raggi X',hide:'Nascondi',iso:'Isola',desel:'Deseleziona',showall:'Mostra tutto',clrm:'Cancella misure',axY:'Orizzontale',axX:'Verticale X',axZ:'Verticale Z',flip:'Inverti',expl:'Esploso per livelli',hidden:'nascosti',items:'elementi',copied:'Link copiato',\nhint:'Clic: seleziona \u00b7 Doppio clic: avvicina \u00b7 Trascina: ruota \u00b7 Tasto destro: sposta \u00b7 H nascondi \u00b7 I isola \u00b7 Esc',hintM:'Fai clic su due punti per misurare',\nt:{tree:'Mostra o nascondi il pannello',prev:'Modello precedente',next:'Modello successivo',share:'Copia link',full:'Schermo intero',close:'Chiudi',sel:'Seleziona',meas:'Misura',sect:'Piano di sezione',expl:'Esploso',v3d:'Vista 3D',vtop:'Pianta',vfront:'Prospetto frontale',vside:'Prospetto laterale',ortho:'Vista ortogonale',spin:'Rotazione automatica',fit:'Inquadra',shot:'Scarica immagine'},\ng:{fachada:'Pannelli di facciata',cubierta:'Copertura',secundaria:'Sottostruttura dei pannelli',carpinteria:'Serramenti',estructura:'Struttura',uniones:'Giunzioni',suelo:'Pavimento',escaleras:'Scale',cimentacion:'Fondazioni',otros:'Altro'},gp:{paneles:'Pannelli e sottostruttura'},\nty:{IFCBEAM:'Trave',IFCCOLUMN:'Pilastro',IFCMEMBER:'Profilo',IFCPLATE:'Piastra',IFCSLAB:'Solaio',IFCWALL:'Muro',IFCROOF:'Copertura',IFCBUILDINGELEMENTPROXY:'Pezzo',IFCDOOR:'Porta',IFCWINDOW:'Finestra',IFCSTAIR:'Scala',IFCRAILING:'Ringhiera'}},\npt:{eb:'Modelo 3D',load:'A carregar o modelo\u2026',err:'N\u00e3o foi poss\u00edvel carregar o modelo.',open:'Ver em 3D',layers:'Camadas',pAll:'Tudo',pStr:'S\u00f3 estrutura',xray:'Raio X',hide:'Ocultar',iso:'Isolar',desel:'Limpar sele\u00e7\u00e3o',showall:'Mostrar tudo',clrm:'Apagar medi\u00e7\u00f5es',axY:'Horizontal',axX:'Vertical X',axZ:'Vertical Z',flip:'Inverter',expl:'Vista explodida por camadas',hidden:'ocultos',items:'elementos',copied:'Liga\u00e7\u00e3o copiada',\nhint:'Clique: selecionar \u00b7 Duplo clique: aproximar \u00b7 Arrastar: rodar \u00b7 Bot\u00e3o direito: deslocar \u00b7 H ocultar \u00b7 I isolar \u00b7 Esc',hintM:'Clique em dois pontos para medir',\nt:{tree:'Mostrar ou ocultar o painel',prev:'Modelo anterior',next:'Modelo seguinte',share:'Copiar liga\u00e7\u00e3o',full:'Ecr\u00e3 inteiro',close:'Fechar',sel:'Selecionar',meas:'Medir',sect:'Plano de corte',expl:'Explodir',v3d:'Vista 3D',vtop:'Planta',vfront:'Al\u00e7ado frontal',vside:'Al\u00e7ado lateral',ortho:'Vista ortogonal',spin:'Rodar automaticamente',fit:'Enquadrar',shot:'Descarregar imagem'},\ng:{fachada:'Pain\u00e9is de fachada',cubierta:'Cobertura',secundaria:'Subestrutura dos pain\u00e9is',carpinteria:'Caixilharia',estructura:'Estrutura',uniones:'Uni\u00f5es',suelo:'Pavimento',escaleras:'Escadas',cimentacion:'Funda\u00e7\u00f5es',otros:'Outros'},gp:{paneles:'Pain\u00e9is e subestrutura'},\nty:{IFCBEAM:'Viga',IFCCOLUMN:'Pilar',IFCMEMBER:'Perfil',IFCPLATE:'Chapa',IFCSLAB:'Laje',IFCWALL:'Parede',IFCROOF:'Cobertura',IFCBUILDINGELEMENTPROXY:'Pe\u00e7a',IFCDOOR:'Porta',IFCWINDOW:'Janela',IFCSTAIR:'Escada',IFCRAILING:'Guarda'}}\n};\nvar T=I18N[L]||I18N.es;var TY=Object.assign({},I18N.es.ty,T.ty);\nvar LAYERS={fachada:'#E8EBEF',cubierta:'#5B6B80',secundaria:'#B4BDC8',carpinteria:'#9CC3E6',estructura:'#8E99A6',uniones:'#F39200',suelo:'#C9A57C',escaleras:'#7C8796',cimentacion:'#A8A29E',otros:'#CBD5E1'};\nvar PANEL=['fachada','cubierta','secundaria','carpinteria'];\nvar ORDER=['paneles','estructura','uniones','suelo','escaleras','cimentacion','otros'];\nvar EXPL={cubierta:1,fachada:0.65,carpinteria:0.65,secundaria:0.35,uniones:0.12,estructura:0,suelo:-0.12,escaleras:0,cimentacion:-0.25,otros:0};\nvar $=function(s,c){return (c||root).querySelector(s)},$$=function(s,c){return [].slice.call((c||root).querySelectorAll(s))};\n$$('[data-k]').forEach(function(e){if(typeof T[e.dataset.k]==='string')e.textContent=T[e.dataset.k]});\n$$('[data-t]').forEach(function(e){var s=T.t[e.dataset.t];if(s){e.setAttribute('aria-label',s);e.title=s}});\nvar EYE='<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7S2 12 2 12z\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/svg>',EYEOFF='<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M3 3l18 18M10.6 5.1A10 10 0 0112 5c6.4 0 10 7 10 7a17 17 0 01-3.2 4.2M6.6 6.6C3.9 8.4 2 12 2 12s3.6 7 10 7a9.6 9.6 0 004.4-1.1M9.9 9.9a3 3 0 004.2 4.2\"\/><\/svg>',CHEV='<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9 6l6 6-6 6\"\/><\/svg>';\nvar grid=$('.sm3d__grid');\nMODELS.forEach(function(m,i){var b=document.createElement('button');b.type='button';b.className='sm3d__card';b.setAttribute('role','listitem');b.dataset.i=i;\nb.innerHTML='<span class=\"sm3d__ph\"><img loading=\"lazy\" loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"500\" alt=\"\"><img loading=\"lazy\" loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"500\" alt=\"\"><span class=\"sm3d__badge\"><\/span><\/span><span class=\"sm3d__ct\"><strong><\/strong><span><\/span><\/span>';\nvar im=b.querySelectorAll('img');im[0].src=m.p1;im[0].alt=m.a||m.t;im[1].src=m.p2||m.p1;b.querySelector('.sm3d__badge').textContent=T.open;b.querySelector('strong').textContent=m.t;b.querySelector('.sm3d__ct span').textContent=m.m||'';grid.appendChild(b)});\nvar dlg=$('.smv'),cv=$('.smv__cv'),loadEl=$('.smv__load'),treeEl=$('.smv__tree'),info=$('.smv__info'),hint=$('.smv__hint'),labels=$('.smv__labels');\nhint.textContent=T.hint;\nvar CDN='https:\/\/cdn.jsdelivr.net\/npm\/three@0.160.0\/';\nvar V=null,cur=-1,lastBtn=null;\nfunction libs(){return Promise.all([import(CDN+'+esm'),import(CDN+'examples\/jsm\/controls\/OrbitControls.js\/+esm'),import(CDN+'examples\/jsm\/loaders\/GLTFLoader.js\/+esm'),import(CDN+'examples\/jsm\/libs\/meshopt_decoder.module.js\/+esm'),import(CDN+'examples\/jsm\/environments\/RoomEnvironment.js\/+esm')])}\nfunction viewer(M){\nvar THREE=M[0];\nvar r=new THREE.WebGLRenderer({canvas:cv,antialias:true,alpha:true,preserveDrawingBuffer:false});r.setClearColor(0x000000,0);r.setPixelRatio(Math.min(2,window.devicePixelRatio||1));r.outputColorSpace=THREE.SRGBColorSpace;r.toneMapping=THREE.ACESFilmicToneMapping;r.localClippingEnabled=true;\nvar sc=new THREE.Scene();var pm=new THREE.PMREMGenerator(r);sc.environment=pm.fromScene(new M[4].RoomEnvironment(),0.04).texture;\nvar dl=new THREE.DirectionalLight(0xffffff,1.4);dl.position.set(5,10,7);sc.add(dl);sc.add(new THREE.HemisphereLight(0xffffff,0xb0b8c4,0.5));\nvar pc=new THREE.PerspectiveCamera(32,1,0.1,2000),oc=new THREE.OrthographicCamera(-1,1,1,-1,-1000,1000),cam=pc;\nvar ctl=new M[1].OrbitControls(pc,cv);ctl.enableDamping=true;ctl.dampingFactor=0.09;ctl.screenSpacePanning=true;ctl.zoomToCursor=true;\nvar ld=new M[2].GLTFLoader();ld.setMeshoptDecoder(M[3].MeshoptDecoder);\nvar ground=new THREE.Mesh(new THREE.CircleGeometry(1,72),new THREE.MeshBasicMaterial({color:0xDCE2E9}));ground.rotation.x=-Math.PI\/2;sc.add(ground);\nvar grp=new THREE.Group();sc.add(grp);\nvar clip=new THREE.Plane(new THREE.Vector3(0,-1,0),1e6),clipOn=false,axis='y',flip=false;\nvar selMat=new THREE.MeshBasicMaterial({color:0xF39200,transparent:true,opacity:0.85,depthTest:true,polygonOffset:true,polygonOffsetFactor:-2,polygonOffsetUnits:-2,side:THREE.DoubleSide,clippingPlanes:[]});\nvar model=null,meshes=[],ud=null,nel=0,hidden=null,elLayer=null,selected=new Set(),selMeshes=[],box=new THREE.Box3(),R=1,C=new THREE.Vector3(),need=true,raf=0,spin=false,xray=false,mode='sel',meas=[],mPts=[],explode=0;\nvar layerOff={};var tween=null;\nfunction size(){var w=cv.clientWidth,h=cv.clientHeight;if(!w||!h)return;r.setSize(w,h,false);pc.aspect=w\/h;pc.updateProjectionMatrix();var a=w\/h,s=oc.userData.s||R;oc.left=-s*a;oc.right=s*a;oc.top=s;oc.bottom=-s;oc.updateProjectionMatrix();need=true}\nnew ResizeObserver(size).observe(cv);\nctl.addEventListener('change',function(){need=true});\nfunction loop(){raf=requestAnimationFrame(loop);if(tween){var t=Math.min(1,(performance.now()-tween.t0)\/tween.d),e=t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)\/2;cam.position.lerpVectors(tween.p0,tween.p1,e);ctl.target.lerpVectors(tween.t0v,tween.t1,e);if(cam.isOrthographicCamera){cam.zoom=tween.z0+(tween.z1-tween.z0)*e;cam.updateProjectionMatrix()}need=true;if(t>=1)tween=null}\nctl.autoRotate=spin;ctl.autoRotateSpeed=1.2;\nif(ctl.update()||need||spin){r.render(sc,cam);need=false;drawLabels()}}\nfunction go(p,t,d){tween={p0:cam.position.clone(),p1:p,t0v:ctl.target.clone(),t1:t,t0:performance.now(),d:d===0?1:(d||650),z0:cam.zoom||1,z1:1}}\nfunction dirPos(az,el,dist,target){return new THREE.Vector3(target.x+dist*Math.cos(el)*Math.sin(az),target.y+dist*Math.sin(el),target.z+dist*Math.cos(el)*Math.cos(az))}\nfunction dist(){return R\/Math.sin(THREE.MathUtils.degToRad(16))*(cv.clientWidth\/cv.clientHeight<1.2?1.25:1.02)}\nfunction view(v,d){var t=C.clone(),D=dist(),p;if(v==='top')p=new THREE.Vector3(C.x,C.y+D,C.z+0.0001);else if(v==='front')p=new THREE.Vector3(C.x,C.y,C.z+D);else if(v==='side')p=new THREE.Vector3(C.x+D,C.y,C.z);else p=dirPos(-0.75,0.42,D,C);oc.userData.s=R*0.62;size();go(p,t,d)}\nfunction rebuild(){meshes.forEach(function(o){var u=o.userData,src=u.idx0,te=u.te,n=0,out=u.buf;if(layerOff[u.layer]){o.visible=false;return}o.visible=true;for(var i=0,f=0;i<src.length;i+=3,f++){if(!hidden[te[f]]){out[n++]=src[i];out[n++]=src[i+1];out[n++]=src[i+2]}}o.geometry.index.array.set(out.subarray(0,n));o.geometry.setDrawRange(0,n);o.geometry.index.needsUpdate=true});drawSel();status();need=true}\nfunction status(){var h=0;for(var i=0;i<nel;i++)if(hidden[i])h++;var hl=$('.smv__hid'),sa=$('.smv__showall');var any=h>0||Object.keys(layerOff).some(function(k){return layerOff[k]});hl.hidden=!h;hl.textContent=h+' '+T.hidden;sa.hidden=!any;syncTree()}\nfunction drawSel(){selMeshes.forEach(function(m){grp.remove(m);m.geometry.dispose()});selMeshes=[];if(!selected.size){info.hidden=true;syncTreeSel();return}\nmeshes.forEach(function(o){if(!o.visible)return;var u=o.userData,src=u.idx0,te=u.te,a=[];for(var i=0,f=0;i<src.length;i+=3,f++){var e=te[f];if(selected.has(e)&&!hidden[e])a.push(src[i],src[i+1],src[i+2])}if(!a.length)return;var g=new THREE.BufferGeometry();g.setAttribute('position',o.geometry.attributes.position);g.setIndex(a);var m=new THREE.Mesh(g,selMat);m.matrixAutoUpdate=false;m.matrix.copy(o.matrixWorld);m.renderOrder=2;grp.add(m);selMeshes.push(m)});\nshowInfo();syncTreeSel()}\nfunction elName(e){var x=ud.el[e];return x?String(ud.names[x[0]]||'').replace(\/\\s*:\\s*\/g,' \u00b7 ').replace(\/(\\d)\\*(?=\\d)\/g,'$1\u00d7'):''}\nfunction elType(e){var x=ud.el[e];return x?(TY[ud.types[x[1]]]||''):''}\nfunction showInfo(){if(!selected.size){info.hidden=true;return}info.hidden=false;var arr=Array.from(selected);var e=arr[0];$('.smv__info-l').textContent=T.g[elLayer[e]]||'';if(arr.length===1){$('.smv__info-n').textContent=elName(e);$('.smv__info-c').textContent=elType(e)}else{$('.smv__info-n').textContent=arr.length+' '+T.items;var nm=elName(e),same=arr.every(function(x){return elName(x)===nm});$('.smv__info-c').textContent=same?nm:''}}\nfunction select(list,add){if(!add)selected.clear();list.forEach(function(e){if(add&&selected.has(e)&&list.length===1)selected.delete(e);else selected.add(e)});drawSel();need=true}\nfunction hideSel(){selected.forEach(function(e){hidden[e]=1});selected.clear();rebuild()}\nfunction isoSel(){if(!selected.size)return;for(var i=0;i<nel;i++)hidden[i]=selected.has(i)?0:1;Object.keys(layerOff).forEach(function(k){layerOff[k]=false});selected.clear();rebuild();fitVisible()}\nfunction showAll(){hidden.fill(0);Object.keys(layerOff).forEach(function(k){layerOff[k]=false});rebuild()}\nfunction fitBox(b,k){if(b.isEmpty())return;var c=b.getCenter(new THREE.Vector3()),rr=Math.max(b.getSize(new THREE.Vector3()).length()\/2,R*0.06);var dir=cam.position.clone().sub(ctl.target).normalize();go(c.clone().add(dir.multiplyScalar(rr\/Math.sin(THREE.MathUtils.degToRad(16))*k)),c)}\nfunction fitVisible(){var b=new THREE.Box3(),v=new THREE.Vector3();meshes.forEach(function(o){if(!o.visible)return;var g=o.geometry,p=g.attributes.position,ix=g.index.array,n=Math.min(ix.length,g.drawRange.count);for(var i=0;i<n;i++){v.fromBufferAttribute(p,ix[i]).applyMatrix4(o.matrixWorld);b.expandByPoint(v)}});fitBox(b,0.85)}\nfunction fitSel(){if(!selected.size)return fitVisible();var b=new THREE.Box3();selMeshes.forEach(function(m){m.geometry.computeBoundingBox();b.union(m.geometry.boundingBox.clone().applyMatrix4(m.matrix))});fitBox(b,1.1)}\nfunction mats(){meshes.forEach(function(o){var m=o.material,u=o.userData;if(!u.m0)u.m0={t:m.transparent,o:m.opacity,dw:m.depthWrite};var px=xray&&PANEL.indexOf(u.layer)>=0;m.transparent=px||u.m0.t;m.opacity=px?0.12:u.m0.o;m.depthWrite=px?false:u.m0.dw;m.clippingPlanes=clipOn?[clip]:[];m.needsUpdate=true});selMat.clippingPlanes=clipOn?[clip]:[];selMat.needsUpdate=true;need=true}\nfunction setClip(v){var mn=box.min[axis],mx=box.max[axis],x=mn+(mx-mn)*(v\/1000);var n=new THREE.Vector3();n[axis]=flip?1:-1;clip.normal.copy(n);clip.constant=flip?-x:x;need=true}\nfunction applyExplode(){meshes.forEach(function(o){var k=EXPL[o.userData.layer]||0;o.position.y=o.userData.y0+k*explode*(box.max.y-box.min.y)*1.6});if(model)model.updateMatrixWorld(true);drawSel();need=true}\nvar lineMat=new THREE.LineBasicMaterial({color:0x0D2148,depthTest:false}),dotMat=new THREE.MeshBasicMaterial({color:0xF39200,depthTest:false});\nfunction addDot(p){var d=new THREE.Mesh(new THREE.SphereGeometry(R*0.006,12,8),dotMat);d.position.copy(p);d.renderOrder=5;grp.add(d);return d}\nfunction measure(p){var d=addDot(p);mPts.push({p:p,d:d});if(mPts.length===2){var a=mPts[0].p,b=mPts[1].p;var g=new THREE.BufferGeometry().setFromPoints([a,b]);var ln=new THREE.Line(g,lineMat);ln.renderOrder=4;grp.add(ln);var el=document.createElement('div');el.className='smv__ml';el.textContent=a.distanceTo(b).toLocaleString(document.documentElement.lang||'es',{minimumFractionDigits:2,maximumFractionDigits:3})+' m';labels.appendChild(el);meas.push({a:a,b:b,objs:[mPts[0].d,mPts[1].d,ln],el:el});mPts=[];$('.smv__clrm').hidden=false}need=true}\nfunction clearMeas(){meas.forEach(function(m){m.objs.forEach(function(o){grp.remove(o);o.geometry.dispose()});m.el.remove()});mPts.forEach(function(m){grp.remove(m.d)});meas=[];mPts=[];$('.smv__clrm').hidden=true;need=true}\nfunction drawLabels(){if(!meas.length)return;var w=cv.clientWidth,h=cv.clientHeight,v=new THREE.Vector3();meas.forEach(function(m){v.copy(m.a).add(m.b).multiplyScalar(.5).project(cam);m.el.style.left=((v.x+1)\/2*w)+'px';m.el.style.top=((1-v.y)\/2*h)+'px';m.el.style.display=v.z>1?'none':''})}\nvar ray=new THREE.Raycaster(),ptr=new THREE.Vector2(),down=null;\nfunction pick(ev){var rc=cv.getBoundingClientRect();ptr.set(((ev.clientX-rc.left)\/rc.width)*2-1,-((ev.clientY-rc.top)\/rc.height)*2+1);ray.setFromCamera(ptr,cam);var hits=ray.intersectObjects(meshes.filter(function(o){return o.visible}),false);if(clipOn)hits=hits.filter(function(h){return clip.distanceToPoint(h.point)>=0});\nif(xray)hits.sort(function(a,b){var pa=PANEL.indexOf(a.object.userData.layer)>=0?1:0,pb=PANEL.indexOf(b.object.userData.layer)>=0?1:0;return (pa-pb)||(a.distance-b.distance)});return hits[0]}\ncv.addEventListener('pointerdown',function(e){down={x:e.clientX,y:e.clientY,b:e.button};if(spin){spin=false;$('[data-a=\"spin\"]').setAttribute('aria-pressed','false')}});\ncv.addEventListener('pointerup',function(e){if(!down||down.b!==0)return;var moved=Math.hypot(e.clientX-down.x,e.clientY-down.y)>5;down=null;if(moved||!model)return;var h=pick(e);\nif(mode==='meas'){if(h)measure(h.point.clone());return}\nif(!h){if(!e.shiftKey&&!e.ctrlKey&&!e.metaKey)select([]);return}var a=h.object.geometry.attributes.__eid;var eid=a?Math.round(a.getX(h.face.a)):0;select([eid],e.shiftKey||e.ctrlKey||e.metaKey)});\ncv.addEventListener('dblclick',function(e){if(mode!=='sel'||!model)return;var h=pick(e);if(!h)return;var p=h.point.clone(),dir=cam.position.clone().sub(ctl.target);go(p.clone().add(dir.multiplyScalar(0.45)),p)});\nfunction buildTree(){treeEl.innerHTML='';var byL={};for(var e=0;e<nel;e++){var l=elLayer[e];if(!l)continue;var nm=elName(e)||elType(e)||'\u2014';(byL[l]=byL[l]||{});(byL[l][nm]=byL[l][nm]||[]).push(e)}\nORDER.forEach(function(G){var ls=(G==='paneles'?PANEL:[G]).filter(function(l){return byL[l]});if(!ls.length)return;\nvar li=node(G==='paneles'?T.gp.paneles:T.g[G],LAYERS[ls[0]],count(ls.map(function(l){return byL[l]})),{layers:ls},true);treeEl.appendChild(li);var ul=document.createElement('ul');ul.setAttribute('role','group');ul.hidden=true;li.appendChild(ul);\nif(G==='paneles')ls.forEach(function(l){var n=node(T.g[l],LAYERS[l],count([byL[l]]),{layers:[l]},true);var u2=document.createElement('ul');u2.setAttribute('role','group');u2.hidden=true;n.appendChild(u2);types(u2,byL[l],LAYERS[l]);ul.appendChild(n)});else types(ul,byL[ls[0]],LAYERS[ls[0]])});syncTree()}\nfunction count(maps){var n=0;maps.forEach(function(m){Object.keys(m).forEach(function(k){n+=m[k].length})});return n}\nfunction types(ul,map,col){Object.keys(map).sort(function(a,b){return map[b].length-map[a].length}).forEach(function(nm){ul.appendChild(node(nm,col,map[nm].length,{els:map[nm]},false))})}\nfunction node(label,col,n,data,expandable){var li=document.createElement('li');li.setAttribute('role','treeitem');li._d=data;var line=document.createElement('div');line.className='smv__line';\nvar tw=document.createElement('button');tw.type='button';tw.className='smv__tw';tw.innerHTML=CHEV;tw.setAttribute('aria-expanded','false');tw.setAttribute('aria-label',label);if(!expandable)tw.hidden=true;\nvar row=document.createElement('button');row.type='button';row.className='smv__row';row.style.setProperty('--c',col);row.innerHTML='<i><\/i><b><\/b><span><\/span>';row.querySelector('b').textContent=label;row.querySelector('span').textContent=n;row.title=label;\nvar eye=document.createElement('button');eye.type='button';eye.className='smv__eye';eye.innerHTML=EYE;eye.setAttribute('aria-label',T.hide+': '+label);\nline.appendChild(tw);line.appendChild(row);line.appendChild(eye);li.appendChild(line);\ntw.addEventListener('click',function(){var ul=li.querySelector(':scope>ul');if(!ul)return;var o=ul.hidden;ul.hidden=!o;tw.setAttribute('aria-expanded',String(o))});\nrow.addEventListener('click',function(e){select(elsOf(data),e.shiftKey||e.ctrlKey||e.metaKey);fitSel()});\neye.addEventListener('click',function(){var els=elsOf(data);var off=isOff(data,els);if(data.layers){data.layers.forEach(function(l){layerOff[l]=!off});if(off)els.forEach(function(x){hidden[x]=0})}else els.forEach(function(x){hidden[x]=off?0:1});if(!off)els.forEach(function(x){selected.delete(x)});rebuild()});\nreturn li}\nfunction elsOf(d){if(d.els)return d.els;var a=[];for(var e=0;e<nel;e++)if(d.layers.indexOf(elLayer[e])>=0)a.push(e);return a}\nfunction isOff(d,els){if(d.layers&&d.layers.every(function(l){return layerOff[l]}))return true;return els.length>0&&els.every(function(x){return hidden[x]||layerOff[elLayer[x]]})}\nfunction syncTree(){$$('[role=\"treeitem\"]',treeEl).forEach(function(li){var d=li._d,off=isOff(d,elsOf(d));var line=li.firstChild;line.classList.toggle('is-off',off);var eye=line.querySelector('.smv__eye');eye.innerHTML=off?EYEOFF:EYE;eye.setAttribute('aria-pressed',String(!off))})}\nfunction syncTreeSel(){$$('[role=\"treeitem\"]',treeEl).forEach(function(li){var d=li._d;if(!d.els)return;li.firstChild.classList.toggle('is-sel',d.els.some(function(x){return selected.has(x)}))})}\nfunction clear(){if(model){grp.remove(model);model.traverse(function(o){if(o.geometry)o.geometry.dispose();if(o.material)o.material.dispose()})}model=null;meshes=[];selected.clear();drawSel();clearMeas();layerOff={};treeEl.innerHTML='';explode=0;var ex=$('.smv__rng[data-r=\"expl\"]');if(ex)ex.value=0}\nfunction load(m){clear();loadEl.hidden=false;$('.smv__load-t').textContent=T.load;$('.smv__spin').style.display='';\nld.load(m.g,function(g){model=g.scene;grp.add(model);model.updateMatrixWorld(true);ud=null;model.traverse(function(o){if(o.userData&&o.userData.sm3d)ud=o.userData});\nvar maxE=-1;model.traverse(function(o){if(!o.isMesh)return;var lay=o.parent&&LAYERS[o.parent.name]?o.parent.name:o.name.split('_')[0];o.userData.layer=lay;o.userData.y0=o.position.y;meshes.push(o);var a=o.geometry.attributes.__eid;var src=o.geometry.index.array;var te=new Uint32Array(src.length\/3);for(var i=0,f=0;i<src.length;i+=3,f++){var e=a?Math.round(a.getX(src[i])):0;te[f]=e;if(e>maxE)maxE=e}o.userData.idx0=src.slice();o.userData.te=te;o.userData.buf=new src.constructor(src.length);o.material.side=THREE.DoubleSide});\nif(!ud)ud={names:[],types:[],el:[]};nel=Math.max(ud.el.length,maxE+1);hidden=new Uint8Array(nel);elLayer=new Array(nel);meshes.forEach(function(o){var te=o.userData.te;for(var f=0;f<te.length;f++)elLayer[te[f]]=o.userData.layer});\nbox.setFromObject(model);var s=box.getSize(new THREE.Vector3());box.getCenter(C);R=s.length()\/2;ground.scale.setScalar(R*2.4);ground.position.set(C.x,box.min.y-0.02,C.z);pc.near=R\/200;pc.far=R*40;pc.updateProjectionMatrix();oc.near=-R*20;oc.far=R*20;ctl.maxDistance=R*8;\nxray=false;$('[data-a=\"xray\"]').setAttribute('aria-pressed','false');buildTree();mats();$('.smv__rng[data-r=\"sect\"]').value=1000;setClip(1000);status();\nview('3d',0);loadEl.hidden=true;need=true},undefined,function(){$('.smv__load-t').textContent=T.err;$('.smv__spin').style.display='none'})}\nfunction setOrtho(on){var p=cam.position.clone(),t=ctl.target.clone();cam=on?oc:pc;ctl.object=cam;cam.position.copy(p);if(on){oc.userData.s=p.distanceTo(t)*Math.tan(THREE.MathUtils.degToRad(16));oc.zoom=1}size();ctl.update();need=true}\nfunction shot(){r.render(sc,cam);var a=document.createElement('a');a.href=r.domElement.toDataURL('image\/png');a.download=(MODELS[cur]&&MODELS[cur].s||'modelo')+'.png';document.body.appendChild(a);a.click();a.remove()}\nreturn {load:load,start:function(){size();if(!raf)loop()},stop:function(){cancelAnimationFrame(raf);raf=0},\nact:function(a,btn){var o;switch(a){\ncase 'm-sel':case 'm-meas':mode=a==='m-sel'?'sel':'meas';$('[data-a=\"m-sel\"]').setAttribute('aria-pressed',String(mode==='sel'));$('[data-a=\"m-meas\"]').setAttribute('aria-pressed',String(mode==='meas'));dlg.classList.toggle('m-meas',mode==='meas');hint.textContent=mode==='meas'?T.hintM:T.hint;break;\ncase 'sect':clipOn=!clipOn;btn.setAttribute('aria-pressed',String(clipOn));$('.smv__sectp').hidden=!clipOn;if(clipOn){var rg=$('.smv__rng[data-r=\"sect\"]');if(+rg.value===1000)rg.value=600;setClip(+rg.value)}mats();break;\ncase 'ax-x':case 'ax-y':case 'ax-z':axis=a.slice(3);$$('[data-a^=\"ax-\"]').forEach(function(b){if(b.dataset.a!=='ax-f')b.setAttribute('aria-pressed',String(b.dataset.a===a))});setClip(+$('.smv__rng[data-r=\"sect\"]').value);break;\ncase 'ax-f':flip=!flip;setClip(+$('.smv__rng[data-r=\"sect\"]').value);break;\ncase 'expl':o=btn.getAttribute('aria-pressed')!=='true';btn.setAttribute('aria-pressed',String(o));$('.smv__explp').hidden=!o;if(o){explode=0.5;$('.smv__rng[data-r=\"expl\"]').value=50}else{explode=0;$('.smv__rng[data-r=\"expl\"]').value=0}applyExplode();break;\ncase 'v-3d':view('3d');break;case 'v-top':view('top');break;case 'v-front':view('front');break;case 'v-side':view('side');break;\ncase 'ortho':o=btn.getAttribute('aria-pressed')!=='true';btn.setAttribute('aria-pressed',String(o));setOrtho(o);break;\ncase 'spin':spin=!spin;btn.setAttribute('aria-pressed',String(spin));break;\ncase 'fit':selected.size?fitSel():fitVisible();break;\ncase 'shot':shot();break;\ncase 'hide':hideSel();break;case 'iso':isoSel();break;case 'desel':select([]);break;case 'showall':case 'p-all':showAll();break;case 'clrm':clearMeas();break;\ncase 'p-str':hidden.fill(0);Object.keys(LAYERS).forEach(function(l){layerOff[l]=['estructura','uniones'].indexOf(l)<0});selected.clear();rebuild();break;\ncase 'xray':xray=!xray;btn.setAttribute('aria-pressed',String(xray));mats();break}},\nrange:function(k,v){if(k==='sect')setClip(+v);if(k==='expl'){explode=v\/100;applyExplode()}},\nkey:function(e){if(e.key==='Escape'&&(selected.size||mPts.length)){select([]);mPts.forEach(function(m){grp.remove(m.d)});mPts=[];need=true;return true}\nvar k=(e.key||'').toLowerCase();if(k==='h'||e.key==='Delete'){hideSel();return true}if(k==='i'){isoSel();return true}if(k==='a'&&e.shiftKey){showAll();return true}if(k==='f'){selected.size?fitSel():fitVisible();return true}return false}}}\nfunction setHash(i){var s=MODELS[i]&&MODELS[i].s;if(!s)return;try{history.replaceState(null,'','#3d-'+s)}catch(e){}}\nfunction open(i,fromHash){if(!MODELS[i])return;cur=i;var m=MODELS[i];$('.smv__t').textContent=m.t;$('.smv__m').textContent=m.m||'';$('[data-a=\"prev\"]').disabled=i<=0;$('[data-a=\"next\"]').disabled=i>=MODELS.length-1;\nif(!dlg.open){if(typeof dlg.showModal==='function')dlg.showModal();else dlg.setAttribute('open','')}\nif(window.innerWidth<900){dlg.classList.add('no-tree');$('[data-a=\"tree\"]').setAttribute('aria-pressed','false')}\nloadEl.hidden=false;$('.smv__load-t').textContent=T.load;$('.smv__spin').style.display='';\nif(!fromHash)setHash(i);\n(V?Promise.resolve(V):libs().then(function(M){V=viewer(M);return V})).then(function(v){v.start();v.load(m)}).catch(function(){$('.smv__load-t').textContent=T.err;$('.smv__spin').style.display='none'})}\ngrid.addEventListener('click',function(e){var b=e.target.closest('.sm3d__card');if(!b)return;lastBtn=b;open(+b.dataset.i)});\ndlg.addEventListener('click',function(e){if(e.target===dlg){dlg.close();return}var b=e.target.closest('[data-a]');if(!b)return;var a=b.dataset.a;\nif(a==='close'){dlg.close();return}if(a==='prev'){open(cur-1);return}if(a==='next'){open(cur+1);return}\nif(a==='tree'){var on=dlg.classList.toggle('no-tree');b.setAttribute('aria-pressed',String(!on));return}\nif(a==='full'){if(document.fullscreenElement)document.exitFullscreen();else if(dlg.requestFullscreen)dlg.requestFullscreen();return}\nif(a==='share'){setHash(cur);var t0=b.title;var done=function(){b.title=T.copied;b.setAttribute('aria-label',T.copied);setTimeout(function(){b.title=t0;b.setAttribute('aria-label',t0)},1800)};if(navigator.clipboard)navigator.clipboard.writeText(location.href).then(done,function(){});return}\nif(V)V.act(a,b)});\ndlg.addEventListener('input',function(e){var r=e.target.closest('[data-r]');if(r&&V)V.range(r.dataset.r,r.value)});\ndlg.addEventListener('keydown',function(e){if(e.target.closest('input'))return;if(V&&V.key(e))e.preventDefault()});\ndlg.addEventListener('cancel',function(e){if(document.fullscreenElement){e.preventDefault();document.exitFullscreen()}});\ndlg.addEventListener('close',function(){if(V)V.stop();if(document.fullscreenElement)document.exitFullscreen();if(\/^#3d-\/.test(location.hash)){try{history.replaceState(null,'',location.pathname+location.search)}catch(e){}}if(lastBtn)lastBtn.focus()});\nfunction fromHash(){var m=location.hash.match(\/^#3d-(.+)$\/);if(!m)return;var i=MODELS.findIndex(function(x){return x.s===decodeURIComponent(m[1])});if(i>=0){lastBtn=grid.children[i];open(i,true)}}\nwindow.addEventListener('hashchange',fromHash);fromHash();\n})();<\/script><script>(function(){var w=document.currentScript.closest(\".sm3f\");if(!w)return;var M=window.SM3D_MODELS||[];w.addEventListener(\"click\",function(e){var b=e.target.closest(\".sm3f__c\");if(!b)return;var k=b.dataset.f;var g=w.querySelector(\".sm3d__grid\");[].forEach.call(g.children,function(c,i){var m=M[i];c.hidden=!!(k!==\"all\"&&m&&m.k!==k)});[].forEach.call(w.querySelectorAll(\".sm3f__c\"),function(x){x.setAttribute(\"aria-pressed\",String(x===b))})})})();<\/script><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-c12116d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"c12116d\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-extended\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-1b4ccb7\" data-id=\"1b4ccb7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2952028 elementor-widget elementor-widget-text-editor\" data-id=\"2952028\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2 style=\"margin:0;color:#0D2148;font-size:33px;line-height:1.14;font-weight:800;\">How to use the viewer<\/h2><div style=\"height:16px\"><\/div><ol style=\"margin:0;padding-left:22px;color:#334155;font-size:16px;line-height:1.7;\"><li style=\"margin-bottom:10px;\">Click a project to open it and press <b>Full screen<\/b>.<\/li><li style=\"margin-bottom:10px;\">Under <b>Layers<\/b>, the eye next to <b>Panels and substructure<\/b> reveals the structure and the connections.<\/li><li style=\"margin-bottom:10px;\">Click a part to see what it is; use <b>Hide<\/b> or <b>Isolate<\/b> to work part by part, as in a BIM viewer.<\/li><li style=\"margin-bottom:10px;\">Use <b>Measure<\/b>, the <b>section plane<\/b> and the plan and elevation views to review the project.<\/li><\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-609e14b\" data-id=\"609e14b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b2234dd elementor-widget elementor-widget-text-editor\" data-id=\"b2234dd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2 style=\"margin:0;color:#0D2148;font-size:33px;line-height:1.14;font-weight:800;\">Frequently asked questions<\/h2><div style=\"height:16px\"><\/div><h3 style=\"margin:0;color:#0D2148;font-size:18px;line-height:1.3;font-weight:700;\">What do these models show?<\/h3><div style=\"height:6px\"><\/div><p style=\"margin:0;color:#334155;font-size:15px;line-height:1.65;\">They are real projects designed and manufactured by StarModul: the galvanised steel structure, the bolted connections and, where the project includes them, the cladding panels.<\/p><div style=\"height:18px\"><\/div><h3 style=\"margin:0;color:#0D2148;font-size:18px;line-height:1.3;font-weight:700;\">Can I see only the structure?<\/h3><div style=\"height:6px\"><\/div><p style=\"margin:0;color:#334155;font-size:15px;line-height:1.65;\">Yes. Press &#8220;Structure only&#8221; or switch off the eye next to &#8220;Panels and substructure&#8221; in the layers panel.<\/p><div style=\"height:18px\"><\/div><h3 style=\"margin:0;color:#0D2148;font-size:18px;line-height:1.3;font-weight:700;\">Do I need to install anything?<\/h3><div style=\"height:6px\"><\/div><p style=\"margin:0;color:#334155;font-size:15px;line-height:1.65;\">No. The viewer runs in the browser on a computer, tablet or phone.<\/p><div style=\"height:18px\"><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-505403d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"505403d\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-extended\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5351f3e\" data-id=\"5351f3e\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-82c1f4f elementor-widget elementor-widget-html\" data-id=\"82c1f4f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div style=\"display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:24px;\"><div style=\"max-width:640px\"><h2 style=\"margin:0;color:#fff;font-size:33px;line-height:1.14;font-weight:800;\">Have a similar project?<\/h2><div style=\"height:10px\"><\/div><p style=\"margin:0;color:#CBD5E1;font-size:17px;line-height:1.6;\">We prepare a made-to-measure structure with bolted connections and assembly drawings.<\/p><\/div><div style=\"display:flex;flex-wrap:wrap;gap:12px\"><a href=\"\/en\/3d-configurator-metal-structure\/\" style=\"display:inline-flex;align-items:center;min-height:48px;padding:12px 22px;border-radius:10px;font-weight:700;font-size:16px;text-decoration:none;background:#F39200;color:#0D2148;\">Design in the 3D configurator<\/a><a href=\"\/en\/contact\/\" style=\"display:inline-flex;align-items:center;min-height:48px;padding:12px 22px;border-radius:10px;font-weight:700;font-size:16px;text-decoration:none;background:transparent;color:#fff;box-shadow:inset 0 0 0 2px rgba(255,255,255,.6);\">Get a quote<\/a><\/div><\/div><script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"What do these models show?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"They are real projects designed and manufactured by StarModul: the galvanised steel structure, the bolted connections and, where the project includes them, the cladding panels.\"}},{\"@type\":\"Question\",\"name\":\"Can I see only the structure?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. Press \\\"Structure only\\\" or switch off the eye next to \\\"Panels and substructure\\\" in the layers panel.\"}},{\"@type\":\"Question\",\"name\":\"Do I need to install anything?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No. The viewer runs in the browser on a computer, tablet or phone.\"}}]}<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t<\/div><\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1197,"featured_media":31098,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-31097","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/starmodul.com\/en\/wp-json\/wp\/v2\/pages\/31097","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/starmodul.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/starmodul.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/starmodul.com\/en\/wp-json\/wp\/v2\/users\/1197"}],"replies":[{"embeddable":true,"href":"https:\/\/starmodul.com\/en\/wp-json\/wp\/v2\/comments?post=31097"}],"version-history":[{"count":1,"href":"https:\/\/starmodul.com\/en\/wp-json\/wp\/v2\/pages\/31097\/revisions"}],"predecessor-version":[{"id":31099,"href":"https:\/\/starmodul.com\/en\/wp-json\/wp\/v2\/pages\/31097\/revisions\/31099"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/starmodul.com\/en\/wp-json\/wp\/v2\/media\/31098"}],"wp:attachment":[{"href":"https:\/\/starmodul.com\/en\/wp-json\/wp\/v2\/media?parent=31097"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}